{"id":"f4b31ae3581c2340d0f7d54ef9c7644e","_format":"hh-sol-build-info-1","solcVersion":"0.8.14","solcLongVersion":"0.8.14+commit.80d49f37","input":{"language":"Solidity","sources":{"contracts/BNPL.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.13;\n\nimport {\n    Consideration\n} from \"./lib/Consideration.sol\";\n\ncontract BNPL is Consideration {\n\n    constructor(address conduitController, address shadowToken) Consideration(conduitController, shadowToken) {}\n\n    function _nameString() internal pure override returns (string memory) {\n        return \"BNPL\";\n    }\n}"},"contracts/lib/Consideration.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport {\n    OrderParameters,\n    OrderComponents,\n    OrderStatus,\n    Order\n} from \"./ConsiderationStructs.sol\";\n\nimport {\n    OrderFulfiller\n} from \"./OrderFulfiller.sol\";\n\ncontract Consideration is OrderFulfiller {\n\n    mapping(bytes32 => OrderStatus) private _orderStatus;\n\n    constructor(address conduitController, address shadowToken) OrderFulfiller(conduitController, shadowToken) {}\n\n    function fulfillOrder(Order calldata order, bytes32 fulfillerConduitKey)\n        external\n        payable\n        returns (bool fulfilled)\n    {\n        fulfilled = _validateAndFulfillOrder(order, fulfillerConduitKey);\n    }\n\n    function repayOrder(OrderParameters calldata parameters, bytes32 fulfillerConduitKey, uint256 payTimes)\n        external\n        payable\n        returns (bool repaid)\n    {\n        repaid = _validateAndRepayOrder(parameters, fulfillerConduitKey, payTimes);\n    }\n\n    function breakOrder(OrderParameters calldata parameters)\n        external\n        returns (bool broken)\n    {\n        broken = _validateAndBreakOrder(parameters);\n    }\n\n    function cancel(OrderComponents[] calldata orders)\n        external\n        returns (bool cancelled)\n    {\n        cancelled = _cancel(orders);\n    }\n\n    function validate(Order[] calldata orders)\n        external\n        returns (bool validated)\n    {\n        validated = _validate(orders);\n    }\n\n    function incrementCounter() external returns (uint256 newCounter) {\n        newCounter = _incrementCounter();\n    }\n\n    function getOrderHash(OrderComponents calldata order)\n        external\n        view\n        returns (bytes32 orderHash)\n    {\n        orderHash = _deriveOrderHash(\n            OrderParameters(\n                order.offerer,\n                order.token,\n                order.identifier,\n                order.currency,\n                order.artist,\n                order.platform,\n                order.startTime,\n                order.endTime,\n                order.duration,\n                order.periods,\n                order.amount,\n                order.ratio,\n                order.royalty,\n                order.fee,\n                order.withdrawFee,\n                order.salt,\n                order.conduitKey\n            ),\n            order.counter\n        );\n    }\n\n    function getOrderStatus(bytes32 orderHash)\n        external\n        view\n        returns (\n            bool isValidated,\n            bool isCancelled,\n            bool isFinalized,\n            bool isBroken,\n            address fulfiller,\n            uint256 startedAt,\n            uint256 shadowId,\n            uint256 paidTimes\n        )\n    {\n        return _getOrderStatus(orderHash);\n    }\n\n    function getCounter(address offerer)\n        external\n        view\n        returns (uint256 counter)\n    {\n        counter = _getCounter(offerer);\n    }\n\n    function information()\n        external\n        view\n        returns (\n            string memory version,\n            bytes32 domainSeparator,\n            address conduitController\n        )\n    {\n        return _information();\n    }\n}"},"contracts/lib/ConsiderationStructs.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\nstruct OrderComponents {\n    address offerer;\n    address token;\n    uint256 identifier;\n    address currency;\n    address artist;\n    address platform;\n    uint256 startTime;\n    uint256 endTime;\n    uint256 duration;\n    uint256 periods;\n    uint256 amount;\n    uint256 ratio;\n    uint256 royalty;\n    uint256 fee;\n    uint256 withdrawFee;\n    uint256 salt;\n    bytes32 conduitKey;\n    uint256 counter;\n}\n\nstruct OrderParameters {\n    address offerer;    // 0x00\n    address token;      // 0x20\n    uint256 identifier; // 0x40\n    address currency;   // 0x60\n    address artist;     // 0x80\n    address platform;   // 0xa0\n    uint256 startTime;  // 0xc0\n    uint256 endTime;    // 0xe0\n    uint256 duration;   // 0x100\n    uint256 periods;    // 0x120\n    uint256 amount;     // 0x140\n    uint256 ratio;      // 0x160\n    uint256 royalty;    // 0x180\n    uint256 fee;        // 0x1a0\n    uint256 withdrawFee;// 0x1c0\n    uint256 salt;       // 0x1e0\n    bytes32 conduitKey; // 0x200\n}\n\nstruct Order {\n    OrderParameters parameters;\n    bytes signature;\n}\n\nstruct OrderStatus {\n    bool isValidated;\n    bool isCancelled;\n    bool isFinalized;\n    bool isBroken;\n    address fulfiller;\n    uint256 startedAt;\n    uint256 shadowId;\n    uint256 paidTimes;\n}"},"contracts/lib/OrderFulfiller.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport { ConduitInterface } from \"../interfaces/ConduitInterface.sol\";\n\nimport {\n    ItemType\n} from \"./ConsiderationEnums.sol\";\n\nimport {\n    Order,\n    OrderParameters\n} from \"./ConsiderationStructs.sol\";\n\nimport { OrderValidator } from \"./OrderValidator.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\ncontract OrderFulfiller is OrderValidator {\n\n    struct Dispatch {\n        uint256 payment;\n        uint256 toOfferer;\n        uint256 toPlatform;\n        uint256 toArtist;\n    }\n\n    constructor(address conduitController, address shadowToken) OrderValidator(conduitController, shadowToken) {}\n\n    function _calculateDispatch(\n        OrderParameters calldata params,\n        uint256 payTimes,\n        bool isFirst,\n        bool isFinalize\n    )\n        internal\n        pure\n        returns (Dispatch memory ret)\n    {\n        uint256 royalty;\n        uint256 paidTimes = params.periods - payTimes;\n\n        ret.toPlatform = params.withdrawFee;\n        if (isFinalize) {\n            royalty = params.royalty - paidTimes * (params.royalty / params.periods);\n            ret.payment = params.amount - paidTimes* (params.amount / params.periods);\n            ret.toOfferer = params.amount - (params.amount / params.periods) * params.ratio / 10000 * paidTimes - ret.toPlatform - royalty;\n            ret.toArtist = params.royalty;\n        } else {\n            royalty = payTimes * (params.royalty / params.periods);\n            ret.payment = payTimes * (params.amount / params.periods);            \n            ret.toOfferer = ret.payment * params.ratio / 10000 - ret.toPlatform - royalty;\n            if (isFirst) {\n                ret.payment += params.fee;\n                ret.toPlatform += params.fee;\n            }\n        }\n    }\n\n    function _validateAndFulfillOrder(Order calldata order, bytes32 fulfillerConduitKey)\n        internal\n        returns (bool)\n    {\n        (\n            bytes32 orderHash,\n            bool valid,\n            uint256 shadowId\n        ) = _validateOrderAndUpdateStatus(\n            order,\n            true\n        );\n\n        if (!valid) {\n            return false;\n        }\n\n        OrderParameters calldata orderParameters = order.parameters;\n        Dispatch memory dispatch = _calculateDispatch(orderParameters, 1, true, false);\n\n        if (orderParameters.currency == address(0)) {\n            _transferIndividual721Or1155Item(\n                ItemType.ERC721,\n                orderParameters.token,\n                orderParameters.offerer,\n                address(this),\n                orderParameters.identifier,\n                1,\n                orderParameters.conduitKey\n            );\n\n            _transferEthAndFinalize(orderParameters, dispatch);\n        } else {\n            bytes memory accumulator = new bytes(AccumulatorDisarmed);\n            _transferERC721(\n                orderParameters.token,\n                orderParameters.offerer,\n                address(this),\n                orderParameters.identifier,\n                1,\n                orderParameters.conduitKey,\n                accumulator\n            );\n\n            _transferERC20AndFinalize(\n                orderParameters,\n                dispatch,\n                fulfillerConduitKey,\n                accumulator\n            );\n        }\n\n        emit OrderFulfilled(\n            orderHash,\n            orderParameters.offerer,\n            shadowId\n        );\n\n        return true;\n    }\n\n    function _validateAndRepayOrder(OrderParameters calldata parameters, bytes32 fulfillerConduitKey, uint256 payTimes)\n        internal\n        returns (bool)\n    {\n        bytes32 orderHash;\n        address fulfiller;\n        bool isFinalized;\n        {\n            bool valid;\n            (\n                orderHash,\n                fulfiller,\n                valid,\n                isFinalized\n            ) = _validateOrderAndUpdateRepayStatus(\n                parameters,\n                payTimes,\n                true\n            );\n\n            if (!valid) {\n                return false;\n            }\n        }\n\n        Dispatch memory dispatch = _calculateDispatch(parameters, payTimes, false, isFinalized);\n\n        if (parameters.currency == address(0)) {\n            _transferEthAndFinalize(parameters, dispatch);\n        } else {\n            bytes memory accumulator = new bytes(AccumulatorDisarmed);\n            _transferERC20AndFinalize(\n                parameters,\n                dispatch,\n                fulfillerConduitKey,\n                accumulator\n            );\n        }\n\n        if (isFinalized) {\n            _transferIndividual721Or1155Item(\n                ItemType.ERC721,\n                parameters.token,\n                address(this),\n                fulfiller,\n                parameters.identifier,\n                1,\n                bytes32(0)\n            );\n        }\n\n        emit OrderRepaid(\n            orderHash,\n            payTimes,\n            isFinalized\n        );\n\n        return true;\n    }\n\n    function _validateAndBreakOrder(OrderParameters calldata parameters)\n        internal\n        returns (bool)\n    {\n        (\n            bytes32 orderHash,\n            uint256 paidTimes,\n            bool valid\n        ) = _validateOrderAndUpdateBreakStatus(\n            parameters,\n            true\n        );\n\n        if (!valid) {\n            return false;\n        }\n\n        _transferIndividual721Or1155Item(\n            ItemType.ERC721,\n            parameters.token,\n            address(this),\n            parameters.offerer,\n            parameters.identifier,\n            1,\n            bytes32(0)\n        );\n\n        if (parameters.currency == address(0)) {\n            _transferEthBroken(parameters, paidTimes);\n        } else {\n            _transferERC20Broken(\n                parameters,\n                paidTimes\n            );\n        }\n\n        emit OrderBroken(\n            orderHash,\n            parameters.offerer\n        );\n\n        return true;\n    }\n\n    function _transferEthBroken(\n        OrderParameters calldata orderParameters,\n        uint256 paidTimes\n    ) internal {\n        _transferEth(\n            payable(orderParameters.offerer),\n            orderParameters.royalty / orderParameters.periods * paidTimes\n        );\n        uint256 toPlatform = orderParameters.amount / orderParameters.periods * paidTimes;\n        toPlatform = toPlatform - toPlatform * orderParameters.ratio / 10000;\n        _transferEth(\n            payable(orderParameters.platform),\n            toPlatform\n        );\n    }\n\n    function _transferERC20Broken(\n        OrderParameters calldata parameters,\n        uint256 paidTimes\n    ) internal {\n        _performSelfERC20Transfer(parameters.currency, parameters.offerer, parameters.royalty / parameters.periods * paidTimes);\n\n        uint256 toPlatform = parameters.amount / parameters.periods * paidTimes;\n        toPlatform = toPlatform - toPlatform * parameters.ratio / 10000;\n        _performSelfERC20Transfer(parameters.currency, parameters.platform, toPlatform);\n    }\n\n    function _transferEthAndFinalize(\n        OrderParameters calldata orderParameters,\n        Dispatch memory dispatch\n    ) internal {\n        uint256 etherRemaining = msg.value;\n\n        if (dispatch.payment > etherRemaining) {\n            revert InsufficientEtherSupplied();\n        }\n\n        _transferEth(\n            payable(orderParameters.offerer),\n            dispatch.toOfferer\n        );\n\n        _transferEth(\n            payable(orderParameters.platform),\n            dispatch.toPlatform\n        );\n\n        if (dispatch.toArtist > 0) {\n            _transferEth(\n                payable(orderParameters.artist),\n                dispatch.toArtist\n            );\n        }\n\n        etherRemaining -= dispatch.payment;\n\n        if (etherRemaining > 0) {\n            unchecked {\n                _transferEth(payable(msg.sender), etherRemaining);\n            }\n        }\n    }\n\n    function _transferERC20AndFinalize(\n        OrderParameters calldata parameters,\n        Dispatch memory dispatch,\n        bytes32 conduitKey,\n        bytes memory accumulator\n    ) internal {\n        address from = msg.sender;\n        address token = parameters.currency;\n\n        _transferERC20(\n            token,\n            from,\n            parameters.platform,\n            dispatch.toPlatform,\n            conduitKey,\n            accumulator\n        );\n\n        if (dispatch.toArtist > 0) {\n            _transferERC20(\n                token,\n                from,\n                parameters.artist,\n                dispatch.toArtist,\n                conduitKey,\n                accumulator\n            );\n        }\n\n        uint256 left = dispatch.payment - dispatch.toPlatform - dispatch.toArtist;\n        if (left >= dispatch.toOfferer) {\n            _transferERC20(\n                token,\n                from,\n                parameters.offerer,\n                dispatch.toOfferer,\n                conduitKey,\n                accumulator\n            );\n            left -= dispatch.toOfferer;\n            if (left > 0) {\n                _transferERC20(\n                    token,\n                    from,\n                    address(this),\n                    left,\n                    conduitKey,\n                    accumulator\n                );\n            }\n            _triggerIfArmed(accumulator);\n        } else {\n            _transferERC20(\n                token,\n                from,\n                parameters.offerer,\n                left,\n                conduitKey,\n                accumulator\n            );\n            _triggerIfArmed(accumulator);\n\n            _performSelfERC20Transfer(token, parameters.offerer, dispatch.toOfferer - left);\n        }\n    }\n}\n"},"contracts/interfaces/ConduitInterface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\nimport {\n    ConduitTransfer,\n    ConduitBatch1155Transfer\n} from \"../conduit/lib/ConduitStructs.sol\";\n\n/**\n * @title ConduitInterface\n * @author 0age\n * @notice ConduitInterface contains all external function interfaces, events,\n *         and errors for conduit contracts.\n */\ninterface ConduitInterface {\n    /**\n     * @dev Revert with an error when attempting to execute transfers using a\n     *      caller that does not have an open channel.\n     */\n    error ChannelClosed(address channel);\n\n    /**\n     * @dev Revert with an error when attempting to update a channel to the\n     *      current status of that channel.\n     */\n    error ChannelStatusAlreadySet(address channel, bool isOpen);\n\n    /**\n     * @dev Revert with an error when attempting to execute a transfer for an\n     *      item that does not have an ERC20/721/1155 item type.\n     */\n    error InvalidItemType();\n\n    /**\n     * @dev Revert with an error when attempting to update the status of a\n     *      channel from a caller that is not the conduit controller.\n     */\n    error InvalidController();\n\n    /**\n     * @dev Emit an event whenever a channel is opened or closed.\n     *\n     * @param channel The channel that has been updated.\n     * @param open    A boolean indicating whether the conduit is open or not.\n     */\n    event ChannelUpdated(address indexed channel, bool open);\n\n    /**\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\n     *         with an open channel can call this function.\n     *\n     * @param transfers The ERC20/721/1155 transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function execute(ConduitTransfer[] calldata transfers)\n        external\n        returns (bytes4 magicValue);\n\n    /**\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\n     *         open channel can call this function.\n     *\n     * @param batch1155Transfers The 1155 batch transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function executeBatch1155(\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\n    ) external returns (bytes4 magicValue);\n\n    /**\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\n     *         a caller with an open channel can call this function.\n     *\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\n     * @param batch1155Transfers The 1155 batch transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function executeWithBatch1155(\n        ConduitTransfer[] calldata standardTransfers,\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\n    ) external returns (bytes4 magicValue);\n\n    /**\n     * @notice Open or close a given channel. Only callable by the controller.\n     *\n     * @param channel The channel to open or close.\n     * @param isOpen  The status of the channel (either open or closed).\n     */\n    function updateChannel(address channel, bool isOpen) external;\n}\n"},"contracts/lib/ConsiderationEnums.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\nenum ItemType {\n    NATIVE,\n    ERC20,\n    ERC721,\n    ERC1155\n}"},"contracts/lib/OrderValidator.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport {\n    OrderParameters,\n    Order,\n    OrderComponents,\n    OrderStatus\n} from \"./ConsiderationStructs.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\nimport { Executor } from \"./Executor.sol\";\nimport { Shadow } from \"./Shadow.sol\";\n\ncontract OrderValidator is Executor, Shadow {\n\n    mapping(bytes32 => OrderStatus) private _orderStatus;\n\n    constructor(address conduitController, address shadowToken) Executor(conduitController) Shadow(shadowToken) {}\n\n    function _validateOrderAndUpdateStatus(\n        Order calldata order,\n        bool revertOnInvalid\n    )\n        internal\n        returns (\n            bytes32 orderHash,\n            bool valid,\n            uint256 shadowId\n        )\n    {\n        OrderParameters calldata orderParameters = order.parameters;\n        if (\n            !_verifyTime(\n                orderParameters.startTime,\n                orderParameters.endTime,\n                revertOnInvalid\n            )\n        ) {\n            return (bytes32(0), false, 0);\n        }\n\n        if (orderParameters.periods < 2) {\n            if (revertOnInvalid) {\n                revert InvalidOrderParameters();\n            }\n            return (bytes32(0), false, 0);\n        }\n\n        orderHash = _deriveOrderHash(\n            orderParameters,\n            _getCounter(orderParameters.offerer)\n        );\n\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\n\n        if (\n            !_verifyOrderStatus(\n                orderHash,\n                orderStatus,\n                true,\n                revertOnInvalid\n            )\n        ) {\n            return (orderHash, false, 0);\n        }\n\n        if (!orderStatus.isValidated) {\n            _verifySignature(\n                orderParameters.offerer,\n                orderHash,\n                order.signature\n            );\n        }\n\n        shadowId = _mintToken(\n            msg.sender,\n            orderParameters.token,\n            orderParameters.identifier,\n            orderParameters.duration\n        );\n\n        orderStatus.isValidated = true;\n        orderStatus.isCancelled = false;\n        orderStatus.isBroken = false;\n        orderStatus.fulfiller = msg.sender;\n        orderStatus.startedAt = block.timestamp;\n        orderStatus.shadowId = shadowId;\n        orderStatus.paidTimes = 1;\n\n        valid = true;\n    }\n\n    function _validateOrderAndUpdateRepayStatus(\n        OrderParameters calldata parameters,\n        uint256 payTimes,\n        bool revertOnInvalid\n    )\n        internal\n        returns (\n            bytes32 orderHash,\n            address fulfiller,\n            bool valid,\n            bool isFinalized\n        )\n    {\n        orderHash = _deriveOrderHash(\n            parameters,\n            _getCounter(parameters.offerer)\n        );\n\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\n        if (!orderStatus.isValidated) {\n            if (revertOnInvalid) {\n                revert OrderNotValidated(orderHash);\n            }\n            return (orderHash, address(0), false, false);\n        }\n\n        if (\n            !_verifyOrderStatus(\n                orderHash,\n                orderStatus,\n                false,\n                revertOnInvalid\n            )\n        ) {\n            return (orderHash, address(0), false, false);\n        }\n\n        if (orderStatus.paidTimes + payTimes > parameters.periods || payTimes < 1) {\n            if (revertOnInvalid) {\n                revert OrderInvalidRepayParameters(orderHash);\n            }\n            return (orderHash, address(0), false, false);\n        }\n\n        if (orderStatus.startedAt + orderStatus.paidTimes * parameters.duration < block.timestamp) {\n            if (revertOnInvalid) {\n                revert OrderExpired(orderHash);\n            }\n            return (orderHash, address(0), false, false);\n        }\n\n        orderStatus.paidTimes += payTimes;\n        if (orderStatus.paidTimes == parameters.periods) {\n            orderStatus.isFinalized = true;\n            isFinalized = true;\n            _burnToken(orderStatus.shadowId);\n        } else {\n            _extendToken(\n                orderStatus.fulfiller,\n                orderStatus.shadowId,\n                orderStatus.startedAt + orderStatus.paidTimes * parameters.duration\n            );\n        }\n\n        valid = true;\n        fulfiller = orderStatus.fulfiller;\n    }\n\n    function _validateOrderAndUpdateBreakStatus(\n        OrderParameters calldata parameters,\n        bool revertOnInvalid\n    )\n        internal\n        returns (\n            bytes32 orderHash,\n            uint256 paidTimes,\n            bool valid\n        )\n    {\n        orderHash = _deriveOrderHash(\n            parameters,\n            _getCounter(parameters.offerer)\n        );\n\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\n        if (!orderStatus.isValidated) {\n            if (revertOnInvalid) {\n                revert OrderNotValidated(orderHash);\n            }\n            return (orderHash, paidTimes, false);\n        }\n\n        paidTimes = orderStatus.paidTimes;\n\n        if (\n            !_verifyOrderStatus(\n                orderHash,\n                orderStatus,\n                false,\n                revertOnInvalid\n            )\n        ) {\n            return (orderHash, paidTimes, false);\n        }\n\n        if (orderStatus.startedAt + paidTimes * parameters.duration > block.timestamp) {\n            if (revertOnInvalid) {\n                revert OrderNotExpired(orderHash);\n            }\n            return (orderHash, paidTimes, false);\n        }\n\n        _burnToken(orderStatus.shadowId);\n\n        orderStatus.isFinalized = true;\n        orderStatus.isBroken = true;\n        valid = true;\n    }\n\n    function _cancel(OrderComponents[] calldata orders)\n        internal\n        returns (bool cancelled)\n    {\n        // Ensure that the reentrancy guard is not currently set.\n        _assertNonReentrant();\n\n        // Declare variables outside of the loop.\n        OrderStatus storage orderStatus;\n        address offerer;\n\n        // Skip overflow check as for loop is indexed starting at zero.\n        unchecked {\n            // Read length of the orders array from memory and place on stack.\n            uint256 totalOrders = orders.length;\n\n            // Iterate over each order.\n            for (uint256 i = 0; i < totalOrders; ) {\n                // Retrieve the order.\n                OrderComponents calldata order = orders[i];\n\n                offerer = order.offerer;\n\n                if (msg.sender != offerer) {\n                    revert InvalidCanceller();\n                }\n\n                // Derive order hash using the order parameters and the counter.\n                bytes32 orderHash = _deriveOrderHash(\n                    OrderParameters(\n                        offerer,\n                        order.token,\n                        order.identifier,\n                        order.currency,\n                        order.artist,\n                        order.platform,\n                        order.startTime,\n                        order.endTime,\n                        order.duration,\n                        order.periods,\n                        order.amount,\n                        order.ratio,\n                        order.royalty,\n                        order.fee,\n                        order.withdrawFee,\n                        order.salt,\n                        order.conduitKey\n                    ),\n                    order.counter\n                );\n\n                // Retrieve the order status using the derived order hash.\n                orderStatus = _orderStatus[orderHash];\n\n                if (orderStatus.startedAt > 0) {\n                    revert OrderAlreadyStarted(orderHash);\n                }\n\n                // Update the order status as not valid and cancelled.\n                orderStatus.isValidated = false;\n                orderStatus.isCancelled = true;\n\n                // Emit an event signifying that the order has been cancelled.\n                emit OrderCancelled(orderHash, offerer);\n\n                // Increment counter inside body of loop for gas efficiency.\n                ++i;\n            }\n        }\n\n        // Return a boolean indicating that orders were successfully cancelled.\n        cancelled = true;\n    }\n\n    function _validate(Order[] calldata orders)\n        internal\n        returns (bool validated)\n    {\n        // Ensure that the reentrancy guard is not currently set.\n        _assertNonReentrant();\n\n        // Declare variables outside of the loop.\n        OrderStatus storage orderStatus;\n        bytes32 orderHash;\n        address offerer;\n\n        // Skip overflow check as for loop is indexed starting at zero.\n        unchecked {\n            // Read length of the orders array from memory and place on stack.\n            uint256 totalOrders = orders.length;\n\n            // Iterate over each order.\n            for (uint256 i = 0; i < totalOrders; ) {\n                // Retrieve the order.\n                Order calldata order = orders[i];\n\n                // Retrieve the order parameters.\n                OrderParameters calldata orderParameters = order.parameters;\n\n                // Move offerer from memory to the stack.\n                offerer = orderParameters.offerer;\n\n                // Get current counter & use it w/ params to derive order hash.\n                orderHash = _deriveOrderHash(\n                    OrderParameters(\n                        offerer,\n                        orderParameters.token,\n                        orderParameters.identifier,\n                        orderParameters.currency,\n                        orderParameters.artist,\n                        orderParameters.platform,\n                        orderParameters.startTime,\n                        orderParameters.endTime,\n                        orderParameters.duration,\n                        orderParameters.periods,\n                        orderParameters.amount,\n                        orderParameters.ratio,\n                        orderParameters.royalty,\n                        orderParameters.fee,\n                        orderParameters.withdrawFee,\n                        orderParameters.salt,\n                        orderParameters.conduitKey\n                    ),\n                    _getCounter(orderParameters.offerer)\n                );\n\n                // Retrieve the order status using the derived order hash.\n                orderStatus = _orderStatus[orderHash];\n\n                // Ensure order is fillable and retrieve the filled amount.\n                _verifyOrderStatus(\n                    orderHash,\n                    orderStatus,\n                    true, // Signifies that partially filled orders are valid.\n                    true // Signifies to revert if the order is invalid.\n                );\n\n                // If the order has not already been validated...\n                if (!orderStatus.isValidated) {\n                    // Verify the supplied signature.\n                    _verifySignature(offerer, orderHash, order.signature);\n\n                    // Update order status to mark the order as valid.\n                    orderStatus.isValidated = true;\n\n                    // Emit an event signifying the order has been validated.\n                    emit OrderValidated(\n                        orderHash,\n                        offerer\n                    );\n                }\n\n                // Increment counter inside body of the loop for gas efficiency.\n                ++i;\n            }\n        }\n\n        // Return a boolean indicating that orders were successfully validated.\n        validated = true;\n    }\n\n    function _getOrderStatus(bytes32 orderHash)\n        internal\n        view\n        returns (\n            bool isValidated,\n            bool isCancelled,\n            bool isFinalized,\n            bool isBroken,\n            address fulfiller,\n            uint256 startedAt,\n            uint256 shadowId,\n            uint256 paidTimes\n        )\n    {\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\n        return (\n            orderStatus.isValidated,\n            orderStatus.isCancelled,\n            orderStatus.isFinalized,\n            orderStatus.isBroken,\n            orderStatus.fulfiller,\n            orderStatus.startedAt,\n            orderStatus.shadowId,\n            orderStatus.paidTimes\n        );\n    }\n}\n"},"contracts/lib/ConsiderationConstants.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\n/*\n * -------------------------- Disambiguation & Other Notes ---------------------\n *    - The term \"head\" is used as it is in the documentation for ABI encoding,\n *      but only in reference to dynamic types, i.e. it always refers to the\n *      offset or pointer to the body of a dynamic type. In calldata, the head\n *      is always an offset (relative to the parent object), while in memory,\n *      the head is always the pointer to the body. More information found here:\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\n *        - Note that the length of an array is separate from and precedes the\n *          head of the array.\n *\n *    - The term \"body\" is used in place of the term \"head\" used in the ABI\n *      documentation. It refers to the start of the data for a dynamic type,\n *      e.g. the first word of a struct or the first word of the first element\n *      in an array.\n *\n *    - The term \"pointer\" is used to describe the absolute position of a value\n *      and never an offset relative to another value.\n *        - The suffix \"_ptr\" refers to a memory pointer.\n *        - The suffix \"_cdPtr\" refers to a calldata pointer.\n *\n *    - The term \"offset\" is used to describe the position of a value relative\n *      to some parent value. For example, OrderParameters_conduit_offset is the\n *      offset to the \"conduit\" value in the OrderParameters struct relative to\n *      the start of the body.\n *        - Note: Offsets are used to derive pointers.\n *\n *    - Some structs have pointers defined for all of their fields in this file.\n *      Lines which are commented out are fields that are not used in the\n *      codebase but have been left in for readability.\n */\n\n// Declare constants for name, version, and reentrancy sentinel values.\n\n// Name is right padded, so it touches the length which is left padded. This\n// enables writing both values at once. Length goes at byte 95 in memory, and\n// name fills bytes 96-109, so both values can be written left-padded to 77.\nuint256 constant NameLengthPtr = 77;\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\n\nuint256 constant Version = 0x312e31;\nuint256 constant Version_length = 3;\nuint256 constant Version_shift = 0xe8;\n\nuint256 constant _NOT_ENTERED = 1;\nuint256 constant _ENTERED = 2;\n\n// Common Offsets\n// Offsets for identically positioned fields shared by:\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\n\nuint256 constant Common_token_offset = 0x20;\nuint256 constant Common_identifier_offset = 0x40;\nuint256 constant Common_amount_offset = 0x60;\n\nuint256 constant ReceivedItem_size = 0xa0;\nuint256 constant ReceivedItem_amount_offset = 0x60;\nuint256 constant ReceivedItem_recipient_offset = 0x80;\n\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\n\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\n// Store the same constant in an abbreviated format for a line length fix.\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\n\nuint256 constant Execution_offerer_offset = 0x20;\nuint256 constant Execution_conduit_offset = 0x40;\n\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\n    0x7fda727900000000000000000000000000000000000000000000000000000000\n);\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\n\nuint256 constant Panic_error_signature = (\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\n);\nuint256 constant Panic_error_offset = 0x04;\nuint256 constant Panic_error_length = 0x24;\nuint256 constant Panic_arithmetic = 0x11;\n\nuint256 constant MissingItemAmount_error_signature = (\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\n);\nuint256 constant MissingItemAmount_error_len = 0x04;\n\nuint256 constant OrderParameters_offer_head_offset = 0x20;\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\nuint256 constant OrderParameters_conduit_offset = 0x200;\nuint256 constant OrderParameters_counter_offset = 0x220;\n\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\n\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\n\nuint256 constant AlmostOneWord = 0x1f;\nuint256 constant OneWord = 0x20;\nuint256 constant TwoWords = 0x40;\nuint256 constant ThreeWords = 0x60;\nuint256 constant FourWords = 0x80;\nuint256 constant FiveWords = 0xa0;\n\nuint256 constant FreeMemoryPointerSlot = 0x40;\nuint256 constant ZeroSlot = 0x60;\nuint256 constant DefaultFreeMemoryPointer = 0x80;\n\nuint256 constant Slot0x80 = 0x80;\nuint256 constant Slot0xA0 = 0xa0;\n\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\nuint256 constant BasicOrder_common_params_size = 0xa0;\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\n\nuint256 constant EIP712_Order_size = 0x260;\nuint256 constant AdditionalRecipients_size = 0x40;\n\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\nuint256 constant EIP712_OrderHash_offset = 0x22;\nuint256 constant EIP712_DigestPayload_size = 0x42;\n\nuint256 constant receivedItemsHash_ptr = 0x60;\n\n/*\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\n *  data for OrderFulfilled\n *\n *   event OrderFulfilled(\n *     bytes32 orderHash,\n *     address indexed offerer,\n *     address indexed zone,\n *     address fulfiller,\n *     SpentItem[] offer,\n *       > (itemType, token, id, amount)\n *     ReceivedItem[] consideration\n *       > (itemType, token, id, amount, recipient)\n *   )\n *\n *  - 0x00: orderHash\n *  - 0x20: fulfiller\n *  - 0x40: offer offset (0x80)\n *  - 0x60: consideration offset (0x120)\n *  - 0x80: offer.length (1)\n *  - 0xa0: offerItemType\n *  - 0xc0: offerToken\n *  - 0xe0: offerIdentifier\n *  - 0x100: offerAmount\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\n *  - 0x140: considerationItemType\n *  - 0x160: considerationToken\n *  - 0x180: considerationIdentifier\n *  - 0x1a0: considerationAmount\n *  - 0x1c0: considerationRecipient\n *  - ...\n */\n\n// Minimum length of the OrderFulfilled event data.\n// Must be added to the size of the ReceivedItem array for additionalRecipients\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\nuint256 constant OrderFulfilled_selector = (\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\n);\n\n// Minimum offset in memory to OrderFulfilled event data.\n// Must be added to the size of the EIP712 hash array for additionalRecipients\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\nuint256 constant OrderFulfilled_baseOffset = 0x180;\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\n\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\n\n// BasicOrderParameters\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\n\nuint256 constant BasicOrder_parameters_ptr = 0x20;\n\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\n\n/*\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\n *  EIP712 data for ConsiderationItem\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\n *   - 0xa0: itemType\n *   - 0xc0: token\n *   - 0xe0: identifier\n *   - 0x100: startAmount\n *   - 0x120: endAmount\n *   - 0x140: recipient\n */\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\n\n/*\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\n *  EIP712 data for OfferItem\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\n *   - 0xa0:  itemType\n *   - 0xc0:  token\n *   - 0xe0:  identifier (reused for offeredItemsHash)\n *   - 0x100: startAmount\n *   - 0x120: endAmount\n */\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\n\n/*\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\n *  EIP712 data for Order\n *   - 0x80:   Order EIP-712 typehash (constant)\n *   - 0xa0:   orderParameters.offerer\n *   - 0xc0:   orderParameters.zone\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\n *   - 0x120:  orderType\n *   - 0x140:  startTime\n *   - 0x160:  endTime\n *   - 0x180:  zoneHash\n *   - 0x1a0:  salt\n *   - 0x1c0:  conduit\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\n */\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\nuint256 constant BasicOrder_signature_ptr = 0x260;\n\n// Signature-related\nbytes32 constant EIP2098_allButHighestBitMask = (\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n);\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\n    0x0000000000000000000000000000000000000000000000000000000101000000\n);\nuint256 constant ECDSA_MaxLength = 65;\nuint256 constant ECDSA_signature_s_offset = 0x40;\nuint256 constant ECDSA_signature_v_offset = 0x60;\n\nbytes32 constant EIP1271_isValidSignature_selector = (\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\n);\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\n\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\n\n// abi.encodeWithSignature(\"NoContract(address)\")\nuint256 constant NoContract_error_signature = (\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\n);\nuint256 constant NoContract_error_sig_ptr = 0x0;\nuint256 constant NoContract_error_token_ptr = 0x4;\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\n\nuint256 constant EIP_712_PREFIX = (\n    0x1901000000000000000000000000000000000000000000000000000000000000\n);\n\nuint256 constant ExtraGasBuffer = 0x20;\nuint256 constant CostPerWord = 3;\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\n\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\nuint256 constant Create2AddressDerivation_length = 0x55;\n\nuint256 constant MaskOverByteTwelve = (\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\n);\n\nuint256 constant MaskOverLastTwentyBytes = (\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\n);\n\nuint256 constant MaskOverFirstFourBytes = (\n    0xffffffff00000000000000000000000000000000000000000000000000000000\n);\n\nuint256 constant Conduit_execute_signature = (\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\n);\n\nuint256 constant MaxUint8 = 0xff;\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\n\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\n\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\n\nuint256 constant OneConduitExecute_size = 0x104;\n\n// Sentinel value to indicate that the conduit accumulator is not armed.\nuint256 constant AccumulatorDisarmed = 0x20;\nuint256 constant AccumulatorArmed = 0x40;\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\nuint256 constant Accumulator_selector_ptr = 0x40;\nuint256 constant Accumulator_array_offset_ptr = 0x44;\nuint256 constant Accumulator_array_length_ptr = 0x64;\n\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\n\nuint256 constant Accumulator_array_offset = 0x20;\nuint256 constant Conduit_transferItem_size = 0xc0;\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\n\n// Declare constant for errors related to amount derivation.\n// error InexactFraction() @ AmountDerivationErrors.sol\nuint256 constant InexactFraction_error_signature = (\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\n);\nuint256 constant InexactFraction_error_len = 0x04;\n\n// Declare constant for errors related to signature verification.\nuint256 constant Ecrecover_precompile = 1;\nuint256 constant Ecrecover_args_size = 0x80;\nuint256 constant Signature_lower_v = 27;\n\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\nuint256 constant BadSignatureV_error_signature = (\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\n);\nuint256 constant BadSignatureV_error_offset = 0x04;\nuint256 constant BadSignatureV_error_length = 0x24;\n\n// error InvalidSigner() @ SignatureVerificationErrors.sol\nuint256 constant InvalidSigner_error_signature = (\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\n);\nuint256 constant InvalidSigner_error_length = 0x04;\n\n// error InvalidSignature() @ SignatureVerificationErrors.sol\nuint256 constant InvalidSignature_error_signature = (\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\n);\nuint256 constant InvalidSignature_error_length = 0x04;\n\n// error BadContractSignature() @ SignatureVerificationErrors.sol\nuint256 constant BadContractSignature_error_signature = (\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\n);\nuint256 constant BadContractSignature_error_length = 0x04;\n\nuint256 constant NumBitsAfterSelector = 0xe0;\n\n// 69 is the lowest modulus for which the remainder\n// of every selector other than the two match functions\n// is greater than those of the match functions.\nuint256 constant NonMatchSelector_MagicModulus = 69;\n// Of the two match function selectors, the highest\n// remainder modulo 69 is 29.\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\n"},"contracts/conduit/lib/ConduitStructs.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\nimport { ConduitItemType } from \"./ConduitEnums.sol\";\n\nstruct ConduitTransfer {\n    ConduitItemType itemType;\n    address token;\n    address from;\n    address to;\n    uint256 identifier;\n    uint256 amount;\n}\n\nstruct ConduitBatch1155Transfer {\n    address token;\n    address from;\n    address to;\n    uint256[] ids;\n    uint256[] amounts;\n}\n"},"contracts/conduit/lib/ConduitEnums.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\nenum ConduitItemType {\n    NATIVE, // unused\n    ERC20,\n    ERC721,\n    ERC1155\n}\n"},"contracts/lib/Executor.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport { ConduitInterface } from \"../interfaces/ConduitInterface.sol\";\n\nimport { ConduitItemType } from \"../conduit/lib/ConduitEnums.sol\";\n\nimport { ItemType } from \"./ConsiderationEnums.sol\";\n\nimport { Verifiers } from \"./Verifiers.sol\";\n\nimport { TokenTransferrer } from \"./TokenTransferrer.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title Executor\n * @author 0age\n * @notice Executor contains functions related to processing executions (i.e.\n *         transferring items, either directly or via conduits).\n */\ncontract Executor is Verifiers, TokenTransferrer {\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) Verifiers(conduitController) {}\n\n    /**\n     * @dev Internal function to transfer an individual ERC721 or ERC1155 item\n     *      from a given originator to a given recipient. The accumulator will\n     *      be bypassed, meaning that this function should be utilized in cases\n     *      where multiple item transfers can be accumulated into a single\n     *      conduit call. Sufficient approvals must be set, either on the\n     *      respective conduit or on this contract itself.\n     *\n     * @param itemType   The type of item to transfer, either ERC721 or ERC1155.\n     * @param token      The token to transfer.\n     * @param from       The originator of the transfer.\n     * @param to         The recipient of the transfer.\n     * @param identifier The tokenId to transfer.\n     * @param amount     The amount to transfer.\n     * @param conduitKey A bytes32 value indicating what corresponding conduit,\n     *                   if any, to source token approvals from. The zero hash\n     *                   signifies that no conduit should be used, with direct\n     *                   approvals set on this contract.\n     */\n    function _transferIndividual721Or1155Item(\n        ItemType itemType,\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount,\n        bytes32 conduitKey\n    ) internal {\n        // Determine if the transfer is to be performed via a conduit.\n        if (conduitKey != bytes32(0)) {\n            // Use free memory pointer as calldata offset for the conduit call.\n            uint256 callDataOffset;\n\n            // Utilize assembly to place each argument in free memory.\n            assembly {\n                // Retrieve the free memory pointer and use it as the offset.\n                callDataOffset := mload(FreeMemoryPointerSlot)\n\n                // Write ConduitInterface.execute.selector to memory.\n                mstore(callDataOffset, Conduit_execute_signature)\n\n                // Write the offset to the ConduitTransfer array in memory.\n                mstore(\n                    add(\n                        callDataOffset,\n                        Conduit_execute_ConduitTransfer_offset_ptr\n                    ),\n                    Conduit_execute_ConduitTransfer_ptr\n                )\n\n                // Write the length of the ConduitTransfer array to memory.\n                mstore(\n                    add(\n                        callDataOffset,\n                        Conduit_execute_ConduitTransfer_length_ptr\n                    ),\n                    Conduit_execute_ConduitTransfer_length\n                )\n\n                // Write the item type to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferItemType_ptr),\n                    itemType\n                )\n\n                // Write the token to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferToken_ptr),\n                    token\n                )\n\n                // Write the transfer source to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferFrom_ptr),\n                    from\n                )\n\n                // Write the transfer recipient to memory.\n                mstore(add(callDataOffset, Conduit_execute_transferTo_ptr), to)\n\n                // Write the token identifier to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferIdentifier_ptr),\n                    identifier\n                )\n\n                // Write the transfer amount to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferAmount_ptr),\n                    amount\n                )\n            }\n\n            // Perform the call to the conduit.\n            _callConduitUsingOffsets(\n                conduitKey,\n                callDataOffset,\n                OneConduitExecute_size\n            );\n        } else {\n            // Otherwise, determine whether it is an ERC721 or ERC1155 item.\n            if (itemType == ItemType.ERC721) {\n                // Ensure that exactly one 721 item is being transferred.\n                if (amount != 1) {\n                    revert InvalidERC721TransferAmount();\n                }\n\n                // Perform transfer via the token contract directly.\n                _performERC721Transfer(token, from, to, identifier);\n            } else {\n                // Perform transfer via the token contract directly.\n                _performERC1155Transfer(token, from, to, identifier, amount);\n            }\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer Ether or other native tokens to a\n     *      given recipient.\n     *\n     * @param to     The recipient of the transfer.\n     * @param amount The amount to transfer.\n     */\n    function _transferEth(address payable to, uint256 amount) internal {\n        // Ensure that the supplied amount is non-zero.\n        _assertNonZeroAmount(amount);\n\n        // Declare a variable indicating whether the call was successful or not.\n        bool success;\n\n        assembly {\n            // Transfer the ETH and store if it succeeded or not.\n            success := call(gas(), to, amount, 0, 0, 0, 0)\n        }\n\n        // If the call fails...\n        if (!success) {\n            // Revert and pass the revert reason along if one was returned.\n            _revertWithReasonIfOneIsReturned();\n\n            // Otherwise, revert with a generic error message.\n            revert EtherTransferGenericFailure(to, amount);\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer ERC20 tokens from a given originator\n     *      to a given recipient using a given conduit if applicable. Sufficient\n     *      approvals must be set on this contract or on a respective conduit.\n     *\n     * @param token       The ERC20 token to transfer.\n     * @param from        The originator of the transfer.\n     * @param to          The recipient of the transfer.\n     * @param amount      The amount to transfer.\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _transferERC20(\n        address token,\n        address from,\n        address to,\n        uint256 amount,\n        bytes32 conduitKey,\n        bytes memory accumulator\n    ) internal {\n        // Ensure that the supplied amount is non-zero.\n        _assertNonZeroAmount(amount);\n\n        // Trigger accumulated transfers if the conduits differ.\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\n\n        // If no conduit has been specified...\n        if (conduitKey == bytes32(0)) {\n            // Perform the token transfer directly.\n            _performERC20Transfer(token, from, to, amount);\n        } else {\n            // Insert the call to the conduit into the accumulator.\n            _insert(\n                conduitKey,\n                accumulator,\n                ConduitItemType.ERC20,\n                token,\n                from,\n                to,\n                uint256(0),\n                amount\n            );\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer a single ERC721 token from a given\n     *      originator to a given recipient. Sufficient approvals must be set,\n     *      either on the respective conduit or on this contract itself.\n     *\n     * @param token       The ERC721 token to transfer.\n     * @param from        The originator of the transfer.\n     * @param to          The recipient of the transfer.\n     * @param identifier  The tokenId to transfer (must be 1 for ERC721).\n     * @param amount      The amount to transfer.\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _transferERC721(\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount,\n        bytes32 conduitKey,\n        bytes memory accumulator\n    ) internal {\n        // Trigger accumulated transfers if the conduits differ.\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\n\n        // If no conduit has been specified...\n        if (conduitKey == bytes32(0)) {\n            // Ensure that exactly one 721 item is being transferred.\n            if (amount != 1) {\n                revert InvalidERC721TransferAmount();\n            }\n\n            // Perform transfer via the token contract directly.\n            _performERC721Transfer(token, from, to, identifier);\n        } else {\n            // Insert the call to the conduit into the accumulator.\n            _insert(\n                conduitKey,\n                accumulator,\n                ConduitItemType.ERC721,\n                token,\n                from,\n                to,\n                identifier,\n                amount\n            );\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer ERC1155 tokens from a given originator\n     *      to a given recipient. Sufficient approvals must be set, either on\n     *      the respective conduit or on this contract itself.\n     *\n     * @param token       The ERC1155 token to transfer.\n     * @param from        The originator of the transfer.\n     * @param to          The recipient of the transfer.\n     * @param identifier  The id to transfer.\n     * @param amount      The amount to transfer.\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _transferERC1155(\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount,\n        bytes32 conduitKey,\n        bytes memory accumulator\n    ) internal {\n        // Ensure that the supplied amount is non-zero.\n        _assertNonZeroAmount(amount);\n\n        // Trigger accumulated transfers if the conduits differ.\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\n\n        // If no conduit has been specified...\n        if (conduitKey == bytes32(0)) {\n            // Perform transfer via the token contract directly.\n            _performERC1155Transfer(token, from, to, identifier, amount);\n        } else {\n            // Insert the call to the conduit into the accumulator.\n            _insert(\n                conduitKey,\n                accumulator,\n                ConduitItemType.ERC1155,\n                token,\n                from,\n                to,\n                identifier,\n                amount\n            );\n        }\n    }\n\n    /**\n     * @dev Internal function to trigger a call to the conduit currently held by\n     *      the accumulator if the accumulator contains item transfers (i.e. it\n     *      is \"armed\") and the supplied conduit key does not match the key held\n     *      by the accumulator.\n     *\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     */\n    function _triggerIfArmedAndNotAccumulatable(\n        bytes memory accumulator,\n        bytes32 conduitKey\n    ) internal {\n        // Retrieve the current conduit key from the accumulator.\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\n\n        // Perform conduit call if the set key does not match the supplied key.\n        if (accumulatorConduitKey != conduitKey) {\n            _triggerIfArmed(accumulator);\n        }\n    }\n\n    /**\n     * @dev Internal function to trigger a call to the conduit currently held by\n     *      the accumulator if the accumulator contains item transfers (i.e. it\n     *      is \"armed\").\n     *\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _triggerIfArmed(bytes memory accumulator) internal {\n        // Exit if the accumulator is not \"armed\".\n        if (accumulator.length != AccumulatorArmed) {\n            return;\n        }\n\n        // Retrieve the current conduit key from the accumulator.\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\n\n        // Perform conduit call.\n        _trigger(accumulatorConduitKey, accumulator);\n    }\n\n    /**\n     * @dev Internal function to trigger a call to the conduit corresponding to\n     *      a given conduit key, supplying all accumulated item transfers. The\n     *      accumulator will be \"disarmed\" and reset in the process.\n     *\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _trigger(bytes32 conduitKey, bytes memory accumulator) internal {\n        // Declare variables for offset in memory & size of calldata to conduit.\n        uint256 callDataOffset;\n        uint256 callDataSize;\n\n        // Call the conduit with all the accumulated transfers.\n        assembly {\n            // Call begins at third word; the first is length or \"armed\" status,\n            // and the second is the current conduit key.\n            callDataOffset := add(accumulator, TwoWords)\n\n            // 68 + items * 192\n            callDataSize := add(\n                Accumulator_array_offset_ptr,\n                mul(\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\n                    Conduit_transferItem_size\n                )\n            )\n        }\n\n        // Call conduit derived from conduit key & supply accumulated transfers.\n        _callConduitUsingOffsets(conduitKey, callDataOffset, callDataSize);\n\n        // Reset accumulator length to signal that it is now \"disarmed\".\n        assembly {\n            mstore(accumulator, AccumulatorDisarmed)\n        }\n    }\n\n    /**\n     * @dev Internal function to perform a call to the conduit corresponding to\n     *      a given conduit key based on the offset and size of the calldata in\n     *      question in memory.\n     *\n     * @param conduitKey     A bytes32 value indicating what corresponding\n     *                       conduit, if any, to source token approvals from.\n     *                       The zero hash signifies that no conduit should be\n     *                       used, with direct approvals set on this contract.\n     * @param callDataOffset The memory pointer where calldata is contained.\n     * @param callDataSize   The size of calldata in memory.\n     */\n    function _callConduitUsingOffsets(\n        bytes32 conduitKey,\n        uint256 callDataOffset,\n        uint256 callDataSize\n    ) internal {\n        // Derive the address of the conduit using the conduit key.\n        address conduit = _deriveConduit(conduitKey);\n\n        bool success;\n        bytes4 result;\n\n        // call the conduit.\n        assembly {\n            // Ensure first word of scratch space is empty.\n            mstore(0, 0)\n\n            // Perform call, placing first word of return data in scratch space.\n            success := call(\n                gas(),\n                conduit,\n                0,\n                callDataOffset,\n                callDataSize,\n                0,\n                OneWord\n            )\n\n            // Take value from scratch space and place it on the stack.\n            result := mload(0)\n        }\n\n        // If the call failed...\n        if (!success) {\n            // Pass along whatever revert reason was given by the conduit.\n            _revertWithReasonIfOneIsReturned();\n\n            // Otherwise, revert with a generic error.\n            revert InvalidCallToConduit(conduit);\n        }\n\n        // Ensure result was extracted and matches EIP-1271 magic value.\n        if (result != ConduitInterface.execute.selector) {\n            revert InvalidConduit(conduitKey, conduit);\n        }\n    }\n\n    /**\n     * @dev Internal pure function to retrieve the current conduit key set for\n     *      the accumulator.\n     *\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     *\n     * @return accumulatorConduitKey The conduit key currently set for the\n     *                               accumulator.\n     */\n    function _getAccumulatorConduitKey(bytes memory accumulator)\n        internal\n        pure\n        returns (bytes32 accumulatorConduitKey)\n    {\n        // Retrieve the current conduit key from the accumulator.\n        assembly {\n            accumulatorConduitKey := mload(\n                add(accumulator, Accumulator_conduitKey_ptr)\n            )\n        }\n    }\n\n    /**\n     * @dev Internal pure function to place an item transfer into an accumulator\n     *      that collects a series of transfers to execute against a given\n     *      conduit in a single call.\n     *\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     * @param itemType    The type of the item to transfer.\n     * @param token       The token to transfer.\n     * @param from        The originator of the transfer.\n     * @param to          The recipient of the transfer.\n     * @param identifier  The tokenId to transfer.\n     * @param amount      The amount to transfer.\n     */\n    function _insert(\n        bytes32 conduitKey,\n        bytes memory accumulator,\n        ConduitItemType itemType,\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount\n    ) internal pure {\n        uint256 elements;\n        // \"Arm\" and prime accumulator if it's not already armed. The sentinel\n        // value is held in the length of the accumulator array.\n        if (accumulator.length == AccumulatorDisarmed) {\n            elements = 1;\n            bytes4 selector = ConduitInterface.execute.selector;\n            assembly {\n                mstore(accumulator, AccumulatorArmed) // \"arm\" the accumulator.\n                mstore(add(accumulator, Accumulator_conduitKey_ptr), conduitKey)\n                mstore(add(accumulator, Accumulator_selector_ptr), selector)\n                mstore(\n                    add(accumulator, Accumulator_array_offset_ptr),\n                    Accumulator_array_offset\n                )\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\n            }\n        } else {\n            // Otherwise, increase the number of elements by one.\n            assembly {\n                elements := add(\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\n                    1\n                )\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\n            }\n        }\n\n        // Insert the item.\n        assembly {\n            let itemPointer := sub(\n                add(accumulator, mul(elements, Conduit_transferItem_size)),\n                Accumulator_itemSizeOffsetDifference\n            )\n            mstore(itemPointer, itemType)\n            mstore(add(itemPointer, Conduit_transferItem_token_ptr), token)\n            mstore(add(itemPointer, Conduit_transferItem_from_ptr), from)\n            mstore(add(itemPointer, Conduit_transferItem_to_ptr), to)\n            mstore(\n                add(itemPointer, Conduit_transferItem_identifier_ptr),\n                identifier\n            )\n            mstore(add(itemPointer, Conduit_transferItem_amount_ptr), amount)\n        }\n    }\n}\n"},"contracts/lib/Shadow.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport { IERC4907A } from \"erc721a/contracts/extensions/IERC4907A.sol\";\n\ninterface IMintBurnableERC4907 {\n    function mint(address to, address tokenAddress, uint256 tokenId) external returns (uint256);\n    function burn(uint256 tokenId) external;\n}\n\ncontract Shadow {\n    \n    address public immutable shadowToken;\n\n    constructor(address _token) {\n        shadowToken = _token;\n    }\n\n    function _mintToken(\n        address to,\n        address token,\n        uint256 identifier,\n        uint256 duration\n    ) internal returns (uint256) {\n        uint256 tid = IMintBurnableERC4907(shadowToken).mint(address(this), token, identifier);\n        IERC4907A(shadowToken).setUser(tid, to, uint64(duration + block.timestamp));\n        return tid;\n    }\n\n    function _extendToken(address to, uint256 tokenId, uint256 expires) internal {\n        IERC4907A(shadowToken).setUser(tokenId, to, uint64(expires));\n    }\n\n    function _burnToken(uint256 tokenId) internal {\n        IMintBurnableERC4907(shadowToken).burn(tokenId);\n    }\n}"},"contracts/lib/Verifiers.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport { OrderStatus } from \"./ConsiderationStructs.sol\";\n\nimport { Assertions } from \"./Assertions.sol\";\n\nimport { SignatureVerification } from \"./SignatureVerification.sol\";\n\n/**\n * @title Verifiers\n * @author 0age\n * @notice Verifiers contains functions for performing verifications.\n */\ncontract Verifiers is Assertions, SignatureVerification {\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) Assertions(conduitController) {}\n\n    /**\n     * @dev Internal view function to ensure that the current time falls within\n     *      an order's valid timespan.\n     *\n     * @param startTime       The time at which the order becomes active.\n     * @param endTime         The time at which the order becomes inactive.\n     * @param revertOnInvalid A boolean indicating whether to revert if the\n     *                        order is not active.\n     *\n     * @return valid A boolean indicating whether the order is active.\n     */\n    function _verifyTime(\n        uint256 startTime,\n        uint256 endTime,\n        bool revertOnInvalid\n    ) internal view returns (bool valid) {\n        // Revert if order's timespan hasn't started yet or has already ended.\n        if (startTime > block.timestamp || endTime <= block.timestamp) {\n            // Only revert if revertOnInvalid has been supplied as true.\n            if (revertOnInvalid) {\n                revert InvalidTime();\n            }\n\n            // Return false as the order is invalid.\n            return false;\n        }\n\n        // Return true as the order time is valid.\n        valid = true;\n    }\n\n    /**\n     * @dev Internal view function to verify the signature of an order. An\n     *      ERC-1271 fallback will be attempted if either the signature length\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\n     *      supplied offerer. Note that in cases where a 64 or 65 byte signature\n     *      is supplied, only standard ECDSA signatures that recover to a\n     *      non-zero address are supported.\n     *\n     * @param offerer   The offerer for the order.\n     * @param orderHash The order hash.\n     * @param signature A signature from the offerer indicating that the order\n     *                  has been approved.\n     */\n    function _verifySignature(\n        address offerer,\n        bytes32 orderHash,\n        bytes memory signature\n    ) internal view {\n        // Skip signature verification if the offerer is the caller.\n        if (offerer == msg.sender) {\n            return;\n        }\n\n        // Derive EIP-712 digest using the domain separator and the order hash.\n        bytes32 digest = _deriveEIP712Digest(_domainSeparator(), orderHash);\n\n        // Ensure that the signature for the digest is valid for the offerer.\n        _assertValidSignature(offerer, digest, signature);\n    }\n\n    function _verifyOrderStatus(\n        bytes32 orderHash,\n        OrderStatus storage orderStatus,\n        bool firstPay,\n        bool revertOnInvalid\n    ) internal view returns (bool valid) {\n        if (orderStatus.isCancelled) {\n            if (revertOnInvalid) {\n                revert OrderIsCancelled(orderHash);\n            }\n\n            return false;\n        }\n\n        if (orderStatus.isFinalized) {\n            if (revertOnInvalid) {\n                revert OrderAlreadyFinalized(orderHash);\n            }\n\n            return false;\n        }\n\n        if (firstPay) {\n            if (orderStatus.paidTimes > 0) {\n                if (revertOnInvalid) {\n                    revert OrderAlreadyStarted(orderHash);\n                }\n                return false;\n            }\n        } else {\n            if (orderStatus.paidTimes == 0) {\n                if (revertOnInvalid) {\n                    revert OrderNotStarted(orderHash);\n                }\n                return false;\n            }\n        }\n\n        valid = true;\n    }\n}\n"},"contracts/lib/TokenTransferrer.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\nimport \"./TokenTransferrerConstants.sol\";\n\nimport {\n    TokenTransferrerErrors\n} from \"../interfaces/TokenTransferrerErrors.sol\";\n\nimport { ConduitBatch1155Transfer } from \"../conduit/lib/ConduitStructs.sol\";\n\n/**\n * @title TokenTransferrer\n * @author 0age\n * @custom:coauthor d1ll0n\n * @custom:coauthor transmissions11\n * @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\n *         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\n *         by conduits deployed by the ConduitController. Use great caution when\n *         considering these functions for use in other codebases, as there are\n *         significant side effects and edge cases that need to be thoroughly\n *         understood and carefully addressed.\n */\ncontract TokenTransferrer is TokenTransferrerErrors {\n    /**\n     * @dev Internal function to transfer ERC20 tokens from a given originator\n     *      to a given recipient. Sufficient approvals must be set on the\n     *      contract performing the transfer.\n     *\n     * @param token      The ERC20 token to transfer.\n     * @param from       The originator of the transfer.\n     * @param to         The recipient of the transfer.\n     * @param amount     The amount to transfer.\n     */\n    function _performERC20Transfer(\n        address token,\n        address from,\n        address to,\n        uint256 amount\n    ) internal {\n        // Utilize assembly to perform an optimized ERC20 token transfer.\n        assembly {\n            // The free memory pointer memory slot will be used when populating\n            // call data for the transfer; read the value and restore it later.\n            let memPointer := mload(FreeMemoryPointerSlot)\n\n            // Write call data into memory, starting with function selector.\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\n            mstore(ERC20_transferFrom_from_ptr, from)\n            mstore(ERC20_transferFrom_to_ptr, to)\n            mstore(ERC20_transferFrom_amount_ptr, amount)\n\n            // Make call & copy up to 32 bytes of return data to scratch space.\n            // Scratch space does not need to be cleared ahead of time, as the\n            // subsequent check will ensure that either at least a full word of\n            // return data is received (in which case it will be overwritten) or\n            // that no data is received (in which case scratch space will be\n            // ignored) on a successful call to the given token.\n            let callStatus := call(\n                gas(),\n                token,\n                0,\n                ERC20_transferFrom_sig_ptr,\n                ERC20_transferFrom_length,\n                0,\n                OneWord\n            )\n\n            // Determine whether transfer was successful using status & result.\n            let success := and(\n                // Set success to whether the call reverted, if not check it\n                // either returned exactly 1 (can't just be non-zero data), or\n                // had no return data.\n                or(\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\n                    iszero(returndatasize())\n                ),\n                callStatus\n            )\n\n            // Handle cases where either the transfer failed or no data was\n            // returned. Group these, as most transfers will succeed with data.\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\n            // but after it's inverted for JUMPI this expression is cheaper.\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\n                // If the token has no code or the transfer failed: Equivalent\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\n                // after it's inverted for JUMPI this expression is cheaper.\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\n                    // If the transfer failed:\n                    if iszero(success) {\n                        // If it was due to a revert:\n                        if iszero(callStatus) {\n                            // If it returned a message, bubble it up as long as\n                            // sufficient gas remains to do so:\n                            if returndatasize() {\n                                // Ensure that sufficient gas is available to\n                                // copy returndata while expanding memory where\n                                // necessary. Start by computing the word size\n                                // of returndata and allocated memory. Round up\n                                // to the nearest full word.\n                                let returnDataWords := div(\n                                    add(returndatasize(), AlmostOneWord),\n                                    OneWord\n                                )\n\n                                // Note: use the free memory pointer in place of\n                                // msize() to work around a Yul warning that\n                                // prevents accessing msize directly when the IR\n                                // pipeline is activated.\n                                let msizeWords := div(memPointer, OneWord)\n\n                                // Next, compute the cost of the returndatacopy.\n                                let cost := mul(CostPerWord, returnDataWords)\n\n                                // Then, compute cost of new memory allocation.\n                                if gt(returnDataWords, msizeWords) {\n                                    cost := add(\n                                        cost,\n                                        add(\n                                            mul(\n                                                sub(\n                                                    returnDataWords,\n                                                    msizeWords\n                                                ),\n                                                CostPerWord\n                                            ),\n                                            div(\n                                                sub(\n                                                    mul(\n                                                        returnDataWords,\n                                                        returnDataWords\n                                                    ),\n                                                    mul(msizeWords, msizeWords)\n                                                ),\n                                                MemoryExpansionCoefficient\n                                            )\n                                        )\n                                    )\n                                }\n\n                                // Finally, add a small constant and compare to\n                                // gas remaining; bubble up the revert data if\n                                // enough gas is still available.\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\n                                    // Copy returndata to memory; overwrite\n                                    // existing memory.\n                                    returndatacopy(0, 0, returndatasize())\n\n                                    // Revert, specifying memory region with\n                                    // copied returndata.\n                                    revert(0, returndatasize())\n                                }\n                            }\n\n                            // Otherwise revert with a generic error message.\n                            mstore(\n                                TokenTransferGenericFailure_error_sig_ptr,\n                                TokenTransferGenericFailure_error_signature\n                            )\n                            mstore(\n                                TokenTransferGenericFailure_error_token_ptr,\n                                token\n                            )\n                            mstore(\n                                TokenTransferGenericFailure_error_from_ptr,\n                                from\n                            )\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\n                            mstore(\n                                TokenTransferGenericFailure_error_amount_ptr,\n                                amount\n                            )\n                            revert(\n                                TokenTransferGenericFailure_error_sig_ptr,\n                                TokenTransferGenericFailure_error_length\n                            )\n                        }\n\n                        // Otherwise revert with a message about the token\n                        // returning false or non-compliant return values.\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\n                            BadReturnValueFromERC20OnTransfer_error_signature\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\n                            token\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\n                            from\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\n                            to\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\n                            amount\n                        )\n                        revert(\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\n                            BadReturnValueFromERC20OnTransfer_error_length\n                        )\n                    }\n\n                    // Otherwise, revert with error about token not having code:\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\n                    mstore(NoContract_error_token_ptr, token)\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\n                }\n\n                // Otherwise, the token just returned no data despite the call\n                // having succeeded; no need to optimize for this as it's not\n                // technically ERC20 compliant.\n            }\n\n            // Restore the original free memory pointer.\n            mstore(FreeMemoryPointerSlot, memPointer)\n\n            // Restore the zero slot to zero.\n            mstore(ZeroSlot, 0)\n        }\n    }\n\n    function _performSelfERC20Transfer(\n        address token,\n        address to,\n        uint256 amount\n    ) internal {\n        // Utilize assembly to perform an optimized ERC20 token transfer.\n        assembly {\n            // The free memory pointer memory slot will be used when populating\n            // call data for the transfer; read the value and restore it later.\n            let memPointer := mload(FreeMemoryPointerSlot)\n\n            // Write call data into memory, starting with function selector.\n            mstore(ERC20_transfer_sig_ptr, ERC20_transfer_signature)\n            mstore(ERC20_transfer_to_ptr, to)\n            mstore(ERC20_transfer_amount_ptr, amount)\n\n            // Make call & copy up to 32 bytes of return data to scratch space.\n            // Scratch space does not need to be cleared ahead of time, as the\n            // subsequent check will ensure that either at least a full word of\n            // return data is received (in which case it will be overwritten) or\n            // that no data is received (in which case scratch space will be\n            // ignored) on a successful call to the given token.\n            let callStatus := call(\n                gas(),\n                token,\n                0,\n                ERC20_transfer_sig_ptr,\n                ERC20_transfer_length,\n                0,\n                OneWord\n            )\n\n            // Determine whether transfer was successful using status & result.\n            let success := and(\n                // Set success to whether the call reverted, if not check it\n                // either returned exactly 1 (can't just be non-zero data), or\n                // had no return data.\n                or(\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\n                    iszero(returndatasize())\n                ),\n                callStatus\n            )\n\n            // Handle cases where either the transfer failed or no data was\n            // returned. Group these, as most transfers will succeed with data.\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\n            // but after it's inverted for JUMPI this expression is cheaper.\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\n                // If the token has no code or the transfer failed: Equivalent\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\n                // after it's inverted for JUMPI this expression is cheaper.\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\n                    // If the transfer failed:\n                    if iszero(success) {\n                        // If it was due to a revert:\n                        if iszero(callStatus) {\n                            // If it returned a message, bubble it up as long as\n                            // sufficient gas remains to do so:\n                            if returndatasize() {\n                                // Ensure that sufficient gas is available to\n                                // copy returndata while expanding memory where\n                                // necessary. Start by computing the word size\n                                // of returndata and allocated memory. Round up\n                                // to the nearest full word.\n                                let returnDataWords := div(\n                                    add(returndatasize(), AlmostOneWord),\n                                    OneWord\n                                )\n\n                                // Note: use the free memory pointer in place of\n                                // msize() to work around a Yul warning that\n                                // prevents accessing msize directly when the IR\n                                // pipeline is activated.\n                                let msizeWords := div(memPointer, OneWord)\n\n                                // Next, compute the cost of the returndatacopy.\n                                let cost := mul(CostPerWord, returnDataWords)\n\n                                // Then, compute cost of new memory allocation.\n                                if gt(returnDataWords, msizeWords) {\n                                    cost := add(\n                                        cost,\n                                        add(\n                                            mul(\n                                                sub(\n                                                    returnDataWords,\n                                                    msizeWords\n                                                ),\n                                                CostPerWord\n                                            ),\n                                            div(\n                                                sub(\n                                                    mul(\n                                                        returnDataWords,\n                                                        returnDataWords\n                                                    ),\n                                                    mul(msizeWords, msizeWords)\n                                                ),\n                                                MemoryExpansionCoefficient\n                                            )\n                                        )\n                                    )\n                                }\n\n                                // Finally, add a small constant and compare to\n                                // gas remaining; bubble up the revert data if\n                                // enough gas is still available.\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\n                                    // Copy returndata to memory; overwrite\n                                    // existing memory.\n                                    returndatacopy(0, 0, returndatasize())\n\n                                    // Revert, specifying memory region with\n                                    // copied returndata.\n                                    revert(0, returndatasize())\n                                }\n                            }\n\n                            // Otherwise revert with a generic error message.\n                            mstore(\n                                TokenTransferGenericFailure_error_sig_ptr,\n                                TokenTransferGenericFailure_error_signature\n                            )\n                            mstore(\n                                TokenTransferGenericFailure_error_token_ptr,\n                                token\n                            )\n                            mstore(\n                                TokenTransferGenericFailure_error_from_ptr,\n                                address()\n                            )\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\n                            mstore(\n                                TokenTransferGenericFailure_error_amount_ptr,\n                                amount\n                            )\n                            revert(\n                                TokenTransferGenericFailure_error_sig_ptr,\n                                TokenTransferGenericFailure_error_length\n                            )\n                        }\n\n                        // Otherwise revert with a message about the token\n                        // returning false or non-compliant return values.\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\n                            BadReturnValueFromERC20OnTransfer_error_signature\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\n                            token\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\n                            address()\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\n                            to\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\n                            amount\n                        )\n                        revert(\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\n                            BadReturnValueFromERC20OnTransfer_error_length\n                        )\n                    }\n\n                    // Otherwise, revert with error about token not having code:\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\n                    mstore(NoContract_error_token_ptr, token)\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\n                }\n\n                // Otherwise, the token just returned no data despite the call\n                // having succeeded; no need to optimize for this as it's not\n                // technically ERC20 compliant.\n            }\n\n            // Restore the original free memory pointer.\n            mstore(FreeMemoryPointerSlot, memPointer)\n\n            // Restore the zero slot to zero.\n            mstore(ZeroSlot, 0)\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer an ERC721 token from a given\n     *      originator to a given recipient. Sufficient approvals must be set on\n     *      the contract performing the transfer. Note that this function does\n     *      not check whether the receiver can accept the ERC721 token (i.e. it\n     *      does not use `safeTransferFrom`).\n     *\n     * @param token      The ERC721 token to transfer.\n     * @param from       The originator of the transfer.\n     * @param to         The recipient of the transfer.\n     * @param identifier The tokenId to transfer.\n     */\n    function _performERC721Transfer(\n        address token,\n        address from,\n        address to,\n        uint256 identifier\n    ) internal {\n        // Utilize assembly to perform an optimized ERC721 token transfer.\n        assembly {\n            // If the token has no code, revert.\n            if iszero(extcodesize(token)) {\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\n                mstore(NoContract_error_token_ptr, token)\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\n            }\n\n            // The free memory pointer memory slot will be used when populating\n            // call data for the transfer; read the value and restore it later.\n            let memPointer := mload(FreeMemoryPointerSlot)\n\n            // Write call data to memory starting with function selector.\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\n            mstore(ERC721_transferFrom_from_ptr, from)\n            mstore(ERC721_transferFrom_to_ptr, to)\n            mstore(ERC721_transferFrom_id_ptr, identifier)\n\n            // Perform the call, ignoring return data.\n            let success := call(\n                gas(),\n                token,\n                0,\n                ERC721_transferFrom_sig_ptr,\n                ERC721_transferFrom_length,\n                0,\n                0\n            )\n\n            // If the transfer reverted:\n            if iszero(success) {\n                // If it returned a message, bubble it up as long as sufficient\n                // gas remains to do so:\n                if returndatasize() {\n                    // Ensure that sufficient gas is available to copy\n                    // returndata while expanding memory where necessary. Start\n                    // by computing word size of returndata & allocated memory.\n                    // Round up to the nearest full word.\n                    let returnDataWords := div(\n                        add(returndatasize(), AlmostOneWord),\n                        OneWord\n                    )\n\n                    // Note: use the free memory pointer in place of msize() to\n                    // work around a Yul warning that prevents accessing msize\n                    // directly when the IR pipeline is activated.\n                    let msizeWords := div(memPointer, OneWord)\n\n                    // Next, compute the cost of the returndatacopy.\n                    let cost := mul(CostPerWord, returnDataWords)\n\n                    // Then, compute cost of new memory allocation.\n                    if gt(returnDataWords, msizeWords) {\n                        cost := add(\n                            cost,\n                            add(\n                                mul(\n                                    sub(returnDataWords, msizeWords),\n                                    CostPerWord\n                                ),\n                                div(\n                                    sub(\n                                        mul(returnDataWords, returnDataWords),\n                                        mul(msizeWords, msizeWords)\n                                    ),\n                                    MemoryExpansionCoefficient\n                                )\n                            )\n                        )\n                    }\n\n                    // Finally, add a small constant and compare to gas\n                    // remaining; bubble up the revert data if enough gas is\n                    // still available.\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\n                        // Copy returndata to memory; overwrite existing memory.\n                        returndatacopy(0, 0, returndatasize())\n\n                        // Revert, giving memory region with copied returndata.\n                        revert(0, returndatasize())\n                    }\n                }\n\n                // Otherwise revert with a generic error message.\n                mstore(\n                    TokenTransferGenericFailure_error_sig_ptr,\n                    TokenTransferGenericFailure_error_signature\n                )\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\n                revert(\n                    TokenTransferGenericFailure_error_sig_ptr,\n                    TokenTransferGenericFailure_error_length\n                )\n            }\n\n            // Restore the original free memory pointer.\n            mstore(FreeMemoryPointerSlot, memPointer)\n\n            // Restore the zero slot to zero.\n            mstore(ZeroSlot, 0)\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer ERC1155 tokens from a given\n     *      originator to a given recipient. Sufficient approvals must be set on\n     *      the contract performing the transfer and contract recipients must\n     *      implement the ERC1155TokenReceiver interface to indicate that they\n     *      are willing to accept the transfer.\n     *\n     * @param token      The ERC1155 token to transfer.\n     * @param from       The originator of the transfer.\n     * @param to         The recipient of the transfer.\n     * @param identifier The id to transfer.\n     * @param amount     The amount to transfer.\n     */\n    function _performERC1155Transfer(\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount\n    ) internal {\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\n        assembly {\n            // If the token has no code, revert.\n            if iszero(extcodesize(token)) {\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\n                mstore(NoContract_error_token_ptr, token)\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\n            }\n\n            // The following memory slots will be used when populating call data\n            // for the transfer; read the values and restore them later.\n            let memPointer := mload(FreeMemoryPointerSlot)\n            let slot0x80 := mload(Slot0x80)\n            let slot0xA0 := mload(Slot0xA0)\n            let slot0xC0 := mload(Slot0xC0)\n\n            // Write call data into memory, beginning with function selector.\n            mstore(\n                ERC1155_safeTransferFrom_sig_ptr,\n                ERC1155_safeTransferFrom_signature\n            )\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\n            mstore(\n                ERC1155_safeTransferFrom_data_offset_ptr,\n                ERC1155_safeTransferFrom_data_length_offset\n            )\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\n\n            // Perform the call, ignoring return data.\n            let success := call(\n                gas(),\n                token,\n                0,\n                ERC1155_safeTransferFrom_sig_ptr,\n                ERC1155_safeTransferFrom_length,\n                0,\n                0\n            )\n\n            // If the transfer reverted:\n            if iszero(success) {\n                // If it returned a message, bubble it up as long as sufficient\n                // gas remains to do so:\n                if returndatasize() {\n                    // Ensure that sufficient gas is available to copy\n                    // returndata while expanding memory where necessary. Start\n                    // by computing word size of returndata & allocated memory.\n                    // Round up to the nearest full word.\n                    let returnDataWords := div(\n                        add(returndatasize(), AlmostOneWord),\n                        OneWord\n                    )\n\n                    // Note: use the free memory pointer in place of msize() to\n                    // work around a Yul warning that prevents accessing msize\n                    // directly when the IR pipeline is activated.\n                    let msizeWords := div(memPointer, OneWord)\n\n                    // Next, compute the cost of the returndatacopy.\n                    let cost := mul(CostPerWord, returnDataWords)\n\n                    // Then, compute cost of new memory allocation.\n                    if gt(returnDataWords, msizeWords) {\n                        cost := add(\n                            cost,\n                            add(\n                                mul(\n                                    sub(returnDataWords, msizeWords),\n                                    CostPerWord\n                                ),\n                                div(\n                                    sub(\n                                        mul(returnDataWords, returnDataWords),\n                                        mul(msizeWords, msizeWords)\n                                    ),\n                                    MemoryExpansionCoefficient\n                                )\n                            )\n                        )\n                    }\n\n                    // Finally, add a small constant and compare to gas\n                    // remaining; bubble up the revert data if enough gas is\n                    // still available.\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\n                        // Copy returndata to memory; overwrite existing memory.\n                        returndatacopy(0, 0, returndatasize())\n\n                        // Revert, giving memory region with copied returndata.\n                        revert(0, returndatasize())\n                    }\n                }\n\n                // Otherwise revert with a generic error message.\n                mstore(\n                    TokenTransferGenericFailure_error_sig_ptr,\n                    TokenTransferGenericFailure_error_signature\n                )\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\n                revert(\n                    TokenTransferGenericFailure_error_sig_ptr,\n                    TokenTransferGenericFailure_error_length\n                )\n            }\n\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\n\n            // Restore the original free memory pointer.\n            mstore(FreeMemoryPointerSlot, memPointer)\n\n            // Restore the zero slot to zero.\n            mstore(ZeroSlot, 0)\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer ERC1155 tokens from a given\n     *      originator to a given recipient. Sufficient approvals must be set on\n     *      the contract performing the transfer and contract recipients must\n     *      implement the ERC1155TokenReceiver interface to indicate that they\n     *      are willing to accept the transfer. NOTE: this function is not\n     *      memory-safe; it will overwrite existing memory, restore the free\n     *      memory pointer to the default value, and overwrite the zero slot.\n     *      This function should only be called once memory is no longer\n     *      required and when uninitialized arrays are not utilized, and memory\n     *      should be considered fully corrupted (aside from the existence of a\n     *      default-value free memory pointer) after calling this function.\n     *\n     * @param batchTransfers The group of 1155 batch transfers to perform.\n     */\n    function _performERC1155BatchTransfers(\n        ConduitBatch1155Transfer[] calldata batchTransfers\n    ) internal {\n        // Utilize assembly to perform optimized batch 1155 transfers.\n        assembly {\n            let len := batchTransfers.length\n            // Pointer to first head in the array, which is offset to the struct\n            // at each index. This gets incremented after each loop to avoid\n            // multiplying by 32 to get the offset for each element.\n            let nextElementHeadPtr := batchTransfers.offset\n\n            // Pointer to beginning of the head of the array. This is the\n            // reference position each offset references. It's held static to\n            // let each loop calculate the data position for an element.\n            let arrayHeadPtr := nextElementHeadPtr\n\n            // Write the function selector, which will be reused for each call:\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\n            mstore(\n                ConduitBatch1155Transfer_from_offset,\n                ERC1155_safeBatchTransferFrom_signature\n            )\n\n            // Iterate over each batch transfer.\n            for {\n                let i := 0\n            } lt(i, len) {\n                i := add(i, 1)\n            } {\n                // Read the offset to the beginning of the element and add\n                // it to pointer to the beginning of the array head to get\n                // the absolute position of the element in calldata.\n                let elementPtr := add(\n                    arrayHeadPtr,\n                    calldataload(nextElementHeadPtr)\n                )\n\n                // Retrieve the token from calldata.\n                let token := calldataload(elementPtr)\n\n                // If the token has no code, revert.\n                if iszero(extcodesize(token)) {\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\n                    mstore(NoContract_error_token_ptr, token)\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\n                }\n\n                // Get the total number of supplied ids.\n                let idsLength := calldataload(\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\n                )\n\n                // Determine the expected offset for the amounts array.\n                let expectedAmountsOffset := add(\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\n                    mul(idsLength, OneWord)\n                )\n\n                // Validate struct encoding.\n                let invalidEncoding := iszero(\n                    and(\n                        // ids.length == amounts.length\n                        eq(\n                            idsLength,\n                            calldataload(add(elementPtr, expectedAmountsOffset))\n                        ),\n                        and(\n                            // ids_offset == 0xa0\n                            eq(\n                                calldataload(\n                                    add(\n                                        elementPtr,\n                                        ConduitBatch1155Transfer_ids_head_offset\n                                    )\n                                ),\n                                ConduitBatch1155Transfer_ids_length_offset\n                            ),\n                            // amounts_offset == 0xc0 + ids.length*32\n                            eq(\n                                calldataload(\n                                    add(\n                                        elementPtr,\n                                        ConduitBatchTransfer_amounts_head_offset\n                                    )\n                                ),\n                                expectedAmountsOffset\n                            )\n                        )\n                    )\n                )\n\n                // Revert with an error if the encoding is not valid.\n                if invalidEncoding {\n                    mstore(\n                        Invalid1155BatchTransferEncoding_ptr,\n                        Invalid1155BatchTransferEncoding_selector\n                    )\n                    revert(\n                        Invalid1155BatchTransferEncoding_ptr,\n                        Invalid1155BatchTransferEncoding_length\n                    )\n                }\n\n                // Update the offset position for the next loop\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\n\n                // Copy the first section of calldata (before dynamic values).\n                calldatacopy(\n                    BatchTransfer1155Params_ptr,\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\n                    ConduitBatch1155Transfer_usable_head_size\n                )\n\n                // Determine size of calldata required for ids and amounts. Note\n                // that the size includes both lengths as well as the data.\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\n\n                // Update the offset for the data array in memory.\n                mstore(\n                    BatchTransfer1155Params_data_head_ptr,\n                    add(\n                        BatchTransfer1155Params_ids_length_offset,\n                        idsAndAmountsSize\n                    )\n                )\n\n                // Set the length of the data array in memory to zero.\n                mstore(\n                    add(\n                        BatchTransfer1155Params_data_length_basePtr,\n                        idsAndAmountsSize\n                    ),\n                    0\n                )\n\n                // Determine the total calldata size for the call to transfer.\n                let transferDataSize := add(\n                    BatchTransfer1155Params_calldata_baseSize,\n                    idsAndAmountsSize\n                )\n\n                // Copy second section of calldata (including dynamic values).\n                calldatacopy(\n                    BatchTransfer1155Params_ids_length_ptr,\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\n                    idsAndAmountsSize\n                )\n\n                // Perform the call to transfer 1155 tokens.\n                let success := call(\n                    gas(),\n                    token,\n                    0,\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\n                    transferDataSize, // Location of the length of callData.\n                    0,\n                    0\n                )\n\n                // If the transfer reverted:\n                if iszero(success) {\n                    // If it returned a message, bubble it up as long as\n                    // sufficient gas remains to do so:\n                    if returndatasize() {\n                        // Ensure that sufficient gas is available to copy\n                        // returndata while expanding memory where necessary.\n                        // Start by computing word size of returndata and\n                        // allocated memory. Round up to the nearest full word.\n                        let returnDataWords := div(\n                            add(returndatasize(), AlmostOneWord),\n                            OneWord\n                        )\n\n                        // Note: use transferDataSize in place of msize() to\n                        // work around a Yul warning that prevents accessing\n                        // msize directly when the IR pipeline is activated.\n                        // The free memory pointer is not used here because\n                        // this function does almost all memory management\n                        // manually and does not update it, and transferDataSize\n                        // should be the largest memory value used (unless a\n                        // previous batch was larger).\n                        let msizeWords := div(transferDataSize, OneWord)\n\n                        // Next, compute the cost of the returndatacopy.\n                        let cost := mul(CostPerWord, returnDataWords)\n\n                        // Then, compute cost of new memory allocation.\n                        if gt(returnDataWords, msizeWords) {\n                            cost := add(\n                                cost,\n                                add(\n                                    mul(\n                                        sub(returnDataWords, msizeWords),\n                                        CostPerWord\n                                    ),\n                                    div(\n                                        sub(\n                                            mul(\n                                                returnDataWords,\n                                                returnDataWords\n                                            ),\n                                            mul(msizeWords, msizeWords)\n                                        ),\n                                        MemoryExpansionCoefficient\n                                    )\n                                )\n                            )\n                        }\n\n                        // Finally, add a small constant and compare to gas\n                        // remaining; bubble up the revert data if enough gas is\n                        // still available.\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\n                            // Copy returndata to memory; overwrite existing.\n                            returndatacopy(0, 0, returndatasize())\n\n                            // Revert with memory region containing returndata.\n                            revert(0, returndatasize())\n                        }\n                    }\n\n                    // Set the error signature.\n                    mstore(\n                        0,\n                        ERC1155BatchTransferGenericFailure_error_signature\n                    )\n\n                    // Write the token.\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\n\n                    // Increase the offset to ids by 32.\n                    mstore(\n                        BatchTransfer1155Params_ids_head_ptr,\n                        ERC1155BatchTransferGenericFailure_ids_offset\n                    )\n\n                    // Increase the offset to amounts by 32.\n                    mstore(\n                        BatchTransfer1155Params_amounts_head_ptr,\n                        add(\n                            OneWord,\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\n                        )\n                    )\n\n                    // Return modified region. The total size stays the same as\n                    // `token` uses the same number of bytes as `data.length`.\n                    revert(0, transferDataSize)\n                }\n            }\n\n            // Reset the free memory pointer to the default value; memory must\n            // be assumed to be dirtied and not reused from this point forward.\n            // Also note that the zero slot is not reset to zero, meaning empty\n            // arrays cannot be safely created or utilized until it is restored.\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\n        }\n    }\n}\n"},"contracts/lib/Assertions.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport { GettersAndDerivers } from \"./GettersAndDerivers.sol\";\n\nimport {\n    TokenTransferrerErrors\n} from \"../interfaces/TokenTransferrerErrors.sol\";\n\nimport { CounterManager } from \"./CounterManager.sol\";\n\ncontract Assertions is\n    GettersAndDerivers,\n    CounterManager,\n    TokenTransferrerErrors\n{\n    constructor(address conduitController)\n        GettersAndDerivers(conduitController)\n    {}\n\n    function _assertNonZeroAmount(uint256 amount) internal pure {\n        // Revert if the supplied amount is equal to zero.\n        if (amount == 0) {\n            revert MissingItemAmount();\n        }\n    }\n}\n"},"contracts/lib/SignatureVerification.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport { EIP1271Interface } from \"../interfaces/EIP1271Interface.sol\";\n\nimport {\n    SignatureVerificationErrors\n} from \"../interfaces/SignatureVerificationErrors.sol\";\n\nimport { LowLevelHelpers } from \"./LowLevelHelpers.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title SignatureVerification\n * @author 0age\n * @notice SignatureVerification contains logic for verifying signatures.\n */\ncontract SignatureVerification is SignatureVerificationErrors, LowLevelHelpers {\n    /**\n     * @dev Internal view function to verify the signature of an order. An\n     *      ERC-1271 fallback will be attempted if either the signature length\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\n     *      supplied signer.\n     *\n     * @param signer    The signer for the order.\n     * @param digest    The digest to verify the signature against.\n     * @param signature A signature from the signer indicating that the order\n     *                  has been approved.\n     */\n    function _assertValidSignature(\n        address signer,\n        bytes32 digest,\n        bytes memory signature\n    ) internal view {\n        // Declare value for ecrecover equality or 1271 call success status.\n        bool success;\n\n        // Utilize assembly to perform optimized signature verification check.\n        assembly {\n            // Ensure that first word of scratch space is empty.\n            mstore(0, 0)\n\n            // Declare value for v signature parameter.\n            let v\n\n            // Get the length of the signature.\n            let signatureLength := mload(signature)\n\n            // Get the pointer to the value preceding the signature length.\n            // This will be used for temporary memory overrides - either the\n            // signature head for isValidSignature or the digest for ecrecover.\n            let wordBeforeSignaturePtr := sub(signature, OneWord)\n\n            // Cache the current value behind the signature to restore it later.\n            let cachedWordBeforeSignature := mload(wordBeforeSignaturePtr)\n\n            // Declare lenDiff + recoveredSigner scope to manage stack pressure.\n            {\n                // Take the difference between the max ECDSA signature length\n                // and the actual signature length. Overflow desired for any\n                // values > 65. If the diff is not 0 or 1, it is not a valid\n                // ECDSA signature - move on to EIP1271 check.\n                let lenDiff := sub(ECDSA_MaxLength, signatureLength)\n\n                // Declare variable for recovered signer.\n                let recoveredSigner\n\n                // If diff is 0 or 1, it may be an ECDSA signature.\n                // Try to recover signer.\n                if iszero(gt(lenDiff, 1)) {\n                    // Read the signature `s` value.\n                    let originalSignatureS := mload(\n                        add(signature, ECDSA_signature_s_offset)\n                    )\n\n                    // Read the first byte of the word after `s`. If the\n                    // signature is 65 bytes, this will be the real `v` value.\n                    // If not, it will need to be modified - doing it this way\n                    // saves an extra condition.\n                    v := byte(\n                        0,\n                        mload(add(signature, ECDSA_signature_v_offset))\n                    )\n\n                    // If lenDiff is 1, parse 64-byte signature as ECDSA.\n                    if lenDiff {\n                        // Extract yParity from highest bit of vs and add 27 to\n                        // get v.\n                        v := add(\n                            shr(MaxUint8, originalSignatureS),\n                            Signature_lower_v\n                        )\n\n                        // Extract canonical s from vs, all but the highest bit.\n                        // Temporarily overwrite the original `s` value in the\n                        // signature.\n                        mstore(\n                            add(signature, ECDSA_signature_s_offset),\n                            and(\n                                originalSignatureS,\n                                EIP2098_allButHighestBitMask\n                            )\n                        )\n                    }\n                    // Temporarily overwrite the signature length with `v` to\n                    // conform to the expected input for ecrecover.\n                    mstore(signature, v)\n\n                    // Temporarily overwrite the word before the length with\n                    // `digest` to conform to the expected input for ecrecover.\n                    mstore(wordBeforeSignaturePtr, digest)\n\n                    // Attempt to recover the signer for the given signature. Do\n                    // not check the call status as ecrecover will return a null\n                    // address if the signature is invalid.\n                    pop(\n                        staticcall(\n                            gas(),\n                            Ecrecover_precompile, // Call ecrecover precompile.\n                            wordBeforeSignaturePtr, // Use data memory location.\n                            Ecrecover_args_size, // Size of digest, v, r, and s.\n                            0, // Write result to scratch space.\n                            OneWord // Provide size of returned result.\n                        )\n                    )\n\n                    // Restore cached word before signature.\n                    mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\n\n                    // Restore cached signature length.\n                    mstore(signature, signatureLength)\n\n                    // Restore cached signature `s` value.\n                    mstore(\n                        add(signature, ECDSA_signature_s_offset),\n                        originalSignatureS\n                    )\n\n                    // Read the recovered signer from the buffer given as return\n                    // space for ecrecover.\n                    recoveredSigner := mload(0)\n                }\n\n                // Set success to true if the signature provided was a valid\n                // ECDSA signature and the signer is not the null address. Use\n                // gt instead of direct as success is used outside of assembly.\n                success := and(eq(signer, recoveredSigner), gt(signer, 0))\n            }\n\n            // If the signature was not verified with ecrecover, try EIP1271.\n            if iszero(success) {\n                // Temporarily overwrite the word before the signature length\n                // and use it as the head of the signature input to\n                // `isValidSignature`, which has a value of 64.\n                mstore(\n                    wordBeforeSignaturePtr,\n                    EIP1271_isValidSignature_signature_head_offset\n                )\n\n                // Get pointer to use for the selector of `isValidSignature`.\n                let selectorPtr := sub(\n                    signature,\n                    EIP1271_isValidSignature_selector_negativeOffset\n                )\n\n                // Cache the value currently stored at the selector pointer.\n                let cachedWordOverwrittenBySelector := mload(selectorPtr)\n\n                // Get pointer to use for `digest` input to `isValidSignature`.\n                let digestPtr := sub(\n                    signature,\n                    EIP1271_isValidSignature_digest_negativeOffset\n                )\n\n                // Cache the value currently stored at the digest pointer.\n                let cachedWordOverwrittenByDigest := mload(digestPtr)\n\n                // Write the selector first, since it overlaps the digest.\n                mstore(selectorPtr, EIP1271_isValidSignature_selector)\n\n                // Next, write the digest.\n                mstore(digestPtr, digest)\n\n                // Call signer with `isValidSignature` to validate signature.\n                success := staticcall(\n                    gas(),\n                    signer,\n                    selectorPtr,\n                    add(\n                        signatureLength,\n                        EIP1271_isValidSignature_calldata_baseLength\n                    ),\n                    0,\n                    OneWord\n                )\n\n                // Determine if the signature is valid on successful calls.\n                if success {\n                    // If first word of scratch space does not contain EIP-1271\n                    // signature selector, revert.\n                    if iszero(eq(mload(0), EIP1271_isValidSignature_selector)) {\n                        // Revert with bad 1271 signature if signer has code.\n                        if extcodesize(signer) {\n                            // Bad contract signature.\n                            mstore(0, BadContractSignature_error_signature)\n                            revert(0, BadContractSignature_error_length)\n                        }\n\n                        // Check if signature length was invalid.\n                        if gt(sub(ECDSA_MaxLength, signatureLength), 1) {\n                            // Revert with generic invalid signature error.\n                            mstore(0, InvalidSignature_error_signature)\n                            revert(0, InvalidSignature_error_length)\n                        }\n\n                        // Check if v was invalid.\n                        if iszero(\n                            byte(v, ECDSA_twentySeventhAndTwentyEighthBytesSet)\n                        ) {\n                            // Revert with invalid v value.\n                            mstore(0, BadSignatureV_error_signature)\n                            mstore(BadSignatureV_error_offset, v)\n                            revert(0, BadSignatureV_error_length)\n                        }\n\n                        // Revert with generic invalid signer error message.\n                        mstore(0, InvalidSigner_error_signature)\n                        revert(0, InvalidSigner_error_length)\n                    }\n                }\n\n                // Restore the cached values overwritten by selector, digest and\n                // signature head.\n                mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\n                mstore(selectorPtr, cachedWordOverwrittenBySelector)\n                mstore(digestPtr, cachedWordOverwrittenByDigest)\n            }\n        }\n\n        // If the call failed...\n        if (!success) {\n            // Revert and pass reason along if one was returned.\n            _revertWithReasonIfOneIsReturned();\n\n            // Otherwise, revert with error indicating bad contract signature.\n            assembly {\n                mstore(0, BadContractSignature_error_signature)\n                revert(0, BadContractSignature_error_length)\n            }\n        }\n    }\n}\n"},"contracts/lib/GettersAndDerivers.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport { OrderParameters } from \"./ConsiderationStructs.sol\";\n\nimport { ConsiderationBase } from \"./ConsiderationBase.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\ncontract GettersAndDerivers is ConsiderationBase {\n\n    constructor(address conduitController)\n        ConsiderationBase(conduitController)\n    {}\n\n    function _deriveOrderHash(\n        OrderParameters memory orderParameters,\n        uint256 counter\n    ) internal view returns (bytes32 orderHash) {\n        bytes32 typeHash = _ORDER_TYPEHASH;\n\n        assembly {\n            let typeHashPtr := sub(orderParameters, OneWord)\n\n            let previousValue := mload(typeHashPtr)\n\n            mstore(typeHashPtr, typeHash)\n\n            let counterPtr := add(\n                orderParameters,\n                OrderParameters_counter_offset\n            )\n\n            let counterDataPtr := mload(counterPtr)\n\n            mstore(counterPtr, counter)\n\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\n\n            mstore(typeHashPtr, previousValue)\n\n            mstore(counterPtr, counterDataPtr)\n        }\n    }\n\n    function _deriveConduit(bytes32 conduitKey)\n        internal\n        view\n        returns (address conduit)\n    {\n        // Read conduit controller address from runtime and place on the stack.\n        address conduitController = address(_CONDUIT_CONTROLLER);\n\n        // Read conduit creation code hash from runtime and place on the stack.\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\n\n        // Leverage scratch space to perform an efficient hash.\n        assembly {\n            // Retrieve the free memory pointer; it will be replaced afterwards.\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\n\n            // Place the control character and the conduit controller in scratch\n            // space; note that eleven bytes at the beginning are left unused.\n            mstore(0, or(MaskOverByteTwelve, conduitController))\n\n            // Place the conduit key in the next region of scratch space.\n            mstore(OneWord, conduitKey)\n\n            // Place conduit creation code hash in free memory pointer location.\n            mstore(TwoWords, conduitCreationCodeHash)\n\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\n            conduit := and(\n                // Hash the relevant region.\n                keccak256(\n                    // The region starts at memory pointer 11.\n                    Create2AddressDerivation_ptr,\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\n                    Create2AddressDerivation_length\n                ),\n                // The address equals the last twenty bytes of the hash.\n                MaskOverLastTwentyBytes\n            )\n\n            // Restore the free memory pointer.\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\n        }\n    }\n\n    /**\n     * @dev Internal view function to get the EIP-712 domain separator. If the\n     *      chainId matches the chainId set on deployment, the cached domain\n     *      separator will be returned; otherwise, it will be derived from\n     *      scratch.\n     *\n     * @return The domain separator.\n     */\n    function _domainSeparator() internal view returns (bytes32) {\n        // prettier-ignore\n        return block.chainid == _CHAIN_ID\n            ? _DOMAIN_SEPARATOR\n            : _deriveDomainSeparator();\n    }\n\n    /**\n     * @dev Internal view function to retrieve configuration information for\n     *      this contract.\n     *\n     * @return version           The contract version.\n     * @return domainSeparator   The domain separator for this contract.\n     * @return conduitController The conduit Controller set for this contract.\n     */\n    function _information()\n        internal\n        view\n        returns (\n            string memory version,\n            bytes32 domainSeparator,\n            address conduitController\n        )\n    {\n        // Derive the domain separator.\n        domainSeparator = _domainSeparator();\n\n        // Declare variable as immutables cannot be accessed within assembly.\n        conduitController = address(_CONDUIT_CONTROLLER);\n\n        // Allocate a string with the intended length.\n        version = new string(Version_length);\n\n        // Set the version as data on the newly allocated string.\n        assembly {\n            mstore(add(version, OneWord), shl(Version_shift, Version))\n        }\n    }\n\n    /**\n     * @dev Internal pure function to efficiently derive an digest to sign for\n     *      an order in accordance with EIP-712.\n     *\n     * @param domainSeparator The domain separator.\n     * @param orderHash       The order hash.\n     *\n     * @return value The hash.\n     */\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\n        internal\n        pure\n        returns (bytes32 value)\n    {\n        // Leverage scratch space to perform an efficient hash.\n        assembly {\n            // Place the EIP-712 prefix at the start of scratch space.\n            mstore(0, EIP_712_PREFIX)\n\n            // Place the domain separator in the next region of scratch space.\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\n\n            // Place the order hash in scratch space, spilling into the first\n            // two bytes of the free memory pointer — this should never be set\n            // as memory cannot be expanded to that size, and will be zeroed out\n            // after the hash is performed.\n            mstore(EIP712_OrderHash_offset, orderHash)\n\n            // Hash the relevant region (65 bytes).\n            value := keccak256(0, EIP712_DigestPayload_size)\n\n            // Clear out the dirtied bits in the memory pointer.\n            mstore(EIP712_OrderHash_offset, 0)\n        }\n    }\n}\n"},"contracts/interfaces/TokenTransferrerErrors.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\n/**\n * @title TokenTransferrerErrors\n */\ninterface TokenTransferrerErrors {\n    /**\n     * @dev Revert with an error when an ERC721 transfer with amount other than\n     *      one is attempted.\n     */\n    error InvalidERC721TransferAmount();\n\n    /**\n     * @dev Revert with an error when attempting to fulfill an order where an\n     *      item has an amount of zero.\n     */\n    error MissingItemAmount();\n\n    /**\n     * @dev Revert with an error when attempting to fulfill an order where an\n     *      item has unused parameters. This includes both the token and the\n     *      identifier parameters for native transfers as well as the identifier\n     *      parameter for ERC20 transfers. Note that the conduit does not\n     *      perform this check, leaving it up to the calling channel to enforce\n     *      when desired.\n     */\n    error UnusedItemParameters();\n\n    /**\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\n     *      transfer reverts.\n     *\n     * @param token      The token for which the transfer was attempted.\n     * @param from       The source of the attempted transfer.\n     * @param to         The recipient of the attempted transfer.\n     * @param identifier The identifier for the attempted transfer.\n     * @param amount     The amount for the attempted transfer.\n     */\n    error TokenTransferGenericFailure(\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount\n    );\n\n    /**\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\n     *\n     * @param token       The token for which the transfer was attempted.\n     * @param from        The source of the attempted transfer.\n     * @param to          The recipient of the attempted transfer.\n     * @param identifiers The identifiers for the attempted transfer.\n     * @param amounts     The amounts for the attempted transfer.\n     */\n    error ERC1155BatchTransferGenericFailure(\n        address token,\n        address from,\n        address to,\n        uint256[] identifiers,\n        uint256[] amounts\n    );\n\n    /**\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\n     *      value.\n     *\n     * @param token      The token for which the ERC20 transfer was attempted.\n     * @param from       The source of the attempted ERC20 transfer.\n     * @param to         The recipient of the attempted ERC20 transfer.\n     * @param amount     The amount for the attempted ERC20 transfer.\n     */\n    error BadReturnValueFromERC20OnTransfer(\n        address token,\n        address from,\n        address to,\n        uint256 amount\n    );\n\n    /**\n     * @dev Revert with an error when an account being called as an assumed\n     *      contract does not have code and returns no data.\n     *\n     * @param account The account that should contain code.\n     */\n    error NoContract(address account);\n\n    /**\n     * @dev Revert with an error when attempting to execute an 1155 batch\n     *      transfer using calldata not produced by default ABI encoding or with\n     *      different lengths for ids and amounts arrays.\n     */\n    error Invalid1155BatchTransferEncoding();\n}\n"},"contracts/lib/CounterManager.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport {\n    ConsiderationEventsAndErrors\n} from \"../interfaces/ConsiderationEventsAndErrors.sol\";\n\nimport { ReentrancyGuard } from \"./ReentrancyGuard.sol\";\n\ncontract CounterManager is ConsiderationEventsAndErrors, ReentrancyGuard {\n\n    mapping(address => uint256) private _counters;\n\n    function _incrementCounter() internal returns (uint256 newCounter) {\n        _assertNonReentrant();\n\n        unchecked {\n            newCounter = ++_counters[msg.sender];\n        }\n\n        emit CounterIncremented(newCounter, msg.sender);\n    }\n\n    function _getCounter(address offerer)\n        internal\n        view\n        returns (uint256 currentCounter)\n    {\n        currentCounter = _counters[offerer];\n    }\n}\n"},"contracts/lib/ConsiderationBase.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport {\n    ConduitControllerInterface\n} from \"../interfaces/ConduitControllerInterface.sol\";\n\ncontract ConsiderationBase {\n    bytes32 internal immutable _NAME_HASH;\n    bytes32 internal immutable _VERSION_HASH;\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\n    bytes32 internal immutable _ORDER_TYPEHASH;\n    uint256 internal immutable _CHAIN_ID;\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\n\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\n\n    constructor(address conduitController) {\n        (\n            _NAME_HASH,\n            _VERSION_HASH,\n            _EIP_712_DOMAIN_TYPEHASH,\n            _ORDER_TYPEHASH\n        ) = _deriveTypehashes();\n\n        _CHAIN_ID = block.chainid;\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\n\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\n\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\n        );\n    }\n\n    function _deriveDomainSeparator() internal view returns (bytes32) {\n        return keccak256(\n            abi.encode(\n                _EIP_712_DOMAIN_TYPEHASH,\n                _NAME_HASH,\n                _VERSION_HASH,\n                block.chainid,\n                address(this)\n            )\n        );\n    }\n\n    function _nameString() internal pure virtual returns (string memory) {\n        return \"Consideration\";\n    }\n\n    function _deriveTypehashes()\n        internal\n        pure\n        returns (\n            bytes32 nameHash,\n            bytes32 versionHash,\n            bytes32 eip712DomainTypehash,\n            bytes32 orderTypehash\n        )\n    {\n        nameHash = keccak256(bytes(_nameString()));\n\n        versionHash = keccak256(bytes(\"1.0\"));\n\n        bytes memory orderComponentsTypeString = abi.encodePacked(\n            \"OrderComponents(\",\n                \"address offerer,\",\n                \"address token,\",\n                \"uint256 identifier,\",\n                \"address currency,\",\n                \"address artist,\",\n                \"address platform,\",\n                \"uint256 startTime,\",\n                \"uint256 endTime,\",\n                \"uint256 duration,\",\n                \"uint256 periods,\",\n                \"uint256 amount,\",\n                \"uint256 ratio,\",\n                \"uint256 royalty,\",\n                \"uint256 fee,\",\n                \"uint256 withdrawFee,\",\n                \"uint256 salt,\",\n                \"bytes32 conduitKey,\",\n                \"uint256 counter\",\n            \")\"\n        );\n\n        eip712DomainTypehash = keccak256(\n            abi.encodePacked(\n                \"EIP712Domain(\",\n                    \"string name,\",\n                    \"string version,\",\n                    \"uint256 chainId,\",\n                    \"address verifyingContract\",\n                \")\"\n            )\n        );\n\n        orderTypehash = keccak256(orderComponentsTypeString);\n    }\n}"},"contracts/interfaces/ConduitControllerInterface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\n/**\n * @title ConduitControllerInterface\n * @author 0age\n * @notice ConduitControllerInterface contains all external function interfaces,\n *         structs, events, and errors for the conduit controller.\n */\ninterface ConduitControllerInterface {\n    /**\n     * @dev Track the conduit key, current owner, new potential owner, and open\n     *      channels for each deployed conduit.\n     */\n    struct ConduitProperties {\n        bytes32 key;\n        address owner;\n        address potentialOwner;\n        address[] channels;\n        mapping(address => uint256) channelIndexesPlusOne;\n    }\n\n    /**\n     * @dev Emit an event whenever a new conduit is created.\n     *\n     * @param conduit    The newly created conduit.\n     * @param conduitKey The conduit key used to create the new conduit.\n     */\n    event NewConduit(address conduit, bytes32 conduitKey);\n\n    /**\n     * @dev Emit an event whenever conduit ownership is transferred.\n     *\n     * @param conduit       The conduit for which ownership has been\n     *                      transferred.\n     * @param previousOwner The previous owner of the conduit.\n     * @param newOwner      The new owner of the conduit.\n     */\n    event OwnershipTransferred(\n        address indexed conduit,\n        address indexed previousOwner,\n        address indexed newOwner\n    );\n\n    /**\n     * @dev Emit an event whenever a conduit owner registers a new potential\n     *      owner for that conduit.\n     *\n     * @param newPotentialOwner The new potential owner of the conduit.\n     */\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\n\n    /**\n     * @dev Revert with an error when attempting to create a new conduit using a\n     *      conduit key where the first twenty bytes of the key do not match the\n     *      address of the caller.\n     */\n    error InvalidCreator();\n\n    /**\n     * @dev Revert with an error when attempting to create a new conduit when no\n     *      initial owner address is supplied.\n     */\n    error InvalidInitialOwner();\n\n    /**\n     * @dev Revert with an error when attempting to set a new potential owner\n     *      that is already set.\n     */\n    error NewPotentialOwnerAlreadySet(\n        address conduit,\n        address newPotentialOwner\n    );\n\n    /**\n     * @dev Revert with an error when attempting to cancel ownership transfer\n     *      when no new potential owner is currently set.\n     */\n    error NoPotentialOwnerCurrentlySet(address conduit);\n\n    /**\n     * @dev Revert with an error when attempting to interact with a conduit that\n     *      does not yet exist.\n     */\n    error NoConduit();\n\n    /**\n     * @dev Revert with an error when attempting to create a conduit that\n     *      already exists.\n     */\n    error ConduitAlreadyExists(address conduit);\n\n    /**\n     * @dev Revert with an error when attempting to update channels or transfer\n     *      ownership of a conduit when the caller is not the owner of the\n     *      conduit in question.\n     */\n    error CallerIsNotOwner(address conduit);\n\n    /**\n     * @dev Revert with an error when attempting to register a new potential\n     *      owner and supplying the null address.\n     */\n    error NewPotentialOwnerIsZeroAddress(address conduit);\n\n    /**\n     * @dev Revert with an error when attempting to claim ownership of a conduit\n     *      with a caller that is not the current potential owner for the\n     *      conduit in question.\n     */\n    error CallerIsNotNewPotentialOwner(address conduit);\n\n    /**\n     * @dev Revert with an error when attempting to retrieve a channel using an\n     *      index that is out of range.\n     */\n    error ChannelOutOfRange(address conduit);\n\n    /**\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\n     *         an initial owner for the deployed conduit. Note that the first\n     *         twenty bytes of the supplied conduit key must match the caller\n     *         and that a new conduit cannot be created if one has already been\n     *         deployed using the same conduit key.\n     *\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\n     *                     the first twenty bytes of the conduit key must match\n     *                     the caller of this contract.\n     * @param initialOwner The initial owner to set for the new conduit.\n     *\n     * @return conduit The address of the newly deployed conduit.\n     */\n    function createConduit(bytes32 conduitKey, address initialOwner)\n        external\n        returns (address conduit);\n\n    /**\n     * @notice Open or close a channel on a given conduit, thereby allowing the\n     *         specified account to execute transfers against that conduit.\n     *         Extreme care must be taken when updating channels, as malicious\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\n     *         tokens where the token holder has granted the conduit approval.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to open or close the channel.\n     * @param channel The channel to open or close on the conduit.\n     * @param isOpen  A boolean indicating whether to open or close the channel.\n     */\n    function updateChannel(\n        address conduit,\n        address channel,\n        bool isOpen\n    ) external;\n\n    /**\n     * @notice Initiate conduit ownership transfer by assigning a new potential\n     *         owner for the given conduit. Once set, the new potential owner\n     *         may call `acceptOwnership` to claim ownership of the conduit.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to initiate ownership transfer.\n     * @param newPotentialOwner The new potential owner of the conduit.\n     */\n    function transferOwnership(address conduit, address newPotentialOwner)\n        external;\n\n    /**\n     * @notice Clear the currently set potential owner, if any, from a conduit.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to cancel ownership transfer.\n     */\n    function cancelOwnershipTransfer(address conduit) external;\n\n    /**\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\n     *         current owner has set as the new potential owner may call this\n     *         function.\n     *\n     * @param conduit The conduit for which to accept ownership.\n     */\n    function acceptOwnership(address conduit) external;\n\n    /**\n     * @notice Retrieve the current owner of a deployed conduit.\n     *\n     * @param conduit The conduit for which to retrieve the associated owner.\n     *\n     * @return owner The owner of the supplied conduit.\n     */\n    function ownerOf(address conduit) external view returns (address owner);\n\n    /**\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\n     *         lookup.\n     *\n     * @param conduit The conduit for which to retrieve the associated conduit\n     *                key.\n     *\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\n     */\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\n\n    /**\n     * @notice Derive the conduit associated with a given conduit key and\n     *         determine whether that conduit exists (i.e. whether it has been\n     *         deployed).\n     *\n     * @param conduitKey The conduit key used to derive the conduit.\n     *\n     * @return conduit The derived address of the conduit.\n     * @return exists  A boolean indicating whether the derived conduit has been\n     *                 deployed or not.\n     */\n    function getConduit(bytes32 conduitKey)\n        external\n        view\n        returns (address conduit, bool exists);\n\n    /**\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\n     *         current owner may set a new potential owner via\n     *         `transferOwnership` and that owner may then accept ownership of\n     *         the conduit in question via `acceptOwnership`.\n     *\n     * @param conduit The conduit for which to retrieve the potential owner.\n     *\n     * @return potentialOwner The potential owner, if any, for the conduit.\n     */\n    function getPotentialOwner(address conduit)\n        external\n        view\n        returns (address potentialOwner);\n\n    /**\n     * @notice Retrieve the status (either open or closed) of a given channel on\n     *         a conduit.\n     *\n     * @param conduit The conduit for which to retrieve the channel status.\n     * @param channel The channel for which to retrieve the status.\n     *\n     * @return isOpen The status of the channel on the given conduit.\n     */\n    function getChannelStatus(address conduit, address channel)\n        external\n        view\n        returns (bool isOpen);\n\n    /**\n     * @notice Retrieve the total number of open channels for a given conduit.\n     *\n     * @param conduit The conduit for which to retrieve the total channel count.\n     *\n     * @return totalChannels The total number of open channels for the conduit.\n     */\n    function getTotalChannels(address conduit)\n        external\n        view\n        returns (uint256 totalChannels);\n\n    /**\n     * @notice Retrieve an open channel at a specific index for a given conduit.\n     *         Note that the index of a channel can change as a result of other\n     *         channels being closed on the conduit.\n     *\n     * @param conduit      The conduit for which to retrieve the open channel.\n     * @param channelIndex The index of the channel in question.\n     *\n     * @return channel The open channel, if any, at the specified channel index.\n     */\n    function getChannel(address conduit, uint256 channelIndex)\n        external\n        view\n        returns (address channel);\n\n    /**\n     * @notice Retrieve all open channels for a given conduit. Note that calling\n     *         this function for a conduit with many channels will revert with\n     *         an out-of-gas error.\n     *\n     * @param conduit The conduit for which to retrieve open channels.\n     *\n     * @return channels An array of open channels on the given conduit.\n     */\n    function getChannels(address conduit)\n        external\n        view\n        returns (address[] memory channels);\n\n    /**\n     * @dev Retrieve the conduit creation code and runtime code hashes.\n     */\n    function getConduitCodeHashes()\n        external\n        view\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\n}\n"},"contracts/interfaces/ConsiderationEventsAndErrors.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\n/**\n * @title ConsiderationEventsAndErrors\n * @author 0age\n * @notice ConsiderationEventsAndErrors contains all events and errors.\n */\ninterface ConsiderationEventsAndErrors {\n\n    event OrderFulfilled(\n        bytes32 orderHash,\n        address indexed offerer,\n        uint256 shadowId\n    );\n\n    event OrderRepaid(\n        bytes32 orderHash,\n        uint256 payTimes,\n        bool finalized\n    );\n\n    event OrderBroken(\n        bytes32 orderHash,\n        address indexed offerer\n    );\n\n    /**\n     * @dev Emit an event whenever an order is successfully cancelled.\n     *\n     * @param orderHash The hash of the cancelled order.\n     * @param offerer   The offerer of the cancelled order.\n     */\n    event OrderCancelled(\n        bytes32 orderHash,\n        address indexed offerer\n    );\n\n    /**\n     * @dev Emit an event whenever an order is explicitly validated. Note that\n     *      this event will not be emitted on partial fills even though they do\n     *      validate the order as part of partial fulfillment.\n     *\n     * @param orderHash The hash of the validated order.\n     * @param offerer   The offerer of the validated order.\n     */\n    event OrderValidated(\n        bytes32 orderHash,\n        address indexed offerer\n    );\n\n    /**\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\n     *\n     * @param newCounter The new counter for the offerer.\n     * @param offerer  The offerer in question.\n     */\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\n\n    /**\n     * @dev Revert with an error when attempting to fill an order that has\n     *      already been fully filled.\n     *\n     * @param orderHash The order hash on which a fill was attempted.\n     */\n    error OrderAlreadyFilled(bytes32 orderHash);\n\n    error OrderAlreadyFinalized(bytes32 orderHash);\n\n    error OrderAlreadyStarted(bytes32 orderHash);\n\n    error OrderNotStarted(bytes32 orderHash);\n\n    /**\n     * @dev Revert with an error when attempting to fill an order outside the\n     *      specified start time and end time.\n     */\n    error InvalidTime();\n\n    /**\n     * @dev Revert with an error when attempting to fill an order referencing an\n     *      invalid conduit (i.e. one that has not been deployed).\n     */\n    error InvalidConduit(bytes32 conduitKey, address conduit);\n\n    /**\n     * @dev Revert with an error when an order is supplied for fulfillment with\n     *      a consideration array that is shorter than the original array.\n     */\n    error MissingOriginalConsiderationItems();\n\n    /**\n     * @dev Revert with an error when a call to a conduit fails with revert data\n     *      that is too expensive to return.\n     */\n    error InvalidCallToConduit(address conduit);\n\n    /**\n     * @dev Revert with an error if a consideration amount has not been fully\n     *      zeroed out after applying all fulfillments.\n     *\n     * @param orderIndex         The index of the order with the consideration\n     *                           item with a shortfall.\n     * @param considerationIndex The index of the consideration item on the\n     *                           order.\n     * @param shortfallAmount    The unfulfilled consideration amount.\n     */\n    error ConsiderationNotMet(\n        uint256 orderIndex,\n        uint256 considerationIndex,\n        uint256 shortfallAmount\n    );\n\n    /**\n     * @dev Revert with an error when insufficient ether is supplied as part of\n     *      msg.value when fulfilling orders.\n     */\n    error InsufficientEtherSupplied();\n\n    /**\n     * @dev Revert with an error when an ether transfer reverts.\n     */\n    error EtherTransferGenericFailure(address account, uint256 amount);\n\n    /**\n     * @dev Revert with an error when a partial fill is attempted on an order\n     *      that does not specify partial fill support in its order type.\n     */\n    error PartialFillsNotEnabledForOrder();\n\n    /**\n     * @dev Revert with an error when attempting to fill an order that has been\n     *      cancelled.\n     *\n     * @param orderHash The hash of the cancelled order.\n     */\n    error OrderIsCancelled(bytes32 orderHash);\n\n    /**\n     * @dev Revert with an error when attempting to fill a basic order that has\n     *      been partially filled.\n     *\n     * @param orderHash The hash of the partially used order.\n     */\n    error OrderPartiallyFilled(bytes32 orderHash);\n\n    /**\n     * @dev Revert with an error when attempting to cancel an order as a caller\n     *      other than the indicated offerer or zone.\n     */\n    error InvalidCanceller();\n\n    /**\n     * @dev Revert with an error when supplying a fraction with a value of zero\n     *      for the numerator or denominator, or one where the numerator exceeds\n     *      the denominator.\n     */\n    error BadFraction();\n\n    /**\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\n     *      non-payable basic order route or does not supply any callvalue to a\n     *      payable basic order route.\n     */\n    error InvalidMsgValue(uint256 value);\n\n    /**\n     * @dev Revert with an error when attempting to fill a basic order using\n     *      calldata not produced by default ABI encoding.\n     */\n    error InvalidBasicOrderParameterEncoding();\n\n    /**\n     * @dev Revert with an error when attempting to fulfill any number of\n     *      available orders when none are fulfillable.\n     */\n    error NoSpecifiedOrdersAvailable();\n\n    /**\n     * @dev Revert with an error when attempting to fulfill an order with an\n     *      offer for ETH outside of matching orders.\n     */\n    error InvalidNativeOfferItem();\n\n    error OrderNotValidated(bytes32 orderHash);\n\n    error OrderExpired(bytes32 orderHash);\n\n    error OrderNotExpired(bytes32 orderHash);\n\n    error OrderInvalidRepayParameters(bytes32 orderHash);\n\n    error InvalidOrderParameters();\n}\n"},"contracts/lib/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport { ReentrancyErrors } from \"../interfaces/ReentrancyErrors.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title ReentrancyGuard\n * @author 0age\n * @notice ReentrancyGuard contains a storage variable and related functionality\n *         for protecting against reentrancy.\n */\ncontract ReentrancyGuard is ReentrancyErrors {\n    // Prevent reentrant calls on protected functions.\n    uint256 private _reentrancyGuard;\n\n    /**\n     * @dev Initialize the reentrancy guard during deployment.\n     */\n    constructor() {\n        // Initialize the reentrancy guard in a cleared state.\n        _reentrancyGuard = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Internal function to ensure that the sentinel value for the\n     *      reentrancy guard is not currently set and, if not, to set the\n     *      sentinel value for the reentrancy guard.\n     */\n    function _setReentrancyGuard() internal {\n        // Ensure that the reentrancy guard is not already set.\n        _assertNonReentrant();\n\n        // Set the reentrancy guard.\n        _reentrancyGuard = _ENTERED;\n    }\n\n    /**\n     * @dev Internal function to unset the reentrancy guard sentinel value.\n     */\n    function _clearReentrancyGuard() internal {\n        // Clear the reentrancy guard.\n        _reentrancyGuard = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Internal view function to ensure that the sentinel value for the\n            reentrancy guard is not currently set.\n     */\n    function _assertNonReentrant() internal view {\n        // Ensure that the reentrancy guard is not currently set.\n        if (_reentrancyGuard != _NOT_ENTERED) {\n            revert NoReentrantCalls();\n        }\n    }\n}\n"},"contracts/interfaces/ReentrancyErrors.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\n/**\n * @title ReentrancyErrors\n * @author 0age\n * @notice ReentrancyErrors contains errors related to reentrancy.\n */\ninterface ReentrancyErrors {\n    /**\n     * @dev Revert with an error when a caller attempts to reenter a protected\n     *      function.\n     */\n    error NoReentrantCalls();\n}\n"},"contracts/interfaces/EIP1271Interface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\ninterface EIP1271Interface {\n    function isValidSignature(bytes32 digest, bytes calldata signature)\n        external\n        view\n        returns (bytes4);\n}"},"contracts/interfaces/SignatureVerificationErrors.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\n/**\n * @title SignatureVerificationErrors\n * @author 0age\n * @notice SignatureVerificationErrors contains all errors related to signature\n *         verification.\n */\ninterface SignatureVerificationErrors {\n    /**\n     * @dev Revert with an error when a signature that does not contain a v\n     *      value of 27 or 28 has been supplied.\n     *\n     * @param v The invalid v value.\n     */\n    error BadSignatureV(uint8 v);\n\n    /**\n     * @dev Revert with an error when the signer recovered by the supplied\n     *      signature does not match the offerer or an allowed EIP-1271 signer\n     *      as specified by the offerer in the event they are a contract.\n     */\n    error InvalidSigner();\n\n    /**\n     * @dev Revert with an error when a signer cannot be recovered from the\n     *      supplied signature.\n     */\n    error InvalidSignature();\n\n    /**\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\n     */\n    error BadContractSignature();\n}\n"},"contracts/lib/LowLevelHelpers.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title LowLevelHelpers\n * @author 0age\n * @notice LowLevelHelpers contains logic for performing various low-level\n *         operations.\n */\ncontract LowLevelHelpers {\n    /**\n     * @dev Internal view function to staticcall an arbitrary target with given\n     *      calldata. Note that no data is written to memory and no contract\n     *      size check is performed.\n     *\n     * @param target   The account to staticcall.\n     * @param callData The calldata to supply when staticcalling the target.\n     *\n     * @return success The status of the staticcall to the target.\n     */\n    function _staticcall(address target, bytes memory callData)\n        internal\n        view\n        returns (bool success)\n    {\n        assembly {\n            // Perform the staticcall.\n            success := staticcall(\n                gas(),\n                target,\n                add(callData, OneWord),\n                mload(callData),\n                0,\n                0\n            )\n        }\n    }\n\n    /**\n     * @dev Internal view function to revert and pass along the revert reason if\n     *      data was returned by the last call and that the size of that data\n     *      does not exceed the currently allocated memory size.\n     */\n    function _revertWithReasonIfOneIsReturned() internal view {\n        assembly {\n            // If it returned a message, bubble it up as long as sufficient gas\n            // remains to do so:\n            if returndatasize() {\n                // Ensure that sufficient gas is available to copy returndata\n                // while expanding memory where necessary. Start by computing\n                // the word size of returndata and allocated memory.\n                let returnDataWords := div(\n                    add(returndatasize(), AlmostOneWord),\n                    OneWord\n                )\n\n                // Note: use the free memory pointer in place of msize() to work\n                // around a Yul warning that prevents accessing msize directly\n                // when the IR pipeline is activated.\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\n\n                // Next, compute the cost of the returndatacopy.\n                let cost := mul(CostPerWord, returnDataWords)\n\n                // Then, compute cost of new memory allocation.\n                if gt(returnDataWords, msizeWords) {\n                    cost := add(\n                        cost,\n                        add(\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\n                            div(\n                                sub(\n                                    mul(returnDataWords, returnDataWords),\n                                    mul(msizeWords, msizeWords)\n                                ),\n                                MemoryExpansionCoefficient\n                            )\n                        )\n                    )\n                }\n\n                // Finally, add a small constant and compare to gas remaining;\n                // bubble up the revert data if enough gas is still available.\n                if lt(add(cost, ExtraGasBuffer), gas()) {\n                    // Copy returndata to memory; overwrite existing memory.\n                    returndatacopy(0, 0, returndatasize())\n\n                    // Revert, specifying memory region with copied returndata.\n                    revert(0, returndatasize())\n                }\n            }\n        }\n    }\n\n    /**\n     * @dev Internal pure function to determine if the first word of returndata\n     *      matches an expected magic value.\n     *\n     * @param expected The expected magic value.\n     *\n     * @return A boolean indicating whether the expected value matches the one\n     *         located in the first word of returndata.\n     */\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\n        // Declare a variable for the value held by the return data buffer.\n        bytes4 result;\n\n        // Utilize assembly in order to read directly from returndata buffer.\n        assembly {\n            // Only put result on stack if return data is exactly one word.\n            if eq(returndatasize(), OneWord) {\n                // Copy the word directly from return data into scratch space.\n                returndatacopy(0, 0, OneWord)\n\n                // Take value from scratch space and place it on the stack.\n                result := mload(0)\n            }\n        }\n\n        // Return a boolean indicating whether expected and located value match.\n        return result != expected;\n    }\n}\n"},"contracts/lib/TokenTransferrerConstants.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\n/*\n * -------------------------- Disambiguation & Other Notes ---------------------\n *    - The term \"head\" is used as it is in the documentation for ABI encoding,\n *      but only in reference to dynamic types, i.e. it always refers to the\n *      offset or pointer to the body of a dynamic type. In calldata, the head\n *      is always an offset (relative to the parent object), while in memory,\n *      the head is always the pointer to the body. More information found here:\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\n *        - Note that the length of an array is separate from and precedes the\n *          head of the array.\n *\n *    - The term \"body\" is used in place of the term \"head\" used in the ABI\n *      documentation. It refers to the start of the data for a dynamic type,\n *      e.g. the first word of a struct or the first word of the first element\n *      in an array.\n *\n *    - The term \"pointer\" is used to describe the absolute position of a value\n *      and never an offset relative to another value.\n *        - The suffix \"_ptr\" refers to a memory pointer.\n *        - The suffix \"_cdPtr\" refers to a calldata pointer.\n *\n *    - The term \"offset\" is used to describe the position of a value relative\n *      to some parent value. For example, OrderParameters_conduit_offset is the\n *      offset to the \"conduit\" value in the OrderParameters struct relative to\n *      the start of the body.\n *        - Note: Offsets are used to derive pointers.\n *\n *    - Some structs have pointers defined for all of their fields in this file.\n *      Lines which are commented out are fields that are not used in the\n *      codebase but have been left in for readability.\n */\n\nuint256 constant AlmostOneWord = 0x1f;\nuint256 constant OneWord = 0x20;\nuint256 constant TwoWords = 0x40;\nuint256 constant ThreeWords = 0x60;\n\nuint256 constant FreeMemoryPointerSlot = 0x40;\nuint256 constant ZeroSlot = 0x60;\nuint256 constant DefaultFreeMemoryPointer = 0x80;\n\nuint256 constant Slot0x80 = 0x80;\nuint256 constant Slot0xA0 = 0xa0;\nuint256 constant Slot0xC0 = 0xc0;\n\n// abi.encodeWithSignature(\"transferFrom(address,address,uint256)\")\nuint256 constant ERC20_transferFrom_signature = (\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\n);\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\n\n// abi.encodeWithSignature(\"transfer(address,uint256)\")\nuint256 constant ERC20_transfer_signature = (\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\n);\nuint256 constant ERC20_transfer_sig_ptr = 0x0;\nuint256 constant ERC20_transfer_to_ptr = 0x04;\nuint256 constant ERC20_transfer_amount_ptr = 0x24;\nuint256 constant ERC20_transfer_length = 0x44; // 4 + 32 * 2 == 68\n\n// abi.encodeWithSignature(\n//     \"safeTransferFrom(address,address,uint256,uint256,bytes)\"\n// )\nuint256 constant ERC1155_safeTransferFrom_signature = (\n    0xf242432a00000000000000000000000000000000000000000000000000000000\n);\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\n\n// abi.encodeWithSignature(\n//     \"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\"\n// )\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\n);\n\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\n);\n\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\n\n// abi.encodeWithSignature(\"NoContract(address)\")\nuint256 constant NoContract_error_signature = (\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\n);\nuint256 constant NoContract_error_sig_ptr = 0x0;\nuint256 constant NoContract_error_token_ptr = 0x4;\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\n\n// abi.encodeWithSignature(\n//     \"TokenTransferGenericFailure(address,address,address,uint256,uint256)\"\n// )\nuint256 constant TokenTransferGenericFailure_error_signature = (\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\n);\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\n\n// 4 + 32 * 5 == 164\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\n\n// abi.encodeWithSignature(\n//     \"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\"\n// )\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\n    0x9889192300000000000000000000000000000000000000000000000000000000\n);\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\n\n// 4 + 32 * 4 == 132\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\n\nuint256 constant ExtraGasBuffer = 0x20;\nuint256 constant CostPerWord = 3;\nuint256 constant MemoryExpansionCoefficient = 0x200;\n\n// Values are offset by 32 bytes in order to write the token to the beginning\n// in the event of a revert\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x64;\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0xc4;\nuint256 constant BatchTransfer1155Params_calldata_baseSize = 0xc4;\n\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\n\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\n\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\n\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\n\n// Note: abbreviated version of above constant to adhere to line length limit.\nuint256 constant ConduitBatchTransfer_amounts_head_offset = 0x80;\n\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\n);\n\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\n    0xafc445e200000000000000000000000000000000000000000000000000000000\n);\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\nuint256 constant ERC1155BatchTransferGenericFailure_ids_offset = 0xc0;\n"},"erc721a/contracts/extensions/IERC4907A.sol":{"content":"// SPDX-License-Identifier: MIT\n// ERC721A Contracts v4.2.3\n// Creator: Chiru Labs\n\npragma solidity ^0.8.4;\n\nimport '../IERC721A.sol';\n\n/**\n * @dev Interface of ERC4907A.\n */\ninterface IERC4907A is IERC721A {\n    /**\n     * The caller must own the token or be an approved operator.\n     */\n    error SetUserCallerNotOwnerNorApproved();\n\n    /**\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\n     * The zero address for user indicates that there is no user address.\n     */\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\n\n    /**\n     * @dev Sets the `user` and `expires` for `tokenId`.\n     * The zero address indicates there is no user.\n     *\n     * Requirements:\n     *\n     * - The caller must own `tokenId` or be an approved operator.\n     */\n    function setUser(\n        uint256 tokenId,\n        address user,\n        uint64 expires\n    ) external;\n\n    /**\n     * @dev Returns the user address for `tokenId`.\n     * The zero address indicates that there is no user or if the user is expired.\n     */\n    function userOf(uint256 tokenId) external view returns (address);\n\n    /**\n     * @dev Returns the user's expires of `tokenId`.\n     */\n    function userExpires(uint256 tokenId) external view returns (uint256);\n}\n"},"erc721a/contracts/IERC721A.sol":{"content":"// SPDX-License-Identifier: MIT\n// ERC721A Contracts v4.2.3\n// Creator: Chiru Labs\n\npragma solidity ^0.8.4;\n\n/**\n * @dev Interface of ERC721A.\n */\ninterface IERC721A {\n    /**\n     * The caller must own the token or be an approved operator.\n     */\n    error ApprovalCallerNotOwnerNorApproved();\n\n    /**\n     * The token does not exist.\n     */\n    error ApprovalQueryForNonexistentToken();\n\n    /**\n     * Cannot query the balance for the zero address.\n     */\n    error BalanceQueryForZeroAddress();\n\n    /**\n     * Cannot mint to the zero address.\n     */\n    error MintToZeroAddress();\n\n    /**\n     * The quantity of tokens minted must be more than zero.\n     */\n    error MintZeroQuantity();\n\n    /**\n     * The token does not exist.\n     */\n    error OwnerQueryForNonexistentToken();\n\n    /**\n     * The caller must own the token or be an approved operator.\n     */\n    error TransferCallerNotOwnerNorApproved();\n\n    /**\n     * The token must be owned by `from`.\n     */\n    error TransferFromIncorrectOwner();\n\n    /**\n     * Cannot safely transfer to a contract that does not implement the\n     * ERC721Receiver interface.\n     */\n    error TransferToNonERC721ReceiverImplementer();\n\n    /**\n     * Cannot transfer to the zero address.\n     */\n    error TransferToZeroAddress();\n\n    /**\n     * The token does not exist.\n     */\n    error URIQueryForNonexistentToken();\n\n    /**\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\n     */\n    error MintERC2309QuantityExceedsLimit();\n\n    /**\n     * The `extraData` cannot be set on an unintialized ownership slot.\n     */\n    error OwnershipNotInitializedForExtraData();\n\n    // =============================================================\n    //                            STRUCTS\n    // =============================================================\n\n    struct TokenOwnership {\n        // The address of the owner.\n        address addr;\n        // Stores the start time of ownership with minimal overhead for tokenomics.\n        uint64 startTimestamp;\n        // Whether the token has been burned.\n        bool burned;\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\n        uint24 extraData;\n    }\n\n    // =============================================================\n    //                         TOKEN COUNTERS\n    // =============================================================\n\n    /**\n     * @dev Returns the total number of tokens in existence.\n     * Burned tokens will reduce the count.\n     * To get the total number of tokens minted, please see {_totalMinted}.\n     */\n    function totalSupply() external view returns (uint256);\n\n    // =============================================================\n    //                            IERC165\n    // =============================================================\n\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n\n    // =============================================================\n    //                            IERC721\n    // =============================================================\n\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\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\n     * 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 be have been allowed to move\n     * this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) external payable;\n\n    /**\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external payable;\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\n     * whenever possible.\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\n     * by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external payable;\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\n     * 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 payable;\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom}\n     * for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the caller.\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    // =============================================================\n    //                        IERC721Metadata\n    // =============================================================\n\n    /**\n     * @dev Returns the token collection name.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the token collection symbol.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n\n    // =============================================================\n    //                           IERC2309\n    // =============================================================\n\n    /**\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\n     * (inclusive) is transferred from `from` to `to`, as defined in the\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\n     *\n     * See {_mintERC2309} for more details.\n     */\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\n}\n"},"erc721a/contracts/ERC721A.sol":{"content":"// SPDX-License-Identifier: MIT\n// ERC721A Contracts v4.2.3\n// Creator: Chiru Labs\n\npragma solidity ^0.8.4;\n\nimport './IERC721A.sol';\n\n/**\n * @dev Interface of ERC721 token receiver.\n */\ninterface ERC721A__IERC721Receiver {\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n\n/**\n * @title ERC721A\n *\n * @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)\n * Non-Fungible Token Standard, including the Metadata extension.\n * Optimized for lower gas during batch mints.\n *\n * Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...)\n * starting from `_startTokenId()`.\n *\n * Assumptions:\n *\n * - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply.\n * - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).\n */\ncontract ERC721A is IERC721A {\n    // Bypass for a `--via-ir` bug (https://github.com/chiru-labs/ERC721A/pull/364).\n    struct TokenApprovalRef {\n        address value;\n    }\n\n    // =============================================================\n    //                           CONSTANTS\n    // =============================================================\n\n    // Mask of an entry in packed address data.\n    uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;\n\n    // The bit position of `numberMinted` in packed address data.\n    uint256 private constant _BITPOS_NUMBER_MINTED = 64;\n\n    // The bit position of `numberBurned` in packed address data.\n    uint256 private constant _BITPOS_NUMBER_BURNED = 128;\n\n    // The bit position of `aux` in packed address data.\n    uint256 private constant _BITPOS_AUX = 192;\n\n    // Mask of all 256 bits in packed address data except the 64 bits for `aux`.\n    uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;\n\n    // The bit position of `startTimestamp` in packed ownership.\n    uint256 private constant _BITPOS_START_TIMESTAMP = 160;\n\n    // The bit mask of the `burned` bit in packed ownership.\n    uint256 private constant _BITMASK_BURNED = 1 << 224;\n\n    // The bit position of the `nextInitialized` bit in packed ownership.\n    uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;\n\n    // The bit mask of the `nextInitialized` bit in packed ownership.\n    uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;\n\n    // The bit position of `extraData` in packed ownership.\n    uint256 private constant _BITPOS_EXTRA_DATA = 232;\n\n    // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`.\n    uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1;\n\n    // The mask of the lower 160 bits for addresses.\n    uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;\n\n    // The maximum `quantity` that can be minted with {_mintERC2309}.\n    // This limit is to prevent overflows on the address data entries.\n    // For a limit of 5000, a total of 3.689e15 calls to {_mintERC2309}\n    // is required to cause an overflow, which is unrealistic.\n    uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000;\n\n    // The `Transfer` event signature is given by:\n    // `keccak256(bytes(\"Transfer(address,address,uint256)\"))`.\n    bytes32 private constant _TRANSFER_EVENT_SIGNATURE =\n        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;\n\n    // =============================================================\n    //                            STORAGE\n    // =============================================================\n\n    // The next token ID to be minted.\n    uint256 private _currentIndex;\n\n    // The number of tokens burned.\n    uint256 private _burnCounter;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    // Mapping from token ID to ownership details\n    // An empty struct value does not necessarily mean the token is unowned.\n    // See {_packedOwnershipOf} implementation for details.\n    //\n    // Bits Layout:\n    // - [0..159]   `addr`\n    // - [160..223] `startTimestamp`\n    // - [224]      `burned`\n    // - [225]      `nextInitialized`\n    // - [232..255] `extraData`\n    mapping(uint256 => uint256) private _packedOwnerships;\n\n    // Mapping owner address to address data.\n    //\n    // Bits Layout:\n    // - [0..63]    `balance`\n    // - [64..127]  `numberMinted`\n    // - [128..191] `numberBurned`\n    // - [192..255] `aux`\n    mapping(address => uint256) private _packedAddressData;\n\n    // Mapping from token ID to approved address.\n    mapping(uint256 => TokenApprovalRef) private _tokenApprovals;\n\n    // Mapping from owner to operator approvals\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    // =============================================================\n    //                          CONSTRUCTOR\n    // =============================================================\n\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n        _currentIndex = _startTokenId();\n    }\n\n    // =============================================================\n    //                   TOKEN COUNTING OPERATIONS\n    // =============================================================\n\n    /**\n     * @dev Returns the starting token ID.\n     * To change the starting token ID, please override this function.\n     */\n    function _startTokenId() internal view virtual returns (uint256) {\n        return 0;\n    }\n\n    /**\n     * @dev Returns the next token ID to be minted.\n     */\n    function _nextTokenId() internal view virtual returns (uint256) {\n        return _currentIndex;\n    }\n\n    /**\n     * @dev Returns the total number of tokens in existence.\n     * Burned tokens will reduce the count.\n     * To get the total number of tokens minted, please see {_totalMinted}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        // Counter underflow is impossible as _burnCounter cannot be incremented\n        // more than `_currentIndex - _startTokenId()` times.\n        unchecked {\n            return _currentIndex - _burnCounter - _startTokenId();\n        }\n    }\n\n    /**\n     * @dev Returns the total amount of tokens minted in the contract.\n     */\n    function _totalMinted() internal view virtual returns (uint256) {\n        // Counter underflow is impossible as `_currentIndex` does not decrement,\n        // and it is initialized to `_startTokenId()`.\n        unchecked {\n            return _currentIndex - _startTokenId();\n        }\n    }\n\n    /**\n     * @dev Returns the total number of tokens burned.\n     */\n    function _totalBurned() internal view virtual returns (uint256) {\n        return _burnCounter;\n    }\n\n    // =============================================================\n    //                    ADDRESS DATA OPERATIONS\n    // =============================================================\n\n    /**\n     * @dev Returns the number of tokens in `owner`'s account.\n     */\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        if (owner == address(0)) revert BalanceQueryForZeroAddress();\n        return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY;\n    }\n\n    /**\n     * Returns the number of tokens minted by `owner`.\n     */\n    function _numberMinted(address owner) internal view returns (uint256) {\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY;\n    }\n\n    /**\n     * Returns the number of tokens burned by or on behalf of `owner`.\n     */\n    function _numberBurned(address owner) internal view returns (uint256) {\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY;\n    }\n\n    /**\n     * Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\n     */\n    function _getAux(address owner) internal view returns (uint64) {\n        return uint64(_packedAddressData[owner] >> _BITPOS_AUX);\n    }\n\n    /**\n     * Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\n     * If there are multiple variables, please pack them into a uint64.\n     */\n    function _setAux(address owner, uint64 aux) internal virtual {\n        uint256 packed = _packedAddressData[owner];\n        uint256 auxCasted;\n        // Cast `aux` with assembly to avoid redundant masking.\n        assembly {\n            auxCasted := aux\n        }\n        packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX);\n        _packedAddressData[owner] = packed;\n    }\n\n    // =============================================================\n    //                            IERC165\n    // =============================================================\n\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        // The interface IDs are constants representing the first 4 bytes\n        // of the XOR of all function selectors in the interface.\n        // See: [ERC165](https://eips.ethereum.org/EIPS/eip-165)\n        // (e.g. `bytes4(i.functionA.selector ^ i.functionB.selector ^ ...)`)\n        return\n            interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165.\n            interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721.\n            interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata.\n    }\n\n    // =============================================================\n    //                        IERC721Metadata\n    // =============================================================\n\n    /**\n     * @dev Returns the token collection name.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the token collection symbol.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();\n\n        string memory baseURI = _baseURI();\n        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';\n    }\n\n    /**\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n     * by default, it can be overridden in child contracts.\n     */\n    function _baseURI() internal view virtual returns (string memory) {\n        return '';\n    }\n\n    // =============================================================\n    //                     OWNERSHIPS OPERATIONS\n    // =============================================================\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) public view virtual override returns (address) {\n        return address(uint160(_packedOwnershipOf(tokenId)));\n    }\n\n    /**\n     * @dev Gas spent here starts off proportional to the maximum mint batch size.\n     * It gradually moves to O(1) as tokens get transferred around over time.\n     */\n    function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) {\n        return _unpackedOwnership(_packedOwnershipOf(tokenId));\n    }\n\n    /**\n     * @dev Returns the unpacked `TokenOwnership` struct at `index`.\n     */\n    function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) {\n        return _unpackedOwnership(_packedOwnerships[index]);\n    }\n\n    /**\n     * @dev Initializes the ownership slot minted at `index` for efficiency purposes.\n     */\n    function _initializeOwnershipAt(uint256 index) internal virtual {\n        if (_packedOwnerships[index] == 0) {\n            _packedOwnerships[index] = _packedOwnershipOf(index);\n        }\n    }\n\n    /**\n     * Returns the packed ownership data of `tokenId`.\n     */\n    function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {\n        uint256 curr = tokenId;\n\n        unchecked {\n            if (_startTokenId() <= curr)\n                if (curr < _currentIndex) {\n                    uint256 packed = _packedOwnerships[curr];\n                    // If not burned.\n                    if (packed & _BITMASK_BURNED == 0) {\n                        // Invariant:\n                        // There will always be an initialized ownership slot\n                        // (i.e. `ownership.addr != address(0) && ownership.burned == false`)\n                        // before an unintialized ownership slot\n                        // (i.e. `ownership.addr == address(0) && ownership.burned == false`)\n                        // Hence, `curr` will not underflow.\n                        //\n                        // We can directly compare the packed value.\n                        // If the address is zero, packed will be zero.\n                        while (packed == 0) {\n                            packed = _packedOwnerships[--curr];\n                        }\n                        return packed;\n                    }\n                }\n        }\n        revert OwnerQueryForNonexistentToken();\n    }\n\n    /**\n     * @dev Returns the unpacked `TokenOwnership` struct from `packed`.\n     */\n    function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {\n        ownership.addr = address(uint160(packed));\n        ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP);\n        ownership.burned = packed & _BITMASK_BURNED != 0;\n        ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA);\n    }\n\n    /**\n     * @dev Packs ownership data into a single uint256.\n     */\n    function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) {\n        assembly {\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\n            owner := and(owner, _BITMASK_ADDRESS)\n            // `owner | (block.timestamp << _BITPOS_START_TIMESTAMP) | flags`.\n            result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags))\n        }\n    }\n\n    /**\n     * @dev Returns the `nextInitialized` flag set if `quantity` equals 1.\n     */\n    function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) {\n        // For branchless setting of the `nextInitialized` flag.\n        assembly {\n            // `(quantity == 1) << _BITPOS_NEXT_INITIALIZED`.\n            result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1))\n        }\n    }\n\n    // =============================================================\n    //                      APPROVAL OPERATIONS\n    // =============================================================\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\n     * 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) public payable virtual override {\n        address owner = ownerOf(tokenId);\n\n        if (_msgSenderERC721A() != owner)\n            if (!isApprovedForAll(owner, _msgSenderERC721A())) {\n                revert ApprovalCallerNotOwnerNorApproved();\n            }\n\n        _tokenApprovals[tokenId].value = to;\n        emit Approval(owner, to, tokenId);\n    }\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) public view virtual override returns (address) {\n        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();\n\n        return _tokenApprovals[tokenId].value;\n    }\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom}\n     * for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the caller.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        _operatorApprovals[_msgSenderERC721A()][operator] = approved;\n        emit ApprovalForAll(_msgSenderERC721A(), operator, approved);\n    }\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) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted. See {_mint}.\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return\n            _startTokenId() <= tokenId &&\n            tokenId < _currentIndex && // If within bounds,\n            _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.\n    }\n\n    /**\n     * @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.\n     */\n    function _isSenderApprovedOrOwner(\n        address approvedAddress,\n        address owner,\n        address msgSender\n    ) private pure returns (bool result) {\n        assembly {\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\n            owner := and(owner, _BITMASK_ADDRESS)\n            // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.\n            msgSender := and(msgSender, _BITMASK_ADDRESS)\n            // `msgSender == owner || msgSender == approvedAddress`.\n            result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))\n        }\n    }\n\n    /**\n     * @dev Returns the storage slot and value for the approved address of `tokenId`.\n     */\n    function _getApprovedSlotAndAddress(uint256 tokenId)\n        private\n        view\n        returns (uint256 approvedAddressSlot, address approvedAddress)\n    {\n        TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId];\n        // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId].value`.\n        assembly {\n            approvedAddressSlot := tokenApproval.slot\n            approvedAddress := sload(approvedAddressSlot)\n        }\n    }\n\n    // =============================================================\n    //                      TRANSFER OPERATIONS\n    // =============================================================\n\n    /**\n     * @dev Transfers `tokenId` 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 be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token\n     * by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public payable virtual override {\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\n\n        if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner();\n\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\n\n        // The nested ifs save around 20+ gas over a compound boolean condition.\n        if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\n            if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\n\n        if (to == address(0)) revert TransferToZeroAddress();\n\n        _beforeTokenTransfers(from, to, tokenId, 1);\n\n        // Clear approvals from the previous owner.\n        assembly {\n            if approvedAddress {\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\n                sstore(approvedAddressSlot, 0)\n            }\n        }\n\n        // Underflow of the sender's balance is impossible because we check for\n        // ownership above and the recipient's balance can't realistically overflow.\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\n        unchecked {\n            // We can directly increment and decrement the balances.\n            --_packedAddressData[from]; // Updates: `balance -= 1`.\n            ++_packedAddressData[to]; // Updates: `balance += 1`.\n\n            // Updates:\n            // - `address` to the next owner.\n            // - `startTimestamp` to the timestamp of transfering.\n            // - `burned` to `false`.\n            // - `nextInitialized` to `true`.\n            _packedOwnerships[tokenId] = _packOwnershipData(\n                to,\n                _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked)\n            );\n\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\n                uint256 nextTokenId = tokenId + 1;\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\n                if (_packedOwnerships[nextTokenId] == 0) {\n                    // If the next slot is within bounds.\n                    if (nextTokenId != _currentIndex) {\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\n                    }\n                }\n            }\n        }\n\n        emit Transfer(from, to, tokenId);\n        _afterTokenTransfers(from, to, tokenId, 1);\n    }\n\n    /**\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public payable virtual override {\n        safeTransferFrom(from, to, tokenId, '');\n    }\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\n     * by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) public payable virtual override {\n        transferFrom(from, to, tokenId);\n        if (to.code.length != 0)\n            if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {\n                revert TransferToNonERC721ReceiverImplementer();\n            }\n    }\n\n    /**\n     * @dev Hook that is called before a set of serially-ordered token IDs\n     * are about to be transferred. This includes minting.\n     * And also called before burning one token.\n     *\n     * `startTokenId` - the first token ID to be transferred.\n     * `quantity` - the amount to be transferred.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` will be minted for `to`.\n     * - When `to` is zero, `tokenId` will be burned by `from`.\n     * - `from` and `to` are never both zero.\n     */\n    function _beforeTokenTransfers(\n        address from,\n        address to,\n        uint256 startTokenId,\n        uint256 quantity\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after a set of serially-ordered token IDs\n     * have been transferred. This includes minting.\n     * And also called after one token has been burned.\n     *\n     * `startTokenId` - the first token ID to be transferred.\n     * `quantity` - the amount to be transferred.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` has been minted for `to`.\n     * - When `to` is zero, `tokenId` has been burned by `from`.\n     * - `from` and `to` are never both zero.\n     */\n    function _afterTokenTransfers(\n        address from,\n        address to,\n        uint256 startTokenId,\n        uint256 quantity\n    ) internal virtual {}\n\n    /**\n     * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract.\n     *\n     * `from` - Previous owner of the given token ID.\n     * `to` - Target address that will receive the token.\n     * `tokenId` - Token ID to be transferred.\n     * `_data` - Optional data to send along with the call.\n     *\n     * Returns whether the call correctly returned the expected magic value.\n     */\n    function _checkContractOnERC721Received(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) private returns (bool) {\n        try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (\n            bytes4 retval\n        ) {\n            return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;\n        } catch (bytes memory reason) {\n            if (reason.length == 0) {\n                revert TransferToNonERC721ReceiverImplementer();\n            } else {\n                assembly {\n                    revert(add(32, reason), mload(reason))\n                }\n            }\n        }\n    }\n\n    // =============================================================\n    //                        MINT OPERATIONS\n    // =============================================================\n\n    /**\n     * @dev Mints `quantity` tokens and transfers them to `to`.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `quantity` must be greater than 0.\n     *\n     * Emits a {Transfer} event for each mint.\n     */\n    function _mint(address to, uint256 quantity) internal virtual {\n        uint256 startTokenId = _currentIndex;\n        if (quantity == 0) revert MintZeroQuantity();\n\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\n\n        // Overflows are incredibly unrealistic.\n        // `balance` and `numberMinted` have a maximum limit of 2**64.\n        // `tokenId` has a maximum limit of 2**256.\n        unchecked {\n            // Updates:\n            // - `balance += quantity`.\n            // - `numberMinted += quantity`.\n            //\n            // We can directly add to the `balance` and `numberMinted`.\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\n\n            // Updates:\n            // - `address` to the owner.\n            // - `startTimestamp` to the timestamp of minting.\n            // - `burned` to `false`.\n            // - `nextInitialized` to `quantity == 1`.\n            _packedOwnerships[startTokenId] = _packOwnershipData(\n                to,\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\n            );\n\n            uint256 toMasked;\n            uint256 end = startTokenId + quantity;\n\n            // Use assembly to loop and emit the `Transfer` event for gas savings.\n            // The duplicated `log4` removes an extra check and reduces stack juggling.\n            // The assembly, together with the surrounding Solidity code, have been\n            // delicately arranged to nudge the compiler into producing optimized opcodes.\n            assembly {\n                // Mask `to` to the lower 160 bits, in case the upper bits somehow aren't clean.\n                toMasked := and(to, _BITMASK_ADDRESS)\n                // Emit the `Transfer` event.\n                log4(\n                    0, // Start of data (0, since no data).\n                    0, // End of data (0, since no data).\n                    _TRANSFER_EVENT_SIGNATURE, // Signature.\n                    0, // `address(0)`.\n                    toMasked, // `to`.\n                    startTokenId // `tokenId`.\n                )\n\n                // The `iszero(eq(,))` check ensures that large values of `quantity`\n                // that overflows uint256 will make the loop run out of gas.\n                // The compiler will optimize the `iszero` away for performance.\n                for {\n                    let tokenId := add(startTokenId, 1)\n                } iszero(eq(tokenId, end)) {\n                    tokenId := add(tokenId, 1)\n                } {\n                    // Emit the `Transfer` event. Similar to above.\n                    log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)\n                }\n            }\n            if (toMasked == 0) revert MintToZeroAddress();\n\n            _currentIndex = end;\n        }\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\n    }\n\n    /**\n     * @dev Mints `quantity` tokens and transfers them to `to`.\n     *\n     * This function is intended for efficient minting only during contract creation.\n     *\n     * It emits only one {ConsecutiveTransfer} as defined in\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309),\n     * instead of a sequence of {Transfer} event(s).\n     *\n     * Calling this function outside of contract creation WILL make your contract\n     * non-compliant with the ERC721 standard.\n     * For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309\n     * {ConsecutiveTransfer} event is only permissible during contract creation.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `quantity` must be greater than 0.\n     *\n     * Emits a {ConsecutiveTransfer} event.\n     */\n    function _mintERC2309(address to, uint256 quantity) internal virtual {\n        uint256 startTokenId = _currentIndex;\n        if (to == address(0)) revert MintToZeroAddress();\n        if (quantity == 0) revert MintZeroQuantity();\n        if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit();\n\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\n\n        // Overflows are unrealistic due to the above check for `quantity` to be below the limit.\n        unchecked {\n            // Updates:\n            // - `balance += quantity`.\n            // - `numberMinted += quantity`.\n            //\n            // We can directly add to the `balance` and `numberMinted`.\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\n\n            // Updates:\n            // - `address` to the owner.\n            // - `startTimestamp` to the timestamp of minting.\n            // - `burned` to `false`.\n            // - `nextInitialized` to `quantity == 1`.\n            _packedOwnerships[startTokenId] = _packOwnershipData(\n                to,\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\n            );\n\n            emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to);\n\n            _currentIndex = startTokenId + quantity;\n        }\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\n    }\n\n    /**\n     * @dev Safely mints `quantity` tokens and transfers them to `to`.\n     *\n     * Requirements:\n     *\n     * - If `to` refers to a smart contract, it must implement\n     * {IERC721Receiver-onERC721Received}, which is called for each safe transfer.\n     * - `quantity` must be greater than 0.\n     *\n     * See {_mint}.\n     *\n     * Emits a {Transfer} event for each mint.\n     */\n    function _safeMint(\n        address to,\n        uint256 quantity,\n        bytes memory _data\n    ) internal virtual {\n        _mint(to, quantity);\n\n        unchecked {\n            if (to.code.length != 0) {\n                uint256 end = _currentIndex;\n                uint256 index = end - quantity;\n                do {\n                    if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {\n                        revert TransferToNonERC721ReceiverImplementer();\n                    }\n                } while (index < end);\n                // Reentrancy protection.\n                if (_currentIndex != end) revert();\n            }\n        }\n    }\n\n    /**\n     * @dev Equivalent to `_safeMint(to, quantity, '')`.\n     */\n    function _safeMint(address to, uint256 quantity) internal virtual {\n        _safeMint(to, quantity, '');\n    }\n\n    // =============================================================\n    //                        BURN OPERATIONS\n    // =============================================================\n\n    /**\n     * @dev Equivalent to `_burn(tokenId, false)`.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        _burn(tokenId, false);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId, bool approvalCheck) internal virtual {\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\n\n        address from = address(uint160(prevOwnershipPacked));\n\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\n\n        if (approvalCheck) {\n            // The nested ifs save around 20+ gas over a compound boolean condition.\n            if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\n                if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\n        }\n\n        _beforeTokenTransfers(from, address(0), tokenId, 1);\n\n        // Clear approvals from the previous owner.\n        assembly {\n            if approvedAddress {\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\n                sstore(approvedAddressSlot, 0)\n            }\n        }\n\n        // Underflow of the sender's balance is impossible because we check for\n        // ownership above and the recipient's balance can't realistically overflow.\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\n        unchecked {\n            // Updates:\n            // - `balance -= 1`.\n            // - `numberBurned += 1`.\n            //\n            // We can directly decrement the balance, and increment the number burned.\n            // This is equivalent to `packed -= 1; packed += 1 << _BITPOS_NUMBER_BURNED;`.\n            _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1;\n\n            // Updates:\n            // - `address` to the last owner.\n            // - `startTimestamp` to the timestamp of burning.\n            // - `burned` to `true`.\n            // - `nextInitialized` to `true`.\n            _packedOwnerships[tokenId] = _packOwnershipData(\n                from,\n                (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked)\n            );\n\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\n                uint256 nextTokenId = tokenId + 1;\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\n                if (_packedOwnerships[nextTokenId] == 0) {\n                    // If the next slot is within bounds.\n                    if (nextTokenId != _currentIndex) {\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\n                    }\n                }\n            }\n        }\n\n        emit Transfer(from, address(0), tokenId);\n        _afterTokenTransfers(from, address(0), tokenId, 1);\n\n        // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times.\n        unchecked {\n            _burnCounter++;\n        }\n    }\n\n    // =============================================================\n    //                     EXTRA DATA OPERATIONS\n    // =============================================================\n\n    /**\n     * @dev Directly sets the extra data for the ownership data `index`.\n     */\n    function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual {\n        uint256 packed = _packedOwnerships[index];\n        if (packed == 0) revert OwnershipNotInitializedForExtraData();\n        uint256 extraDataCasted;\n        // Cast `extraData` with assembly to avoid redundant masking.\n        assembly {\n            extraDataCasted := extraData\n        }\n        packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA);\n        _packedOwnerships[index] = packed;\n    }\n\n    /**\n     * @dev Called during each token transfer to set the 24bit `extraData` field.\n     * Intended to be overridden by the cosumer contract.\n     *\n     * `previousExtraData` - the value of `extraData` before transfer.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` will be minted for `to`.\n     * - When `to` is zero, `tokenId` will be burned by `from`.\n     * - `from` and `to` are never both zero.\n     */\n    function _extraData(\n        address from,\n        address to,\n        uint24 previousExtraData\n    ) internal view virtual returns (uint24) {}\n\n    /**\n     * @dev Returns the next extra data for the packed ownership data.\n     * The returned result is shifted into position.\n     */\n    function _nextExtraData(\n        address from,\n        address to,\n        uint256 prevOwnershipPacked\n    ) private view returns (uint256) {\n        uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA);\n        return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA;\n    }\n\n    // =============================================================\n    //                       OTHER OPERATIONS\n    // =============================================================\n\n    /**\n     * @dev Returns the message sender (defaults to `msg.sender`).\n     *\n     * If you are writing GSN compatible contracts, you need to override this function.\n     */\n    function _msgSenderERC721A() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    /**\n     * @dev Converts a uint256 to its ASCII string decimal representation.\n     */\n    function _toString(uint256 value) internal pure virtual returns (string memory str) {\n        assembly {\n            // The maximum value of a uint256 contains 78 digits (1 byte per digit), but\n            // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.\n            // We will need 1 word for the trailing zeros padding, 1 word for the length,\n            // and 3 words for a maximum of 78 digits. Total: 5 * 0x20 = 0xa0.\n            let m := add(mload(0x40), 0xa0)\n            // Update the free memory pointer to allocate.\n            mstore(0x40, m)\n            // Assign the `str` to the end.\n            str := sub(m, 0x20)\n            // Zeroize the slot after the string.\n            mstore(str, 0)\n\n            // Cache the end of the memory to calculate the length later.\n            let end := str\n\n            // We write the string from rightmost digit to leftmost digit.\n            // The following is essentially a do-while loop that also handles the zero case.\n            // prettier-ignore\n            for { let temp := value } 1 {} {\n                str := sub(str, 1)\n                // Write the character to the pointer.\n                // The ASCII index of the '0' character is 48.\n                mstore8(str, add(48, mod(temp, 10)))\n                // Keep dividing `temp` until zero.\n                temp := div(temp, 10)\n                // prettier-ignore\n                if iszero(temp) { break }\n            }\n\n            let length := sub(end, str)\n            // Move the pointer 32 bytes leftwards to make room for the length.\n            str := sub(str, 0x20)\n            // Store the length.\n            mstore(str, length)\n        }\n    }\n}\n"},"erc721a/contracts/extensions/ERC4907A.sol":{"content":"// SPDX-License-Identifier: MIT\n// ERC721A Contracts v4.2.3\n// Creator: Chiru Labs\n\npragma solidity ^0.8.4;\n\nimport './IERC4907A.sol';\nimport '../ERC721A.sol';\n\n/**\n * @title ERC4907A\n *\n * @dev [ERC4907](https://eips.ethereum.org/EIPS/eip-4907) compliant\n * extension of ERC721A, which allows owners and authorized addresses\n * to add a time-limited role with restricted permissions to ERC721 tokens.\n */\nabstract contract ERC4907A is ERC721A, IERC4907A {\n    // The bit position of `expires` in packed user info.\n    uint256 private constant _BITPOS_EXPIRES = 160;\n\n    // Mapping from token ID to user info.\n    //\n    // Bits Layout:\n    // - [0..159]   `user`\n    // - [160..223] `expires`\n    mapping(uint256 => uint256) private _packedUserInfo;\n\n    /**\n     * @dev Sets the `user` and `expires` for `tokenId`.\n     * The zero address indicates there is no user.\n     *\n     * Requirements:\n     *\n     * - The caller must own `tokenId` or be an approved operator.\n     */\n    function setUser(\n        uint256 tokenId,\n        address user,\n        uint64 expires\n    ) public virtual override {\n        // Require the caller to be either the token owner or an approved operator.\n        address owner = ownerOf(tokenId);\n        if (_msgSenderERC721A() != owner)\n            if (!isApprovedForAll(owner, _msgSenderERC721A()))\n                if (getApproved(tokenId) != _msgSenderERC721A()) revert SetUserCallerNotOwnerNorApproved();\n\n        _packedUserInfo[tokenId] = (uint256(expires) << _BITPOS_EXPIRES) | uint256(uint160(user));\n\n        emit UpdateUser(tokenId, user, expires);\n    }\n\n    /**\n     * @dev Returns the user address for `tokenId`.\n     * The zero address indicates that there is no user or if the user is expired.\n     */\n    function userOf(uint256 tokenId) public view virtual override returns (address) {\n        uint256 packed = _packedUserInfo[tokenId];\n        assembly {\n            // Branchless `packed *= (block.timestamp <= expires ? 1 : 0)`.\n            // If the `block.timestamp == expires`, the `lt` clause will be true\n            // if there is a non-zero user address in the lower 160 bits of `packed`.\n            packed := mul(\n                packed,\n                // `block.timestamp <= expires ? 1 : 0`.\n                lt(shl(_BITPOS_EXPIRES, timestamp()), packed)\n            )\n        }\n        return address(uint160(packed));\n    }\n\n    /**\n     * @dev Returns the user's expires of `tokenId`.\n     */\n    function userExpires(uint256 tokenId) public view virtual override returns (uint256) {\n        return _packedUserInfo[tokenId] >> _BITPOS_EXPIRES;\n    }\n\n    /**\n     * @dev Override of {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721A, IERC721A) returns (bool) {\n        // The interface ID for ERC4907 is `0xad092b5c`,\n        // as defined in [ERC4907](https://eips.ethereum.org/EIPS/eip-4907).\n        return super.supportsInterface(interfaceId) || interfaceId == 0xad092b5c;\n    }\n\n    /**\n     * @dev Returns the user address for `tokenId`, ignoring the expiry status.\n     */\n    function _explicitUserOf(uint256 tokenId) internal view virtual returns (address) {\n        return address(uint160(_packedUserInfo[tokenId]));\n    }\n}\n"},"contracts/ERC4907.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nimport { IERC721A } from \"erc721a/contracts/IERC721A.sol\";\nimport { ERC721A } from \"erc721a/contracts/ERC721A.sol\";\nimport { ERC4907A } from \"erc721a/contracts/extensions/ERC4907A.sol\";\nimport { Ownable } from \"@openzeppelin/contracts/access/Ownable.sol\";\n\ninterface IERC721Metadata {\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n\ncontract ERC4907 is ERC4907A, Ownable {\n\n    struct AssetInfo {\n        address tokenAddress;\n        uint256 tokenId;\n    }\n\n    mapping(uint256 => AssetInfo) internal _assets;\n\n    constructor() ERC721A(\"BNPL\", \"BNPL\") {}\n    \n    function mint(address to, address tokenAddress, uint256 tokenId)\n        external\n        onlyOwner\n        returns (uint256 tid)\n    {\n        _mint(to, 1);\n        tid = _nextTokenId() - 1;\n        _assets[tid] = AssetInfo(tokenAddress, tokenId);\n    }\n\n    function burn(uint256 tokenId) external onlyOwner {\n        setUser(tokenId, address(0), 0);\n        _burn(tokenId);\n    }\n\n    function tokenURI(uint256 tokenId)\n        public\n        view\n        override (ERC721A, IERC721A)\n        returns (string memory)\n    {\n        AssetInfo memory asset = _assets[tokenId];\n        try IERC721Metadata(asset.tokenAddress).tokenURI(asset.tokenId) returns (string memory uri) {\n            return uri;\n        } catch {\n            return super.tokenURI(tokenId);\n        }\n    }\n}"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor() {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n    using Address for address;\n    using Strings for uint256;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    // Mapping from token ID to owner address\n    mapping(uint256 => address) private _owners;\n\n    // Mapping owner address to token count\n    mapping(address => uint256) private _balances;\n\n    // Mapping from token ID to approved address\n    mapping(uint256 => address) private _tokenApprovals;\n\n    // Mapping from owner to operator approvals\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC721-balanceOf}.\n     */\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n        return _balances[owner];\n    }\n\n    /**\n     * @dev See {IERC721-ownerOf}.\n     */\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        address owner = _owners[tokenId];\n        require(owner != address(0), \"ERC721: invalid token ID\");\n        return owner;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        _requireMinted(tokenId);\n\n        string memory baseURI = _baseURI();\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n    }\n\n    /**\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n     * by default, can be overridden in child contracts.\n     */\n    function _baseURI() internal view virtual returns (string memory) {\n        return \"\";\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual override {\n        address owner = ERC721.ownerOf(tokenId);\n        require(to != owner, \"ERC721: approval to current owner\");\n\n        require(\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n            \"ERC721: approve caller is not token owner nor approved for all\"\n        );\n\n        _approve(to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        _requireMinted(tokenId);\n\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        //solhint-disable-next-line max-line-length\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n\n        _transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override {\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n        _safeTransfer(from, to, tokenId, data);\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal virtual {\n        _transfer(from, to, tokenId);\n        require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted (`_mint`),\n     * and stop existing when they are burned (`_burn`).\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return _owners[tokenId] != address(0);\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n        address owner = ERC721.ownerOf(tokenId);\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n    }\n\n    /**\n     * @dev Safely mints `tokenId` and transfers it to `to`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeMint(address to, uint256 tokenId) internal virtual {\n        _safeMint(to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeMint(\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal virtual {\n        _mint(to, tokenId);\n        require(\n            _checkOnERC721Received(address(0), to, tokenId, data),\n            \"ERC721: transfer to non ERC721Receiver implementer\"\n        );\n    }\n\n    /**\n     * @dev Mints `tokenId` and transfers it to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - `to` cannot be the zero address.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _mint(address to, uint256 tokenId) internal virtual {\n        require(to != address(0), \"ERC721: mint to the zero address\");\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        _beforeTokenTransfer(address(0), to, tokenId);\n\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(address(0), to, tokenId);\n\n        _afterTokenTransfer(address(0), to, tokenId);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = ERC721.ownerOf(tokenId);\n\n        _beforeTokenTransfer(owner, address(0), tokenId);\n\n        // Clear approvals\n        _approve(address(0), tokenId);\n\n        _balances[owner] -= 1;\n        delete _owners[tokenId];\n\n        emit Transfer(owner, address(0), tokenId);\n\n        _afterTokenTransfer(owner, address(0), tokenId);\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {\n        require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n        require(to != address(0), \"ERC721: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, tokenId);\n\n        // Clear approvals from the previous owner\n        _approve(address(0), tokenId);\n\n        _balances[from] -= 1;\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(from, to, tokenId);\n\n        _afterTokenTransfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * Emits an {Approval} event.\n     */\n    function _approve(address to, uint256 tokenId) internal virtual {\n        _tokenApprovals[tokenId] = to;\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n    }\n\n    /**\n     * @dev Approve `operator` to operate on all of `owner` tokens\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function _setApprovalForAll(\n        address owner,\n        address operator,\n        bool approved\n    ) internal virtual {\n        require(owner != operator, \"ERC721: approve to caller\");\n        _operatorApprovals[owner][operator] = approved;\n        emit ApprovalForAll(owner, operator, approved);\n    }\n\n    /**\n     * @dev Reverts if the `tokenId` has not been minted yet.\n     */\n    function _requireMinted(uint256 tokenId) internal view virtual {\n        require(_exists(tokenId), \"ERC721: invalid token ID\");\n    }\n\n    /**\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n     * The call is not executed if the target address is not a contract.\n     *\n     * @param from address representing the previous owner of the given token ID\n     * @param to target address that will receive the tokens\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param data bytes optional data to send along with the call\n     * @return bool whether the call correctly returned the expected magic value\n     */\n    function _checkOnERC721Received(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) private returns (bool) {\n        if (to.isContract()) {\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n                return retval == IERC721Receiver.onERC721Received.selector;\n            } catch (bytes memory reason) {\n                if (reason.length == 0) {\n                    revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n                } else {\n                    /// @solidity memory-safe-assembly\n                    assembly {\n                        revert(add(32, reason), mload(reason))\n                    }\n                }\n            }\n        } else {\n            return true;\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting\n     * and burning.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` will be minted for `to`.\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n                /// @solidity memory-safe-assembly\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n    uint8 private constant _ADDRESS_LENGTH = 20;\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        // Inspired by OraclizeAPI's implementation - MIT licence\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        while (value != 0) {\n            digits -= 1;\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n            value /= 10;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        if (value == 0) {\n            return \"0x00\";\n        }\n        uint256 temp = value;\n        uint256 length = 0;\n        while (temp != 0) {\n            length++;\n            temp >>= 8;\n        }\n        return toHexString(value, length);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, \"Strings: hex length insufficient\");\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n    }\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 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 a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) external;\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 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 {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\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(\n        address from,\n        address to,\n        uint256 tokenId\n    ) 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 caller.\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/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n    /**\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n     * by `operator` from `from`, this function is called.\n     *\n     * It must return its Solidity selector to confirm the token transfer.\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n     *\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n    /**\n     * @dev Returns the token collection name.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the token collection symbol.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\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[EIP 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"},"contracts/test/TestERC721.sol":{"content":"// SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.7;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\n// Used for minting test ERC721s in our tests\ncontract TestERC721 is ERC721(\"Test721\", \"TST721\") {\n    function mint(address to, uint256 tokenId) public returns (bool) {\n        _mint(to, tokenId);\n        return true;\n    }\n\n    function tokenURI(uint256) public pure override returns (string memory) {\n        return \"tokenURI\";\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n    mapping(address => uint256) private _balances;\n\n    mapping(address => mapping(address => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * The default value of {decimals} is 18. To select a different value for\n     * {decimals} you should overload it.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\n     * overridden;\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual override returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual override returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `amount`.\n     */\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `amount`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `amount`.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) public virtual override returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, amount);\n        _transfer(from, to, amount);\n        return true;\n    }\n\n    /**\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, allowance(owner, spender) + addedValue);\n        return true;\n    }\n\n    /**\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `spender` must have allowance for the caller of at least\n     * `subtractedValue`.\n     */\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n        address owner = _msgSender();\n        uint256 currentAllowance = allowance(owner, spender);\n        require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n        unchecked {\n            _approve(owner, spender, currentAllowance - subtractedValue);\n        }\n\n        return true;\n    }\n\n    /**\n     * @dev Moves `amount` of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `from` must have a balance of at least `amount`.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {\n        require(from != address(0), \"ERC20: transfer from the zero address\");\n        require(to != address(0), \"ERC20: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, amount);\n\n        uint256 fromBalance = _balances[from];\n        require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n        unchecked {\n            _balances[from] = fromBalance - amount;\n        }\n        _balances[to] += amount;\n\n        emit Transfer(from, to, amount);\n\n        _afterTokenTransfer(from, to, amount);\n    }\n\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function _mint(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: mint to the zero address\");\n\n        _beforeTokenTransfer(address(0), account, amount);\n\n        _totalSupply += amount;\n        _balances[account] += amount;\n        emit Transfer(address(0), account, amount);\n\n        _afterTokenTransfer(address(0), account, amount);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the\n     * total supply.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     */\n    function _burn(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: burn from the zero address\");\n\n        _beforeTokenTransfer(account, address(0), amount);\n\n        uint256 accountBalance = _balances[account];\n        require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n        unchecked {\n            _balances[account] = accountBalance - amount;\n        }\n        _totalSupply -= amount;\n\n        emit Transfer(account, address(0), amount);\n\n        _afterTokenTransfer(account, address(0), amount);\n    }\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     */\n    function _approve(\n        address owner,\n        address spender,\n        uint256 amount\n    ) internal virtual {\n        require(owner != address(0), \"ERC20: approve from the zero address\");\n        require(spender != address(0), \"ERC20: approve to the zero address\");\n\n        _allowances[owner][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    /**\n     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n     *\n     * Does not update the allowance amount in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Might emit an {Approval} event.\n     */\n    function _spendAllowance(\n        address owner,\n        address spender,\n        uint256 amount\n    ) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance != type(uint256).max) {\n            require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n            unchecked {\n                _approve(owner, spender, currentAllowance - amount);\n            }\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * will be transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * has been transferred to `to`.\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `from` to `to` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"},"contracts/test/TestERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract TestERC20 is ERC20 {\n\n    constructor() ERC20(\"TestERC20\", \"TestERC20\") {}\n\n    function mint(address recipient, uint256 amount) external {\n        require(amount != 0, \"amount == 0\");\n        _mint(recipient, amount);\n    }\n\n    function burn(uint256 amount) external {\n        _burn(_msgSender(), amount);\n    }\n}"},"contracts/helper/GenericERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract GenericERC20 is ERC20, Ownable {\n\n    constructor(\n        string memory name_,\n        string memory symbol_\n    ) ERC20(name_, symbol_) {}\n\n    function mint(address recipient, uint256 amount) external onlyOwner {\n        require(amount != 0, \"amount == 0\");\n        _mint(recipient, amount);\n    }\n\n    function burn(uint256 amount) external {\n        _burn(_msgSender(), amount);\n    }\n}"},"contracts/conduit/ConduitController.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\nimport {\n    ConduitControllerInterface\n} from \"../interfaces/ConduitControllerInterface.sol\";\n\nimport { ConduitInterface } from \"../interfaces/ConduitInterface.sol\";\n\nimport { Conduit } from \"./Conduit.sol\";\n\n/**\n * @title ConduitController\n * @author 0age\n * @notice ConduitController enables deploying and managing new conduits, or\n *         contracts that allow registered callers (or open \"channels\") to\n *         transfer approved ERC20/721/1155 tokens on their behalf.\n */\ncontract ConduitController is ConduitControllerInterface {\n    // Register keys, owners, new potential owners, and channels by conduit.\n    mapping(address => ConduitProperties) internal _conduits;\n\n    // Set conduit creation code and runtime code hashes as immutable arguments.\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\n    bytes32 internal immutable _CONDUIT_RUNTIME_CODE_HASH;\n\n    /**\n     * @dev Initialize contract by deploying a conduit and setting the creation\n     *      code and runtime code hashes as immutable arguments.\n     */\n    constructor() {\n        // Derive the conduit creation code hash and set it as an immutable.\n        _CONDUIT_CREATION_CODE_HASH = keccak256(type(Conduit).creationCode);\n\n        // Deploy a conduit with the zero hash as the salt.\n        Conduit zeroConduit = new Conduit{ salt: bytes32(0) }();\n\n        // Retrieve the conduit runtime code hash and set it as an immutable.\n        _CONDUIT_RUNTIME_CODE_HASH = address(zeroConduit).codehash;\n    }\n\n    /**\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\n     *         an initial owner for the deployed conduit. Note that the first\n     *         twenty bytes of the supplied conduit key must match the caller\n     *         and that a new conduit cannot be created if one has already been\n     *         deployed using the same conduit key.\n     *\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\n     *                     the first twenty bytes of the conduit key must match\n     *                     the caller of this contract.\n     * @param initialOwner The initial owner to set for the new conduit.\n     *\n     * @return conduit The address of the newly deployed conduit.\n     */\n    function createConduit(bytes32 conduitKey, address initialOwner)\n        external\n        override\n        returns (address conduit)\n    {\n        // Ensure that an initial owner has been supplied.\n        if (initialOwner == address(0)) {\n            revert InvalidInitialOwner();\n        }\n\n        // If the first 20 bytes of the conduit key do not match the caller...\n        if (address(uint160(bytes20(conduitKey))) != msg.sender) {\n            // Revert with an error indicating that the creator is invalid.\n            revert InvalidCreator();\n        }\n\n        // Derive address from deployer, conduit key and creation code hash.\n        conduit = address(\n            uint160(\n                uint256(\n                    keccak256(\n                        abi.encodePacked(\n                            bytes1(0xff),\n                            address(this),\n                            conduitKey,\n                            _CONDUIT_CREATION_CODE_HASH\n                        )\n                    )\n                )\n            )\n        );\n\n        // If derived conduit exists, as evidenced by comparing runtime code...\n        if (conduit.codehash == _CONDUIT_RUNTIME_CODE_HASH) {\n            // Revert with an error indicating that the conduit already exists.\n            revert ConduitAlreadyExists(conduit);\n        }\n\n        // Deploy the conduit via CREATE2 using the conduit key as the salt.\n        new Conduit{ salt: conduitKey }();\n\n        // Initialize storage variable referencing conduit properties.\n        ConduitProperties storage conduitProperties = _conduits[conduit];\n\n        // Set the supplied initial owner as the owner of the conduit.\n        conduitProperties.owner = initialOwner;\n\n        // Set conduit key used to deploy the conduit to enable reverse lookup.\n        conduitProperties.key = conduitKey;\n\n        // Emit an event indicating that the conduit has been deployed.\n        emit NewConduit(conduit, conduitKey);\n\n        // Emit an event indicating that conduit ownership has been assigned.\n        emit OwnershipTransferred(conduit, address(0), initialOwner);\n    }\n\n    /**\n     * @notice Open or close a channel on a given conduit, thereby allowing the\n     *         specified account to execute transfers against that conduit.\n     *         Extreme care must be taken when updating channels, as malicious\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\n     *         tokens where the token holder has granted the conduit approval.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to open or close the channel.\n     * @param channel The channel to open or close on the conduit.\n     * @param isOpen  A boolean indicating whether to open or close the channel.\n     */\n    function updateChannel(\n        address conduit,\n        address channel,\n        bool isOpen\n    ) external override {\n        // Ensure the caller is the current owner of the conduit in question.\n        _assertCallerIsConduitOwner(conduit);\n\n        // Call the conduit, updating the channel.\n        ConduitInterface(conduit).updateChannel(channel, isOpen);\n\n        // Retrieve storage region where channels for the conduit are tracked.\n        ConduitProperties storage conduitProperties = _conduits[conduit];\n\n        // Retrieve the index, if one currently exists, for the updated channel.\n        uint256 channelIndexPlusOne = (\n            conduitProperties.channelIndexesPlusOne[channel]\n        );\n\n        // Determine whether the updated channel is already tracked as open.\n        bool channelPreviouslyOpen = channelIndexPlusOne != 0;\n\n        // If the channel has been set to open and was previously closed...\n        if (isOpen && !channelPreviouslyOpen) {\n            // Add the channel to the channels array for the conduit.\n            conduitProperties.channels.push(channel);\n\n            // Add new open channel length to associated mapping as index + 1.\n            conduitProperties.channelIndexesPlusOne[channel] = (\n                conduitProperties.channels.length\n            );\n        } else if (!isOpen && channelPreviouslyOpen) {\n            // Set a previously open channel as closed via \"swap & pop\" method.\n            // Decrement located index to get the index of the closed channel.\n            uint256 removedChannelIndex;\n\n            // Skip underflow check as channelPreviouslyOpen being true ensures\n            // that channelIndexPlusOne is nonzero.\n            unchecked {\n                removedChannelIndex = channelIndexPlusOne - 1;\n            }\n\n            // Use length of channels array to determine index of last channel.\n            uint256 finalChannelIndex = conduitProperties.channels.length - 1;\n\n            // If closed channel is not last channel in the channels array...\n            if (finalChannelIndex != removedChannelIndex) {\n                // Retrieve the final channel and place the value on the stack.\n                address finalChannel = (\n                    conduitProperties.channels[finalChannelIndex]\n                );\n\n                // Overwrite the removed channel using the final channel value.\n                conduitProperties.channels[removedChannelIndex] = finalChannel;\n\n                // Update final index in associated mapping to removed index.\n                conduitProperties.channelIndexesPlusOne[finalChannel] = (\n                    channelIndexPlusOne\n                );\n            }\n\n            // Remove the last channel from the channels array for the conduit.\n            conduitProperties.channels.pop();\n\n            // Remove the closed channel from associated mapping of indexes.\n            delete conduitProperties.channelIndexesPlusOne[channel];\n        }\n    }\n\n    /**\n     * @notice Initiate conduit ownership transfer by assigning a new potential\n     *         owner for the given conduit. Once set, the new potential owner\n     *         may call `acceptOwnership` to claim ownership of the conduit.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to initiate ownership transfer.\n     * @param newPotentialOwner The new potential owner of the conduit.\n     */\n    function transferOwnership(address conduit, address newPotentialOwner)\n        external\n        override\n    {\n        // Ensure the caller is the current owner of the conduit in question.\n        _assertCallerIsConduitOwner(conduit);\n\n        // Ensure the new potential owner is not an invalid address.\n        if (newPotentialOwner == address(0)) {\n            revert NewPotentialOwnerIsZeroAddress(conduit);\n        }\n\n        // Ensure the new potential owner is not already set.\n        if (newPotentialOwner == _conduits[conduit].potentialOwner) {\n            revert NewPotentialOwnerAlreadySet(conduit, newPotentialOwner);\n        }\n\n        // Emit an event indicating that the potential owner has been updated.\n        emit PotentialOwnerUpdated(newPotentialOwner);\n\n        // Set the new potential owner as the potential owner of the conduit.\n        _conduits[conduit].potentialOwner = newPotentialOwner;\n    }\n\n    /**\n     * @notice Clear the currently set potential owner, if any, from a conduit.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to cancel ownership transfer.\n     */\n    function cancelOwnershipTransfer(address conduit) external override {\n        // Ensure the caller is the current owner of the conduit in question.\n        _assertCallerIsConduitOwner(conduit);\n\n        // Ensure that ownership transfer is currently possible.\n        if (_conduits[conduit].potentialOwner == address(0)) {\n            revert NoPotentialOwnerCurrentlySet(conduit);\n        }\n\n        // Emit an event indicating that the potential owner has been cleared.\n        emit PotentialOwnerUpdated(address(0));\n\n        // Clear the current new potential owner from the conduit.\n        _conduits[conduit].potentialOwner = address(0);\n    }\n\n    /**\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\n     *         current owner has set as the new potential owner may call this\n     *         function.\n     *\n     * @param conduit The conduit for which to accept ownership.\n     */\n    function acceptOwnership(address conduit) external override {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // If caller does not match current potential owner of the conduit...\n        if (msg.sender != _conduits[conduit].potentialOwner) {\n            // Revert, indicating that caller is not current potential owner.\n            revert CallerIsNotNewPotentialOwner(conduit);\n        }\n\n        // Emit an event indicating that the potential owner has been cleared.\n        emit PotentialOwnerUpdated(address(0));\n\n        // Clear the current new potential owner from the conduit.\n        _conduits[conduit].potentialOwner = address(0);\n\n        // Emit an event indicating conduit ownership has been transferred.\n        emit OwnershipTransferred(\n            conduit,\n            _conduits[conduit].owner,\n            msg.sender\n        );\n\n        // Set the caller as the owner of the conduit.\n        _conduits[conduit].owner = msg.sender;\n    }\n\n    /**\n     * @notice Retrieve the current owner of a deployed conduit.\n     *\n     * @param conduit The conduit for which to retrieve the associated owner.\n     *\n     * @return owner The owner of the supplied conduit.\n     */\n    function ownerOf(address conduit)\n        external\n        view\n        override\n        returns (address owner)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the current owner of the conduit in question.\n        owner = _conduits[conduit].owner;\n    }\n\n    /**\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\n     *         lookup.\n     *\n     * @param conduit The conduit for which to retrieve the associated conduit\n     *                key.\n     *\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\n     */\n    function getKey(address conduit)\n        external\n        view\n        override\n        returns (bytes32 conduitKey)\n    {\n        // Attempt to retrieve a conduit key for the conduit in question.\n        conduitKey = _conduits[conduit].key;\n\n        // Revert if no conduit key was located.\n        if (conduitKey == bytes32(0)) {\n            revert NoConduit();\n        }\n    }\n\n    /**\n     * @notice Derive the conduit associated with a given conduit key and\n     *         determine whether that conduit exists (i.e. whether it has been\n     *         deployed).\n     *\n     * @param conduitKey The conduit key used to derive the conduit.\n     *\n     * @return conduit The derived address of the conduit.\n     * @return exists  A boolean indicating whether the derived conduit has been\n     *                 deployed or not.\n     */\n    function getConduit(bytes32 conduitKey)\n        external\n        view\n        override\n        returns (address conduit, bool exists)\n    {\n        // Derive address from deployer, conduit key and creation code hash.\n        conduit = address(\n            uint160(\n                uint256(\n                    keccak256(\n                        abi.encodePacked(\n                            bytes1(0xff),\n                            address(this),\n                            conduitKey,\n                            _CONDUIT_CREATION_CODE_HASH\n                        )\n                    )\n                )\n            )\n        );\n\n        // Determine whether conduit exists by retrieving its runtime code.\n        exists = (conduit.codehash == _CONDUIT_RUNTIME_CODE_HASH);\n    }\n\n    /**\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\n     *         current owner may set a new potential owner via\n     *         `transferOwnership` and that owner may then accept ownership of\n     *         the conduit in question via `acceptOwnership`.\n     *\n     * @param conduit The conduit for which to retrieve the potential owner.\n     *\n     * @return potentialOwner The potential owner, if any, for the conduit.\n     */\n    function getPotentialOwner(address conduit)\n        external\n        view\n        override\n        returns (address potentialOwner)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the current potential owner of the conduit in question.\n        potentialOwner = _conduits[conduit].potentialOwner;\n    }\n\n    /**\n     * @notice Retrieve the status (either open or closed) of a given channel on\n     *         a conduit.\n     *\n     * @param conduit The conduit for which to retrieve the channel status.\n     * @param channel The channel for which to retrieve the status.\n     *\n     * @return isOpen The status of the channel on the given conduit.\n     */\n    function getChannelStatus(address conduit, address channel)\n        external\n        view\n        override\n        returns (bool isOpen)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the current channel status for the conduit in question.\n        isOpen = _conduits[conduit].channelIndexesPlusOne[channel] != 0;\n    }\n\n    /**\n     * @notice Retrieve the total number of open channels for a given conduit.\n     *\n     * @param conduit The conduit for which to retrieve the total channel count.\n     *\n     * @return totalChannels The total number of open channels for the conduit.\n     */\n    function getTotalChannels(address conduit)\n        external\n        view\n        override\n        returns (uint256 totalChannels)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the total open channel count for the conduit in question.\n        totalChannels = _conduits[conduit].channels.length;\n    }\n\n    /**\n     * @notice Retrieve an open channel at a specific index for a given conduit.\n     *         Note that the index of a channel can change as a result of other\n     *         channels being closed on the conduit.\n     *\n     * @param conduit      The conduit for which to retrieve the open channel.\n     * @param channelIndex The index of the channel in question.\n     *\n     * @return channel The open channel, if any, at the specified channel index.\n     */\n    function getChannel(address conduit, uint256 channelIndex)\n        external\n        view\n        override\n        returns (address channel)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the total open channel count for the conduit in question.\n        uint256 totalChannels = _conduits[conduit].channels.length;\n\n        // Ensure that the supplied index is within range.\n        if (channelIndex >= totalChannels) {\n            revert ChannelOutOfRange(conduit);\n        }\n\n        // Retrieve the channel at the given index.\n        channel = _conduits[conduit].channels[channelIndex];\n    }\n\n    /**\n     * @notice Retrieve all open channels for a given conduit. Note that calling\n     *         this function for a conduit with many channels will revert with\n     *         an out-of-gas error.\n     *\n     * @param conduit The conduit for which to retrieve open channels.\n     *\n     * @return channels An array of open channels on the given conduit.\n     */\n    function getChannels(address conduit)\n        external\n        view\n        override\n        returns (address[] memory channels)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve all of the open channels on the conduit in question.\n        channels = _conduits[conduit].channels;\n    }\n\n    /**\n     * @dev Retrieve the conduit creation code and runtime code hashes.\n     */\n    function getConduitCodeHashes()\n        external\n        view\n        override\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash)\n    {\n        // Retrieve the conduit creation code hash from runtime.\n        creationCodeHash = _CONDUIT_CREATION_CODE_HASH;\n\n        // Retrieve the conduit runtime code hash from runtime.\n        runtimeCodeHash = _CONDUIT_RUNTIME_CODE_HASH;\n    }\n\n    /**\n     * @dev Private view function to revert if the caller is not the owner of a\n     *      given conduit.\n     *\n     * @param conduit The conduit for which to assert ownership.\n     */\n    function _assertCallerIsConduitOwner(address conduit) private view {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // If the caller does not match the current owner of the conduit...\n        if (msg.sender != _conduits[conduit].owner) {\n            // Revert, indicating that the caller is not the owner.\n            revert CallerIsNotOwner(conduit);\n        }\n    }\n\n    /**\n     * @dev Private view function to revert if a given conduit does not exist.\n     *\n     * @param conduit The conduit for which to assert existence.\n     */\n    function _assertConduitExists(address conduit) private view {\n        // Attempt to retrieve a conduit key for the conduit in question.\n        if (_conduits[conduit].key == bytes32(0)) {\n            // Revert if no conduit key was located.\n            revert NoConduit();\n        }\n    }\n}\n"},"contracts/conduit/Conduit.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\nimport { ConduitInterface } from \"../interfaces/ConduitInterface.sol\";\n\nimport { ConduitItemType } from \"./lib/ConduitEnums.sol\";\n\nimport { TokenTransferrer } from \"../lib/TokenTransferrer.sol\";\n\nimport {\n    ConduitTransfer,\n    ConduitBatch1155Transfer\n} from \"./lib/ConduitStructs.sol\";\n\nimport \"./lib/ConduitConstants.sol\";\n\n/**\n * @title Conduit\n * @author 0age\n * @notice This contract serves as an originator for \"proxied\" transfers. Each\n *         conduit is deployed and controlled by a \"conduit controller\" that can\n *         add and remove \"channels\" or contracts that can instruct the conduit\n *         to transfer approved ERC20/721/1155 tokens. *IMPORTANT NOTE: each\n *         conduit has an owner that can arbitrarily add or remove channels, and\n *         a malicious or negligent owner can add a channel that allows for any\n *         approved ERC20/721/1155 tokens to be taken immediately — be extremely\n *         cautious with what conduits you give token approvals to!*\n */\ncontract Conduit is ConduitInterface, TokenTransferrer {\n    // Set deployer as an immutable controller that can update channel statuses.\n    address private immutable _controller;\n\n    // Track the status of each channel.\n    mapping(address => bool) private _channels;\n\n    /**\n     * @notice Ensure that the caller is currently registered as an open channel\n     *         on the conduit.\n     */\n    modifier onlyOpenChannel() {\n        // Utilize assembly to access channel storage mapping directly.\n        assembly {\n            // Write the caller to scratch space.\n            mstore(ChannelKey_channel_ptr, caller())\n\n            // Write the storage slot for _channels to scratch space.\n            mstore(ChannelKey_slot_ptr, _channels.slot)\n\n            // Derive the position in storage of _channels[msg.sender]\n            // and check if the stored value is zero.\n            if iszero(\n                sload(keccak256(ChannelKey_channel_ptr, ChannelKey_length))\n            ) {\n                // The caller is not an open channel; revert with\n                // ChannelClosed(caller). First, set error signature in memory.\n                mstore(ChannelClosed_error_ptr, ChannelClosed_error_signature)\n\n                // Next, set the caller as the argument.\n                mstore(ChannelClosed_channel_ptr, caller())\n\n                // Finally, revert, returning full custom error with argument.\n                revert(ChannelClosed_error_ptr, ChannelClosed_error_length)\n            }\n        }\n\n        // Continue with function execution.\n        _;\n    }\n\n    /**\n     * @notice In the constructor, set the deployer as the controller.\n     */\n    constructor() {\n        // Set the deployer as the controller.\n        _controller = msg.sender;\n    }\n\n    /**\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\n     *         with an open channel can call this function. Note that channels\n     *         are expected to implement reentrancy protection if desired, and\n     *         that cross-channel reentrancy may be possible if the conduit has\n     *         multiple open channels at once. Also note that channels are\n     *         expected to implement checks against transferring any zero-amount\n     *         items if that constraint is desired.\n     *\n     * @param transfers The ERC20/721/1155 transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function execute(ConduitTransfer[] calldata transfers)\n        external\n        override\n        onlyOpenChannel\n        returns (bytes4 magicValue)\n    {\n        // Retrieve the total number of transfers and place on the stack.\n        uint256 totalStandardTransfers = transfers.length;\n\n        // Iterate over each transfer.\n        for (uint256 i = 0; i < totalStandardTransfers; ) {\n            // Retrieve the transfer in question and perform the transfer.\n            _transfer(transfers[i]);\n\n            // Skip overflow check as for loop is indexed starting at zero.\n            unchecked {\n                ++i;\n            }\n        }\n\n        // Return a magic value indicating that the transfers were performed.\n        magicValue = this.execute.selector;\n    }\n\n    /**\n     * @notice Execute a sequence of batch 1155 item transfers. Only a caller\n     *         with an open channel can call this function. Note that channels\n     *         are expected to implement reentrancy protection if desired, and\n     *         that cross-channel reentrancy may be possible if the conduit has\n     *         multiple open channels at once. Also note that channels are\n     *         expected to implement checks against transferring any zero-amount\n     *         items if that constraint is desired.\n     *\n     * @param batchTransfers The 1155 batch item transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the item transfers were\n     *                    performed successfully.\n     */\n    function executeBatch1155(\n        ConduitBatch1155Transfer[] calldata batchTransfers\n    ) external override onlyOpenChannel returns (bytes4 magicValue) {\n        // Perform 1155 batch transfers. Note that memory should be considered\n        // entirely corrupted from this point forward.\n        _performERC1155BatchTransfers(batchTransfers);\n\n        // Return a magic value indicating that the transfers were performed.\n        magicValue = this.executeBatch1155.selector;\n    }\n\n    /**\n     * @notice Execute a sequence of transfers, both single ERC20/721/1155 item\n     *         transfers as well as batch 1155 item transfers. Only a caller\n     *         with an open channel can call this function. Note that channels\n     *         are expected to implement reentrancy protection if desired, and\n     *         that cross-channel reentrancy may be possible if the conduit has\n     *         multiple open channels at once. Also note that channels are\n     *         expected to implement checks against transferring any zero-amount\n     *         items if that constraint is desired.\n     *\n     * @param standardTransfers The ERC20/721/1155 item transfers to perform.\n     * @param batchTransfers    The 1155 batch item transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the item transfers were\n     *                    performed successfully.\n     */\n    function executeWithBatch1155(\n        ConduitTransfer[] calldata standardTransfers,\n        ConduitBatch1155Transfer[] calldata batchTransfers\n    ) external override onlyOpenChannel returns (bytes4 magicValue) {\n        // Retrieve the total number of transfers and place on the stack.\n        uint256 totalStandardTransfers = standardTransfers.length;\n\n        // Iterate over each standard transfer.\n        for (uint256 i = 0; i < totalStandardTransfers; ) {\n            // Retrieve the transfer in question and perform the transfer.\n            _transfer(standardTransfers[i]);\n\n            // Skip overflow check as for loop is indexed starting at zero.\n            unchecked {\n                ++i;\n            }\n        }\n\n        // Perform 1155 batch transfers. Note that memory should be considered\n        // entirely corrupted from this point forward aside from the free memory\n        // pointer having the default value.\n        _performERC1155BatchTransfers(batchTransfers);\n\n        // Return a magic value indicating that the transfers were performed.\n        magicValue = this.executeWithBatch1155.selector;\n    }\n\n    /**\n     * @notice Open or close a given channel. Only callable by the controller.\n     *\n     * @param channel The channel to open or close.\n     * @param isOpen  The status of the channel (either open or closed).\n     */\n    function updateChannel(address channel, bool isOpen) external override {\n        // Ensure that the caller is the controller of this contract.\n        if (msg.sender != _controller) {\n            revert InvalidController();\n        }\n\n        // Ensure that the channel does not already have the indicated status.\n        if (_channels[channel] == isOpen) {\n            revert ChannelStatusAlreadySet(channel, isOpen);\n        }\n\n        // Update the status of the channel.\n        _channels[channel] = isOpen;\n\n        // Emit a corresponding event.\n        emit ChannelUpdated(channel, isOpen);\n    }\n\n    /**\n     * @dev Internal function to transfer a given ERC20/721/1155 item. Note that\n     *      channels are expected to implement checks against transferring any\n     *      zero-amount items if that constraint is desired.\n     *\n     * @param item The ERC20/721/1155 item to transfer.\n     */\n    function _transfer(ConduitTransfer calldata item) internal {\n        // Determine the transfer method based on the respective item type.\n        if (item.itemType == ConduitItemType.ERC20) {\n            // Transfer ERC20 token. Note that item.identifier is ignored and\n            // therefore ERC20 transfer items are potentially malleable — this\n            // check should be performed by the calling channel if a constraint\n            // on item malleability is desired.\n            _performERC20Transfer(item.token, item.from, item.to, item.amount);\n        } else if (item.itemType == ConduitItemType.ERC721) {\n            // Ensure that exactly one 721 item is being transferred.\n            if (item.amount != 1) {\n                revert InvalidERC721TransferAmount();\n            }\n\n            // Transfer ERC721 token.\n            _performERC721Transfer(\n                item.token,\n                item.from,\n                item.to,\n                item.identifier\n            );\n        } else if (item.itemType == ConduitItemType.ERC1155) {\n            // Transfer ERC1155 token.\n            _performERC1155Transfer(\n                item.token,\n                item.from,\n                item.to,\n                item.identifier,\n                item.amount\n            );\n        } else {\n            // Throw with an error.\n            revert InvalidItemType();\n        }\n    }\n}\n"},"contracts/conduit/lib/ConduitConstants.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\n// error ChannelClosed(address channel)\nuint256 constant ChannelClosed_error_signature = (\n    0x93daadf200000000000000000000000000000000000000000000000000000000\n);\nuint256 constant ChannelClosed_error_ptr = 0x00;\nuint256 constant ChannelClosed_channel_ptr = 0x4;\nuint256 constant ChannelClosed_error_length = 0x24;\n\n// For the mapping:\n// mapping(address => bool) channels\n// The position in storage for a particular account is:\n// keccak256(abi.encode(account, channels.slot))\nuint256 constant ChannelKey_channel_ptr = 0x00;\nuint256 constant ChannelKey_slot_ptr = 0x20;\nuint256 constant ChannelKey_length = 0x40;\n"},"contracts/interfaces/IERC4907.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.7;\n\ninterface IERC4907 {\n\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint256 expires);\n\n    function mint(address to, address tokenAddress, uint256 tokenId) external returns (uint256);\n\n    function burn(uint256 tokenId) external;\n\n    function setUser(uint256 tokenId, address user, uint256 expires) external;\n\n    function userOf(uint256 tokenId) external view returns (address);\n\n    function userExpires(uint256 tokenId) external view returns (uint256);\n}"},"contracts/interfaces/MathUtil.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nlibrary MathUtil {\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a < b ? a : b;\n    }\n}"}},"settings":{"optimizer":{"enabled":true,"runs":10000},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[2146],"Ownable":[112]},"id":113,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":113,"sourceUnit":2147,"src":"127:30:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":2146,"src":"683:7:0"},"id":5,"nodeType":"InheritanceSpecifier","src":"683:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"159:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can 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":112,"linearizedBaseContracts":[112,2146],"name":"Ownable","nameLocation":"672:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7,"mutability":"mutable","name":"_owner","nameLocation":"713:6:0","nodeType":"VariableDeclaration","scope":112,"src":"697:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":13,"name":"OwnershipTransferred","nameLocation":"732:20:0","nodeType":"EventDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"769:13:0","nodeType":"VariableDeclaration","scope":13,"src":"753:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"800:8:0","nodeType":"VariableDeclaration","scope":13,"src":"784:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"752:57:0"},"src":"726:84:0"},{"body":{"id":22,"nodeType":"Block","src":"926:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":18,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"955:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":19,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"955:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"936:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"936:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21,"nodeType":"ExpressionStatement","src":"936:32:0"}]},"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"816:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":23,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"923:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"926:0:0"},"scope":112,"src":"912:63:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":30,"nodeType":"Block","src":"1084:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":26,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1094:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28,"nodeType":"ExpressionStatement","src":"1094:13:0"},{"id":29,"nodeType":"PlaceholderStatement","src":"1117:1:0"}]},"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"981:77:0","text":" @dev Throws if called by any account other than the owner."},"id":31,"name":"onlyOwner","nameLocation":"1072:9:0","nodeType":"ModifierDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"1081:2:0"},"src":"1063:62:0","virtual":false,"visibility":"internal"},{"body":{"id":39,"nodeType":"Block","src":"1256:30:0","statements":[{"expression":{"id":37,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"1273:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":36,"id":38,"nodeType":"Return","src":"1266:13:0"}]},"documentation":{"id":32,"nodeType":"StructuredDocumentation","src":"1131:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":40,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1210:5:0","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"1215:2:0"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40,"src":"1247:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1247:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1246:9:0"},"scope":112,"src":"1201:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":53,"nodeType":"Block","src":"1404:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":45,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"1422:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1422:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":47,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"1433:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1433:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1422:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1447:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":44,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1414:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1414:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"1414:68:0"}]},"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1292:62:0","text":" @dev Throws if the sender is not the owner."},"id":54,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1368:11:0","nodeType":"FunctionDefinition","parameters":{"id":42,"nodeType":"ParameterList","parameters":[],"src":"1379:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[],"src":"1404:0:0"},"scope":112,"src":"1359:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":67,"nodeType":"Block","src":"1885:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":63,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":62,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1914:7:0","typeDescriptions":{}}},"id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1914:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"1895:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1895:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1895:30:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1495:331:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."},"functionSelector":"715018a6","id":68,"implemented":true,"kind":"function","modifiers":[{"id":58,"kind":"modifierInvocation","modifierName":{"id":57,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"1875:9:0"},"nodeType":"ModifierInvocation","src":"1875:9:0"}],"name":"renounceOwnership","nameLocation":"1840:17:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1857:2:0"},"returnParameters":{"id":59,"nodeType":"ParameterList","parameters":[],"src":"1885:0:0"},"scope":112,"src":"1831:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":90,"nodeType":"Block","src":"2151:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2169:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2189:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":79,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2181:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"2181:7:0","typeDescriptions":{}}},"id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2181:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2169:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":83,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2193:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":76,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2161:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2161:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85,"nodeType":"ExpressionStatement","src":"2161:73:0"},{"expression":{"arguments":[{"id":87,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2263:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2244:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2244:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"2244:28:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1938:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":91,"implemented":true,"kind":"function","modifiers":[{"id":74,"kind":"modifierInvocation","modifierName":{"id":73,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2141:9:0"},"nodeType":"ModifierInvocation","src":"2141:9:0"}],"name":"transferOwnership","nameLocation":"2090:17:0","nodeType":"FunctionDefinition","parameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"newOwner","nameLocation":"2116:8:0","nodeType":"VariableDeclaration","scope":91,"src":"2108:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"2108:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2107:18:0"},"returnParameters":{"id":75,"nodeType":"ParameterList","parameters":[],"src":"2151:0:0"},"scope":112,"src":"2081:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":110,"nodeType":"Block","src":"2496:124:0","statements":[{"assignments":[98],"declarations":[{"constant":false,"id":98,"mutability":"mutable","name":"oldOwner","nameLocation":"2514:8:0","nodeType":"VariableDeclaration","scope":110,"src":"2506:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"2506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":100,"initialValue":{"id":99,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2525:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2506:25:0"},{"expression":{"id":103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":101,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2541:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":102,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2550:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2541:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":104,"nodeType":"ExpressionStatement","src":"2541:17:0"},{"eventCall":{"arguments":[{"id":106,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2594:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":107,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2604:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":105,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"2573:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2573:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"EmitStatement","src":"2568:45:0"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"2285:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":111,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2442:18:0","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"newOwner","nameLocation":"2469:8:0","nodeType":"VariableDeclaration","scope":111,"src":"2461:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"2461:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2460:18:0"},"returnParameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2496:0:0"},"scope":112,"src":"2433:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":113,"src":"654:1968:0","usedErrors":[]}],"src":"102:2521:0"},"id":0},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[2146],"ERC20":[698],"IERC20":[776],"IERC20Metadata":[801]},"id":699,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":114,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:1"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":115,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":699,"sourceUnit":777,"src":"130:22:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":116,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":699,"sourceUnit":802,"src":"153:41:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":117,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":699,"sourceUnit":2147,"src":"195:33:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":119,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":2146,"src":"1421:7:1"},"id":120,"nodeType":"InheritanceSpecifier","src":"1421:7:1"},{"baseName":{"id":121,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":776,"src":"1430:6:1"},"id":122,"nodeType":"InheritanceSpecifier","src":"1430:6:1"},{"baseName":{"id":123,"name":"IERC20Metadata","nodeType":"IdentifierPath","referencedDeclaration":801,"src":"1438:14:1"},"id":124,"nodeType":"InheritanceSpecifier","src":"1438:14:1"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":118,"nodeType":"StructuredDocumentation","src":"230:1172:1","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":698,"linearizedBaseContracts":[698,801,776,2146],"name":"ERC20","nameLocation":"1412:5:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":128,"mutability":"mutable","name":"_balances","nameLocation":"1495:9:1","nodeType":"VariableDeclaration","scope":698,"src":"1459:45:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":127,"keyType":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"1467:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1459:27:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":126,"name":"uint256","nodeType":"ElementaryTypeName","src":"1478:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":134,"mutability":"mutable","name":"_allowances","nameLocation":"1567:11:1","nodeType":"VariableDeclaration","scope":698,"src":"1511:67:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":133,"keyType":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"1519:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1511:47:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":132,"keyType":{"id":130,"name":"address","nodeType":"ElementaryTypeName","src":"1538:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1530:27:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":131,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":136,"mutability":"mutable","name":"_totalSupply","nameLocation":"1601:12:1","nodeType":"VariableDeclaration","scope":698,"src":"1585:28:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":135,"name":"uint256","nodeType":"ElementaryTypeName","src":"1585:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":138,"mutability":"mutable","name":"_name","nameLocation":"1635:5:1","nodeType":"VariableDeclaration","scope":698,"src":"1620:20:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":137,"name":"string","nodeType":"ElementaryTypeName","src":"1620:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":140,"mutability":"mutable","name":"_symbol","nameLocation":"1661:7:1","nodeType":"VariableDeclaration","scope":698,"src":"1646:22:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":139,"name":"string","nodeType":"ElementaryTypeName","src":"1646:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":156,"nodeType":"Block","src":"2034:57:1","statements":[{"expression":{"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":148,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2044:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":149,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"2052:5:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2044:13:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":151,"nodeType":"ExpressionStatement","src":"2044:13:1"},{"expression":{"id":154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":152,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":140,"src":"2067:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":153,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"2077:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2067:17:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":155,"nodeType":"ExpressionStatement","src":"2067:17:1"}]},"documentation":{"id":141,"nodeType":"StructuredDocumentation","src":"1675:298:1","text":" @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."},"id":157,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":143,"mutability":"mutable","name":"name_","nameLocation":"2004:5:1","nodeType":"VariableDeclaration","scope":157,"src":"1990:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":142,"name":"string","nodeType":"ElementaryTypeName","src":"1990:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":145,"mutability":"mutable","name":"symbol_","nameLocation":"2025:7:1","nodeType":"VariableDeclaration","scope":157,"src":"2011:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":144,"name":"string","nodeType":"ElementaryTypeName","src":"2011:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1989:44:1"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[],"src":"2034:0:1"},"scope":698,"src":"1978:113:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[788],"body":{"id":166,"nodeType":"Block","src":"2225:29:1","statements":[{"expression":{"id":164,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2242:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":163,"id":165,"nodeType":"Return","src":"2235:12:1"}]},"documentation":{"id":158,"nodeType":"StructuredDocumentation","src":"2097:54:1","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":167,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2165:4:1","nodeType":"FunctionDefinition","overrides":{"id":160,"nodeType":"OverrideSpecifier","overrides":[],"src":"2192:8:1"},"parameters":{"id":159,"nodeType":"ParameterList","parameters":[],"src":"2169:2:1"},"returnParameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":167,"src":"2210:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161,"name":"string","nodeType":"ElementaryTypeName","src":"2210:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2209:15:1"},"scope":698,"src":"2156:98:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[794],"body":{"id":176,"nodeType":"Block","src":"2438:31:1","statements":[{"expression":{"id":174,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":140,"src":"2455:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":173,"id":175,"nodeType":"Return","src":"2448:14:1"}]},"documentation":{"id":168,"nodeType":"StructuredDocumentation","src":"2260:102:1","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":177,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2376:6:1","nodeType":"FunctionDefinition","overrides":{"id":170,"nodeType":"OverrideSpecifier","overrides":[],"src":"2405:8:1"},"parameters":{"id":169,"nodeType":"ParameterList","parameters":[],"src":"2382:2:1"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":177,"src":"2423:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":171,"name":"string","nodeType":"ElementaryTypeName","src":"2423:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2422:15:1"},"scope":698,"src":"2367:102:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[800],"body":{"id":186,"nodeType":"Block","src":"3158:26:1","statements":[{"expression":{"hexValue":"3138","id":184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3175:2:1","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":183,"id":185,"nodeType":"Return","src":"3168:9:1"}]},"documentation":{"id":178,"nodeType":"StructuredDocumentation","src":"2475:613:1","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":187,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3102:8:1","nodeType":"FunctionDefinition","overrides":{"id":180,"nodeType":"OverrideSpecifier","overrides":[],"src":"3133:8:1"},"parameters":{"id":179,"nodeType":"ParameterList","parameters":[],"src":"3110:2:1"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":187,"src":"3151:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":181,"name":"uint8","nodeType":"ElementaryTypeName","src":"3151:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3150:7:1"},"scope":698,"src":"3093:91:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[725],"body":{"id":196,"nodeType":"Block","src":"3314:36:1","statements":[{"expression":{"id":194,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"3331:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":193,"id":195,"nodeType":"Return","src":"3324:19:1"}]},"documentation":{"id":188,"nodeType":"StructuredDocumentation","src":"3190:49:1","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":197,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3253:11:1","nodeType":"FunctionDefinition","overrides":{"id":190,"nodeType":"OverrideSpecifier","overrides":[],"src":"3287:8:1"},"parameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"3264:2:1"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":197,"src":"3305:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":191,"name":"uint256","nodeType":"ElementaryTypeName","src":"3305:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3304:9:1"},"scope":698,"src":"3244:106:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[733],"body":{"id":210,"nodeType":"Block","src":"3491:42:1","statements":[{"expression":{"baseExpression":{"id":206,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3508:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":208,"indexExpression":{"id":207,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":200,"src":"3518:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3508:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":205,"id":209,"nodeType":"Return","src":"3501:25:1"}]},"documentation":{"id":198,"nodeType":"StructuredDocumentation","src":"3356:47:1","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":211,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3417:9:1","nodeType":"FunctionDefinition","overrides":{"id":202,"nodeType":"OverrideSpecifier","overrides":[],"src":"3464:8:1"},"parameters":{"id":201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":200,"mutability":"mutable","name":"account","nameLocation":"3435:7:1","nodeType":"VariableDeclaration","scope":211,"src":"3427:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":199,"name":"address","nodeType":"ElementaryTypeName","src":"3427:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3426:17:1"},"returnParameters":{"id":205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":211,"src":"3482:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":203,"name":"uint256","nodeType":"ElementaryTypeName","src":"3482:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3481:9:1"},"scope":698,"src":"3408:125:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[743],"body":{"id":235,"nodeType":"Block","src":"3814:104:1","statements":[{"assignments":[223],"declarations":[{"constant":false,"id":223,"mutability":"mutable","name":"owner","nameLocation":"3832:5:1","nodeType":"VariableDeclaration","scope":235,"src":"3824:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"3824:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":226,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":224,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"3840:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3840:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3824:28:1"},{"expression":{"arguments":[{"id":228,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"3872:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":229,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"3879:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":230,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"3883:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":227,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":459,"src":"3862:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3862:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":232,"nodeType":"ExpressionStatement","src":"3862:28:1"},{"expression":{"hexValue":"74727565","id":233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3907:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":221,"id":234,"nodeType":"Return","src":"3900:11:1"}]},"documentation":{"id":212,"nodeType":"StructuredDocumentation","src":"3539:185:1","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":236,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3738:8:1","nodeType":"FunctionDefinition","overrides":{"id":218,"nodeType":"OverrideSpecifier","overrides":[],"src":"3790:8:1"},"parameters":{"id":217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"to","nameLocation":"3755:2:1","nodeType":"VariableDeclaration","scope":236,"src":"3747:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":213,"name":"address","nodeType":"ElementaryTypeName","src":"3747:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":216,"mutability":"mutable","name":"amount","nameLocation":"3767:6:1","nodeType":"VariableDeclaration","scope":236,"src":"3759:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":215,"name":"uint256","nodeType":"ElementaryTypeName","src":"3759:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3746:28:1"},"returnParameters":{"id":221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":220,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":236,"src":"3808:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":219,"name":"bool","nodeType":"ElementaryTypeName","src":"3808:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3807:6:1"},"scope":698,"src":"3729:189:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[753],"body":{"id":253,"nodeType":"Block","src":"4074:51:1","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":247,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4091:11:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":249,"indexExpression":{"id":248,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"4103:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4091:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":251,"indexExpression":{"id":250,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"4110:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4091:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":246,"id":252,"nodeType":"Return","src":"4084:34:1"}]},"documentation":{"id":237,"nodeType":"StructuredDocumentation","src":"3924:47:1","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":254,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3985:9:1","nodeType":"FunctionDefinition","overrides":{"id":243,"nodeType":"OverrideSpecifier","overrides":[],"src":"4047:8:1"},"parameters":{"id":242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":239,"mutability":"mutable","name":"owner","nameLocation":"4003:5:1","nodeType":"VariableDeclaration","scope":254,"src":"3995:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":238,"name":"address","nodeType":"ElementaryTypeName","src":"3995:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":241,"mutability":"mutable","name":"spender","nameLocation":"4018:7:1","nodeType":"VariableDeclaration","scope":254,"src":"4010:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":240,"name":"address","nodeType":"ElementaryTypeName","src":"4010:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3994:32:1"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":254,"src":"4065:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":244,"name":"uint256","nodeType":"ElementaryTypeName","src":"4065:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4064:9:1"},"scope":698,"src":"3976:149:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[763],"body":{"id":278,"nodeType":"Block","src":"4522:108:1","statements":[{"assignments":[266],"declarations":[{"constant":false,"id":266,"mutability":"mutable","name":"owner","nameLocation":"4540:5:1","nodeType":"VariableDeclaration","scope":278,"src":"4532:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"4532:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":269,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":267,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"4548:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4548:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4532:28:1"},{"expression":{"arguments":[{"id":271,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"4579:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":272,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"4586:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":273,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"4595:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":270,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"4570:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4570:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":275,"nodeType":"ExpressionStatement","src":"4570:32:1"},{"expression":{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4619:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":264,"id":277,"nodeType":"Return","src":"4612:11:1"}]},"documentation":{"id":255,"nodeType":"StructuredDocumentation","src":"4131:297:1","text":" @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":279,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4442:7:1","nodeType":"FunctionDefinition","overrides":{"id":261,"nodeType":"OverrideSpecifier","overrides":[],"src":"4498:8:1"},"parameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"spender","nameLocation":"4458:7:1","nodeType":"VariableDeclaration","scope":279,"src":"4450:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":256,"name":"address","nodeType":"ElementaryTypeName","src":"4450:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":259,"mutability":"mutable","name":"amount","nameLocation":"4475:6:1","nodeType":"VariableDeclaration","scope":279,"src":"4467:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":258,"name":"uint256","nodeType":"ElementaryTypeName","src":"4467:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4449:33:1"},"returnParameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":279,"src":"4516:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":262,"name":"bool","nodeType":"ElementaryTypeName","src":"4516:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4515:6:1"},"scope":698,"src":"4433:197:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[775],"body":{"id":311,"nodeType":"Block","src":"5325:153:1","statements":[{"assignments":[293],"declarations":[{"constant":false,"id":293,"mutability":"mutable","name":"spender","nameLocation":"5343:7:1","nodeType":"VariableDeclaration","scope":311,"src":"5335:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":292,"name":"address","nodeType":"ElementaryTypeName","src":"5335:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":296,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":294,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"5353:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5353:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5335:30:1"},{"expression":{"arguments":[{"id":298,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":282,"src":"5391:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":299,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"5397:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":300,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":286,"src":"5406:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":297,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":675,"src":"5375:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5375:38:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":302,"nodeType":"ExpressionStatement","src":"5375:38:1"},{"expression":{"arguments":[{"id":304,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":282,"src":"5433:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":305,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":284,"src":"5439:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":306,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":286,"src":"5443:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":303,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":459,"src":"5423:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5423:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":308,"nodeType":"ExpressionStatement","src":"5423:27:1"},{"expression":{"hexValue":"74727565","id":309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5467:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":291,"id":310,"nodeType":"Return","src":"5460:11:1"}]},"documentation":{"id":280,"nodeType":"StructuredDocumentation","src":"4636:551:1","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":312,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5201:12:1","nodeType":"FunctionDefinition","overrides":{"id":288,"nodeType":"OverrideSpecifier","overrides":[],"src":"5301:8:1"},"parameters":{"id":287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":282,"mutability":"mutable","name":"from","nameLocation":"5231:4:1","nodeType":"VariableDeclaration","scope":312,"src":"5223:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":281,"name":"address","nodeType":"ElementaryTypeName","src":"5223:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":284,"mutability":"mutable","name":"to","nameLocation":"5253:2:1","nodeType":"VariableDeclaration","scope":312,"src":"5245:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":283,"name":"address","nodeType":"ElementaryTypeName","src":"5245:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":286,"mutability":"mutable","name":"amount","nameLocation":"5273:6:1","nodeType":"VariableDeclaration","scope":312,"src":"5265:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":285,"name":"uint256","nodeType":"ElementaryTypeName","src":"5265:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5213:72:1"},"returnParameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":312,"src":"5319:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"5319:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5318:6:1"},"scope":698,"src":"5192:286:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":340,"nodeType":"Block","src":"5967:140:1","statements":[{"assignments":[323],"declarations":[{"constant":false,"id":323,"mutability":"mutable","name":"owner","nameLocation":"5985:5:1","nodeType":"VariableDeclaration","scope":340,"src":"5977:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":322,"name":"address","nodeType":"ElementaryTypeName","src":"5977:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":326,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":324,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"5993:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5993:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5977:28:1"},{"expression":{"arguments":[{"id":328,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":323,"src":"6024:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":329,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"6031:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":331,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":323,"src":"6050:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":332,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"6057:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":330,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"6040:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6040:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":334,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":317,"src":"6068:10:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6040:38:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":327,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"6015:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6015:64:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":337,"nodeType":"ExpressionStatement","src":"6015:64:1"},{"expression":{"hexValue":"74727565","id":338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6096:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":321,"id":339,"nodeType":"Return","src":"6089:11:1"}]},"documentation":{"id":313,"nodeType":"StructuredDocumentation","src":"5484:384:1","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":341,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nameLocation":"5882:17:1","nodeType":"FunctionDefinition","parameters":{"id":318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":315,"mutability":"mutable","name":"spender","nameLocation":"5908:7:1","nodeType":"VariableDeclaration","scope":341,"src":"5900:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"5900:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":317,"mutability":"mutable","name":"addedValue","nameLocation":"5925:10:1","nodeType":"VariableDeclaration","scope":341,"src":"5917:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":316,"name":"uint256","nodeType":"ElementaryTypeName","src":"5917:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5899:37:1"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":341,"src":"5961:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":319,"name":"bool","nodeType":"ElementaryTypeName","src":"5961:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5960:6:1"},"scope":698,"src":"5873:234:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":381,"nodeType":"Block","src":"6693:328:1","statements":[{"assignments":[352],"declarations":[{"constant":false,"id":352,"mutability":"mutable","name":"owner","nameLocation":"6711:5:1","nodeType":"VariableDeclaration","scope":381,"src":"6703:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":351,"name":"address","nodeType":"ElementaryTypeName","src":"6703:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":355,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":353,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"6719:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6719:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6703:28:1"},{"assignments":[357],"declarations":[{"constant":false,"id":357,"mutability":"mutable","name":"currentAllowance","nameLocation":"6749:16:1","nodeType":"VariableDeclaration","scope":381,"src":"6741:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"6741:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":362,"initialValue":{"arguments":[{"id":359,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"6778:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":360,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"6785:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":358,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"6768:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6768:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6741:52:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"6811:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":365,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"6831:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6811:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6848:39:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""},"value":"ERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""}],"id":363,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6803:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6803:85:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":369,"nodeType":"ExpressionStatement","src":"6803:85:1"},{"id":378,"nodeType":"UncheckedBlock","src":"6898:95:1","statements":[{"expression":{"arguments":[{"id":371,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"6931:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":372,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"6938:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"6947:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":374,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"6966:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6947:34:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":370,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"6922:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6922:60:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":377,"nodeType":"ExpressionStatement","src":"6922:60:1"}]},{"expression":{"hexValue":"74727565","id":379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7010:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":350,"id":380,"nodeType":"Return","src":"7003:11:1"}]},"documentation":{"id":342,"nodeType":"StructuredDocumentation","src":"6113:476:1","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":382,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nameLocation":"6603:17:1","nodeType":"FunctionDefinition","parameters":{"id":347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":344,"mutability":"mutable","name":"spender","nameLocation":"6629:7:1","nodeType":"VariableDeclaration","scope":382,"src":"6621:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":343,"name":"address","nodeType":"ElementaryTypeName","src":"6621:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":346,"mutability":"mutable","name":"subtractedValue","nameLocation":"6646:15:1","nodeType":"VariableDeclaration","scope":382,"src":"6638:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":345,"name":"uint256","nodeType":"ElementaryTypeName","src":"6638:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6620:42:1"},"returnParameters":{"id":350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":382,"src":"6687:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":348,"name":"bool","nodeType":"ElementaryTypeName","src":"6687:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6686:6:1"},"scope":698,"src":"6594:427:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":458,"nodeType":"Block","src":"7583:543:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":393,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"7601:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7617:1:1","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":395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7609:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"7609:7:1","typeDescriptions":{}}},"id":397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7609:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7601:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","id":399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7621:39:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""},"value":"ERC20: transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""}],"id":392,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7593:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7593:68:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":401,"nodeType":"ExpressionStatement","src":"7593:68:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":403,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"7679:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7693:1:1","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":405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7685:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":404,"name":"address","nodeType":"ElementaryTypeName","src":"7685:7:1","typeDescriptions":{}}},"id":407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7685:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7679:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","id":409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7697:37:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""},"value":"ERC20: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""}],"id":402,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7671:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7671:64:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":411,"nodeType":"ExpressionStatement","src":"7671:64:1"},{"expression":{"arguments":[{"id":413,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"7767:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":414,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"7773:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":415,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":389,"src":"7777:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":412,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"7746:20:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7746:38:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":417,"nodeType":"ExpressionStatement","src":"7746:38:1"},{"assignments":[419],"declarations":[{"constant":false,"id":419,"mutability":"mutable","name":"fromBalance","nameLocation":"7803:11:1","nodeType":"VariableDeclaration","scope":458,"src":"7795:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":418,"name":"uint256","nodeType":"ElementaryTypeName","src":"7795:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":423,"initialValue":{"baseExpression":{"id":420,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"7817:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":422,"indexExpression":{"id":421,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"7827:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7817:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7795:37:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":425,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"7850:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":426,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":389,"src":"7865:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7850:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7873:40:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"id":424,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7842:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7842:72:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":430,"nodeType":"ExpressionStatement","src":"7842:72:1"},{"id":439,"nodeType":"UncheckedBlock","src":"7924:73:1","statements":[{"expression":{"id":437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":431,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"7948:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":433,"indexExpression":{"id":432,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"7958:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7948:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":434,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"7966:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":435,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":389,"src":"7980:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7966:20:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7948:38:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":438,"nodeType":"ExpressionStatement","src":"7948:38:1"}]},{"expression":{"id":444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":440,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"8006:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":442,"indexExpression":{"id":441,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"8016:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8006:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":443,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":389,"src":"8023:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8006:23:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":445,"nodeType":"ExpressionStatement","src":"8006:23:1"},{"eventCall":{"arguments":[{"id":447,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"8054:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":448,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"8060:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":449,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":389,"src":"8064:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":446,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":710,"src":"8045:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8045:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":451,"nodeType":"EmitStatement","src":"8040:31:1"},{"expression":{"arguments":[{"id":453,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"8102:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":454,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"8108:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":455,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":389,"src":"8112:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":452,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"8082:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8082:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":457,"nodeType":"ExpressionStatement","src":"8082:37:1"}]},"documentation":{"id":383,"nodeType":"StructuredDocumentation","src":"7027:443:1","text":" @dev Moves `amount` of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."},"id":459,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"7484:9:1","nodeType":"FunctionDefinition","parameters":{"id":390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"mutability":"mutable","name":"from","nameLocation":"7511:4:1","nodeType":"VariableDeclaration","scope":459,"src":"7503:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":384,"name":"address","nodeType":"ElementaryTypeName","src":"7503:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":387,"mutability":"mutable","name":"to","nameLocation":"7533:2:1","nodeType":"VariableDeclaration","scope":459,"src":"7525:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":386,"name":"address","nodeType":"ElementaryTypeName","src":"7525:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":389,"mutability":"mutable","name":"amount","nameLocation":"7553:6:1","nodeType":"VariableDeclaration","scope":459,"src":"7545:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":388,"name":"uint256","nodeType":"ElementaryTypeName","src":"7545:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7493:72:1"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[],"src":"7583:0:1"},"scope":698,"src":"7475:651:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":514,"nodeType":"Block","src":"8467:324:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":468,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"8485:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8504:1:1","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":470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8496:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":469,"name":"address","nodeType":"ElementaryTypeName","src":"8496:7:1","typeDescriptions":{}}},"id":472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8496:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8485:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","id":474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8508:33:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""},"value":"ERC20: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""}],"id":467,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8477:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8477:65:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":476,"nodeType":"ExpressionStatement","src":"8477:65:1"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8582:1:1","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":479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8574:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":478,"name":"address","nodeType":"ElementaryTypeName","src":"8574:7:1","typeDescriptions":{}}},"id":481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8574:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":482,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"8586:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":483,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":464,"src":"8595:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":477,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"8553:20:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8553:49:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":485,"nodeType":"ExpressionStatement","src":"8553:49:1"},{"expression":{"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":486,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"8613:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":487,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":464,"src":"8629:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8613:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":489,"nodeType":"ExpressionStatement","src":"8613:22:1"},{"expression":{"id":494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":490,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"8645:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":492,"indexExpression":{"id":491,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"8655:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8645:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":493,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":464,"src":"8667:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8645:28:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":495,"nodeType":"ExpressionStatement","src":"8645:28:1"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8705:1:1","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":498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8697:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":497,"name":"address","nodeType":"ElementaryTypeName","src":"8697:7:1","typeDescriptions":{}}},"id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8697:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":501,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"8709:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":502,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":464,"src":"8718:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":496,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":710,"src":"8688:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8688:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":504,"nodeType":"EmitStatement","src":"8683:42:1"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8764:1:1","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":507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8756:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":506,"name":"address","nodeType":"ElementaryTypeName","src":"8756:7:1","typeDescriptions":{}}},"id":509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8756:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":510,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"8768:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":511,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":464,"src":"8777:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":505,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"8736:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8736:48:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":513,"nodeType":"ExpressionStatement","src":"8736:48:1"}]},"documentation":{"id":460,"nodeType":"StructuredDocumentation","src":"8132:265:1","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."},"id":515,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8411:5:1","nodeType":"FunctionDefinition","parameters":{"id":465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":462,"mutability":"mutable","name":"account","nameLocation":"8425:7:1","nodeType":"VariableDeclaration","scope":515,"src":"8417:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":461,"name":"address","nodeType":"ElementaryTypeName","src":"8417:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":464,"mutability":"mutable","name":"amount","nameLocation":"8442:6:1","nodeType":"VariableDeclaration","scope":515,"src":"8434:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":463,"name":"uint256","nodeType":"ElementaryTypeName","src":"8434:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8416:33:1"},"returnParameters":{"id":466,"nodeType":"ParameterList","parameters":[],"src":"8467:0:1"},"scope":698,"src":"8402:389:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":586,"nodeType":"Block","src":"9176:511:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":524,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"9194:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9213:1:1","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":526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9205:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"9205:7:1","typeDescriptions":{}}},"id":528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9205:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9194:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","id":530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9217:35:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""},"value":"ERC20: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""}],"id":523,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9186:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9186:67:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":532,"nodeType":"ExpressionStatement","src":"9186:67:1"},{"expression":{"arguments":[{"id":534,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"9285:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9302:1:1","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":536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9294:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":535,"name":"address","nodeType":"ElementaryTypeName","src":"9294:7:1","typeDescriptions":{}}},"id":538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9294:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":539,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"9306:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":533,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"9264:20:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9264:49:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":541,"nodeType":"ExpressionStatement","src":"9264:49:1"},{"assignments":[543],"declarations":[{"constant":false,"id":543,"mutability":"mutable","name":"accountBalance","nameLocation":"9332:14:1","nodeType":"VariableDeclaration","scope":586,"src":"9324:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":542,"name":"uint256","nodeType":"ElementaryTypeName","src":"9324:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":547,"initialValue":{"baseExpression":{"id":544,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"9349:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":546,"indexExpression":{"id":545,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"9359:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9349:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9324:43:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":549,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":543,"src":"9385:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":550,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"9403:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9385:24:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","id":552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9411:36:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""},"value":"ERC20: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""}],"id":548,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9377:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9377:71:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":554,"nodeType":"ExpressionStatement","src":"9377:71:1"},{"id":563,"nodeType":"UncheckedBlock","src":"9458:79:1","statements":[{"expression":{"id":561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":555,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"9482:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":557,"indexExpression":{"id":556,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"9492:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9482:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":558,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":543,"src":"9503:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":559,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"9520:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9503:23:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9482:44:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":562,"nodeType":"ExpressionStatement","src":"9482:44:1"}]},{"expression":{"id":566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":564,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"9546:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":565,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"9562:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9546:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":567,"nodeType":"ExpressionStatement","src":"9546:22:1"},{"eventCall":{"arguments":[{"id":569,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"9593:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9610:1:1","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":571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9602:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"9602:7:1","typeDescriptions":{}}},"id":573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9602:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":574,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"9614:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":568,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":710,"src":"9584:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9584:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":576,"nodeType":"EmitStatement","src":"9579:42:1"},{"expression":{"arguments":[{"id":578,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"9652:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9669:1:1","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":580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9661:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":579,"name":"address","nodeType":"ElementaryTypeName","src":"9661:7:1","typeDescriptions":{}}},"id":582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9661:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":583,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"9673:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":577,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"9632:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9632:48:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":585,"nodeType":"ExpressionStatement","src":"9632:48:1"}]},"documentation":{"id":516,"nodeType":"StructuredDocumentation","src":"8797:309:1","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":587,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9120:5:1","nodeType":"FunctionDefinition","parameters":{"id":521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":518,"mutability":"mutable","name":"account","nameLocation":"9134:7:1","nodeType":"VariableDeclaration","scope":587,"src":"9126:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":517,"name":"address","nodeType":"ElementaryTypeName","src":"9126:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":520,"mutability":"mutable","name":"amount","nameLocation":"9151:6:1","nodeType":"VariableDeclaration","scope":587,"src":"9143:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"9143:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9125:33:1"},"returnParameters":{"id":522,"nodeType":"ParameterList","parameters":[],"src":"9176:0:1"},"scope":698,"src":"9111:576:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":631,"nodeType":"Block","src":"10223:257:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":598,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"10241:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10258:1:1","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":600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10250:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":599,"name":"address","nodeType":"ElementaryTypeName","src":"10250:7:1","typeDescriptions":{}}},"id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10250:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10241:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","id":604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10262:38:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""},"value":"ERC20: approve from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""}],"id":597,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10233:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10233:68:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":606,"nodeType":"ExpressionStatement","src":"10233:68:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":608,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"10319:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10338:1:1","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":610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10330:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":609,"name":"address","nodeType":"ElementaryTypeName","src":"10330:7:1","typeDescriptions":{}}},"id":612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10330:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10319:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","id":614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10342:36:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""},"value":"ERC20: approve to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""}],"id":607,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10311:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10311:68:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":616,"nodeType":"ExpressionStatement","src":"10311:68:1"},{"expression":{"id":623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":617,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"10390:11:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":620,"indexExpression":{"id":618,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"10402:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10390:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":621,"indexExpression":{"id":619,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"10409:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10390:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":622,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"10420:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10390:36:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":624,"nodeType":"ExpressionStatement","src":"10390:36:1"},{"eventCall":{"arguments":[{"id":626,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"10450:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":627,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"10457:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":628,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"10466:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":625,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":719,"src":"10441:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10441:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":630,"nodeType":"EmitStatement","src":"10436:37:1"}]},"documentation":{"id":588,"nodeType":"StructuredDocumentation","src":"9693:412:1","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":632,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10119:8:1","nodeType":"FunctionDefinition","parameters":{"id":595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":590,"mutability":"mutable","name":"owner","nameLocation":"10145:5:1","nodeType":"VariableDeclaration","scope":632,"src":"10137:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":589,"name":"address","nodeType":"ElementaryTypeName","src":"10137:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":592,"mutability":"mutable","name":"spender","nameLocation":"10168:7:1","nodeType":"VariableDeclaration","scope":632,"src":"10160:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":591,"name":"address","nodeType":"ElementaryTypeName","src":"10160:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":594,"mutability":"mutable","name":"amount","nameLocation":"10193:6:1","nodeType":"VariableDeclaration","scope":632,"src":"10185:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":593,"name":"uint256","nodeType":"ElementaryTypeName","src":"10185:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10127:78:1"},"returnParameters":{"id":596,"nodeType":"ParameterList","parameters":[],"src":"10223:0:1"},"scope":698,"src":"10110:370:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":674,"nodeType":"Block","src":"10881:321:1","statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"currentAllowance","nameLocation":"10899:16:1","nodeType":"VariableDeclaration","scope":674,"src":"10891:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"10891:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":648,"initialValue":{"arguments":[{"id":645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":635,"src":"10928:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":646,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"10935:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":644,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"10918:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10918:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10891:52:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":649,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"10957:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10982:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":651,"name":"uint256","nodeType":"ElementaryTypeName","src":"10982:7:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":650,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10977:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10977:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"10977:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10957:37:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":673,"nodeType":"IfStatement","src":"10953:243:1","trueBody":{"id":672,"nodeType":"Block","src":"10996:200:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":657,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"11018:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":658,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"11038:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11018:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","id":660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11046:31:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""},"value":"ERC20: insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""}],"id":656,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11010:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11010:68:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":662,"nodeType":"ExpressionStatement","src":"11010:68:1"},{"id":671,"nodeType":"UncheckedBlock","src":"11092:94:1","statements":[{"expression":{"arguments":[{"id":664,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":635,"src":"11129:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":665,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"11136:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":666,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"11145:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":667,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"11164:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11145:25:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":663,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"11120:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11120:51:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":670,"nodeType":"ExpressionStatement","src":"11120:51:1"}]}]}}]},"documentation":{"id":633,"nodeType":"StructuredDocumentation","src":"10486:270:1","text":" @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."},"id":675,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10770:15:1","nodeType":"FunctionDefinition","parameters":{"id":640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":635,"mutability":"mutable","name":"owner","nameLocation":"10803:5:1","nodeType":"VariableDeclaration","scope":675,"src":"10795:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":634,"name":"address","nodeType":"ElementaryTypeName","src":"10795:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"spender","nameLocation":"10826:7:1","nodeType":"VariableDeclaration","scope":675,"src":"10818:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":636,"name":"address","nodeType":"ElementaryTypeName","src":"10818:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":639,"mutability":"mutable","name":"amount","nameLocation":"10851:6:1","nodeType":"VariableDeclaration","scope":675,"src":"10843:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":638,"name":"uint256","nodeType":"ElementaryTypeName","src":"10843:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10785:78:1"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[],"src":"10881:0:1"},"scope":698,"src":"10761:441:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":685,"nodeType":"Block","src":"11905:2:1","statements":[]},"documentation":{"id":676,"nodeType":"StructuredDocumentation","src":"11208:573:1","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":686,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"11795:20:1","nodeType":"FunctionDefinition","parameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":678,"mutability":"mutable","name":"from","nameLocation":"11833:4:1","nodeType":"VariableDeclaration","scope":686,"src":"11825:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":677,"name":"address","nodeType":"ElementaryTypeName","src":"11825:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":680,"mutability":"mutable","name":"to","nameLocation":"11855:2:1","nodeType":"VariableDeclaration","scope":686,"src":"11847:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":679,"name":"address","nodeType":"ElementaryTypeName","src":"11847:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":682,"mutability":"mutable","name":"amount","nameLocation":"11875:6:1","nodeType":"VariableDeclaration","scope":686,"src":"11867:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":681,"name":"uint256","nodeType":"ElementaryTypeName","src":"11867:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11815:72:1"},"returnParameters":{"id":684,"nodeType":"ParameterList","parameters":[],"src":"11905:0:1"},"scope":698,"src":"11786:121:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":696,"nodeType":"Block","src":"12613:2:1","statements":[]},"documentation":{"id":687,"nodeType":"StructuredDocumentation","src":"11913:577:1","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":697,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"12504:19:1","nodeType":"FunctionDefinition","parameters":{"id":694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":689,"mutability":"mutable","name":"from","nameLocation":"12541:4:1","nodeType":"VariableDeclaration","scope":697,"src":"12533:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":688,"name":"address","nodeType":"ElementaryTypeName","src":"12533:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":691,"mutability":"mutable","name":"to","nameLocation":"12563:2:1","nodeType":"VariableDeclaration","scope":697,"src":"12555:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":690,"name":"address","nodeType":"ElementaryTypeName","src":"12555:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":693,"mutability":"mutable","name":"amount","nameLocation":"12583:6:1","nodeType":"VariableDeclaration","scope":697,"src":"12575:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":692,"name":"uint256","nodeType":"ElementaryTypeName","src":"12575:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12523:72:1"},"returnParameters":{"id":695,"nodeType":"ParameterList","parameters":[],"src":"12613:0:1"},"scope":698,"src":"12495:120:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":699,"src":"1403:11214:1","usedErrors":[]}],"src":"105:12513:1"},"id":1},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[776]},"id":777,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":700,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":701,"nodeType":"StructuredDocumentation","src":"131:70:2","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":776,"linearizedBaseContracts":[776],"name":"IERC20","nameLocation":"212:6:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":702,"nodeType":"StructuredDocumentation","src":"225:158:2","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":710,"name":"Transfer","nameLocation":"394:8:2","nodeType":"EventDefinition","parameters":{"id":709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":704,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:2","nodeType":"VariableDeclaration","scope":710,"src":"403:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":703,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":706,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:2","nodeType":"VariableDeclaration","scope":710,"src":"425:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":705,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":708,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:2","nodeType":"VariableDeclaration","scope":710,"src":"445:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":707,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:2"},"src":"388:72:2"},{"anonymous":false,"documentation":{"id":711,"nodeType":"StructuredDocumentation","src":"466:148:2","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":719,"name":"Approval","nameLocation":"625:8:2","nodeType":"EventDefinition","parameters":{"id":718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":713,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:2","nodeType":"VariableDeclaration","scope":719,"src":"634:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":712,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":715,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:2","nodeType":"VariableDeclaration","scope":719,"src":"657:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":714,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":717,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:2","nodeType":"VariableDeclaration","scope":719,"src":"682:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":716,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:2"},"src":"619:78:2"},{"documentation":{"id":720,"nodeType":"StructuredDocumentation","src":"703:66:2","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":725,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:2","nodeType":"FunctionDefinition","parameters":{"id":721,"nodeType":"ParameterList","parameters":[],"src":"794:2:2"},"returnParameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":723,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":725,"src":"820:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":722,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:2"},"scope":776,"src":"774:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":726,"nodeType":"StructuredDocumentation","src":"835:72:2","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":733,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:2","nodeType":"FunctionDefinition","parameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":728,"mutability":"mutable","name":"account","nameLocation":"939:7:2","nodeType":"VariableDeclaration","scope":733,"src":"931:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":727,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:2"},"returnParameters":{"id":732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":733,"src":"971:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":730,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:2"},"scope":776,"src":"912:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":734,"nodeType":"StructuredDocumentation","src":"986:202:2","text":" @dev Moves `amount` 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":743,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:2","nodeType":"FunctionDefinition","parameters":{"id":739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":736,"mutability":"mutable","name":"to","nameLocation":"1219:2:2","nodeType":"VariableDeclaration","scope":743,"src":"1211:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":735,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":738,"mutability":"mutable","name":"amount","nameLocation":"1231:6:2","nodeType":"VariableDeclaration","scope":743,"src":"1223:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":737,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:2"},"returnParameters":{"id":742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":741,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":743,"src":"1257:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":740,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:2"},"scope":776,"src":"1193:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":744,"nodeType":"StructuredDocumentation","src":"1269:264:2","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":753,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:2","nodeType":"FunctionDefinition","parameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"owner","nameLocation":"1565:5:2","nodeType":"VariableDeclaration","scope":753,"src":"1557:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":745,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"spender","nameLocation":"1580:7:2","nodeType":"VariableDeclaration","scope":753,"src":"1572:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":747,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:2"},"returnParameters":{"id":752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":753,"src":"1612:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":750,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:2"},"scope":776,"src":"1538:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":754,"nodeType":"StructuredDocumentation","src":"1627:642:2","text":" @dev Sets `amount` as the allowance of `spender` over the 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":763,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:2","nodeType":"FunctionDefinition","parameters":{"id":759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":756,"mutability":"mutable","name":"spender","nameLocation":"2299:7:2","nodeType":"VariableDeclaration","scope":763,"src":"2291:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":755,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":758,"mutability":"mutable","name":"amount","nameLocation":"2316:6:2","nodeType":"VariableDeclaration","scope":763,"src":"2308:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":757,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:2"},"returnParameters":{"id":762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":763,"src":"2342:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":760,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:2"},"scope":776,"src":"2274:74:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":764,"nodeType":"StructuredDocumentation","src":"2354:287:2","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` 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":775,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:2","nodeType":"FunctionDefinition","parameters":{"id":771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"from","nameLocation":"2685:4:2","nodeType":"VariableDeclaration","scope":775,"src":"2677:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":765,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":768,"mutability":"mutable","name":"to","nameLocation":"2707:2:2","nodeType":"VariableDeclaration","scope":775,"src":"2699:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":767,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":770,"mutability":"mutable","name":"amount","nameLocation":"2727:6:2","nodeType":"VariableDeclaration","scope":775,"src":"2719:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":769,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:2"},"returnParameters":{"id":774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":775,"src":"2758:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":772,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:2"},"scope":776,"src":"2646:118:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":777,"src":"202:2564:2","usedErrors":[]}],"src":"106:2661:2"},"id":2},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[776],"IERC20Metadata":[801]},"id":802,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":778,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":779,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":802,"sourceUnit":777,"src":"135:23:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":781,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":776,"src":"305:6:3"},"id":782,"nodeType":"InheritanceSpecifier","src":"305:6:3"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":780,"nodeType":"StructuredDocumentation","src":"160:116:3","text":" @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"},"fullyImplemented":false,"id":801,"linearizedBaseContracts":[801,776],"name":"IERC20Metadata","nameLocation":"287:14:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"318:54:3","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":788,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:3","nodeType":"FunctionDefinition","parameters":{"id":784,"nodeType":"ParameterList","parameters":[],"src":"390:2:3"},"returnParameters":{"id":787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":786,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":788,"src":"416:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":785,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:3"},"scope":801,"src":"377:54:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":789,"nodeType":"StructuredDocumentation","src":"437:56:3","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":794,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:3","nodeType":"FunctionDefinition","parameters":{"id":790,"nodeType":"ParameterList","parameters":[],"src":"513:2:3"},"returnParameters":{"id":793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":794,"src":"539:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":791,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:3"},"scope":801,"src":"498:56:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":795,"nodeType":"StructuredDocumentation","src":"560:65:3","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":800,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:3","nodeType":"FunctionDefinition","parameters":{"id":796,"nodeType":"ParameterList","parameters":[],"src":"647:2:3"},"returnParameters":{"id":799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":798,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":800,"src":"673:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":797,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:3"},"scope":801,"src":"630:50:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":802,"src":"277:405:3","usedErrors":[]}],"src":"110:573:3"},"id":3},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Address":[2124],"Context":[2146],"ERC165":[2396],"ERC721":[1668],"IERC165":[2408],"IERC721":[1784],"IERC721Metadata":[1829],"IERC721Receiver":[1802],"Strings":[2372]},"id":1669,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":803,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:4"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":804,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1669,"sourceUnit":1785,"src":"132:23:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","id":805,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1669,"sourceUnit":1803,"src":"156:31:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","id":806,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1669,"sourceUnit":1830,"src":"188:42:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":807,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1669,"sourceUnit":2125,"src":"231:33:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":808,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1669,"sourceUnit":2147,"src":"265:33:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":809,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1669,"sourceUnit":2373,"src":"299:33:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":810,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1669,"sourceUnit":2397,"src":"333:46:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":812,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":2146,"src":"647:7:4"},"id":813,"nodeType":"InheritanceSpecifier","src":"647:7:4"},{"baseName":{"id":814,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":2396,"src":"656:6:4"},"id":815,"nodeType":"InheritanceSpecifier","src":"656:6:4"},{"baseName":{"id":816,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":1784,"src":"664:7:4"},"id":817,"nodeType":"InheritanceSpecifier","src":"664:7:4"},{"baseName":{"id":818,"name":"IERC721Metadata","nodeType":"IdentifierPath","referencedDeclaration":1829,"src":"673:15:4"},"id":819,"nodeType":"InheritanceSpecifier","src":"673:15:4"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":811,"nodeType":"StructuredDocumentation","src":"381:246:4","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"id":1668,"linearizedBaseContracts":[1668,1829,1784,2396,2408,2146],"name":"ERC721","nameLocation":"637:6:4","nodeType":"ContractDefinition","nodes":[{"global":false,"id":822,"libraryName":{"id":820,"name":"Address","nodeType":"IdentifierPath","referencedDeclaration":2124,"src":"701:7:4"},"nodeType":"UsingForDirective","src":"695:26:4","typeName":{"id":821,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":825,"libraryName":{"id":823,"name":"Strings","nodeType":"IdentifierPath","referencedDeclaration":2372,"src":"732:7:4"},"nodeType":"UsingForDirective","src":"726:26:4","typeName":{"id":824,"name":"uint256","nodeType":"ElementaryTypeName","src":"744:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":827,"mutability":"mutable","name":"_name","nameLocation":"791:5:4","nodeType":"VariableDeclaration","scope":1668,"src":"776:20:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":826,"name":"string","nodeType":"ElementaryTypeName","src":"776:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":829,"mutability":"mutable","name":"_symbol","nameLocation":"838:7:4","nodeType":"VariableDeclaration","scope":1668,"src":"823:22:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":828,"name":"string","nodeType":"ElementaryTypeName","src":"823:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":833,"mutability":"mutable","name":"_owners","nameLocation":"934:7:4","nodeType":"VariableDeclaration","scope":1668,"src":"898:43:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":832,"keyType":{"id":830,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"898:27:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":831,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":837,"mutability":"mutable","name":"_balances","nameLocation":"1028:9:4","nodeType":"VariableDeclaration","scope":1668,"src":"992:45:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":836,"keyType":{"id":834,"name":"address","nodeType":"ElementaryTypeName","src":"1000:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"992:27:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":835,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":841,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1129:15:4","nodeType":"VariableDeclaration","scope":1668,"src":"1093:51:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":840,"keyType":{"id":838,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1093:27:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":839,"name":"address","nodeType":"ElementaryTypeName","src":"1112:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":847,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1252:18:4","nodeType":"VariableDeclaration","scope":1668,"src":"1199:71:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":846,"keyType":{"id":842,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1199:44:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":845,"keyType":{"id":843,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1218:24:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":844,"name":"bool","nodeType":"ElementaryTypeName","src":"1237:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":863,"nodeType":"Block","src":"1446:57:4","statements":[{"expression":{"id":857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":855,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"1456:5:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":856,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"1464:5:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1456:13:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":858,"nodeType":"ExpressionStatement","src":"1456:13:4"},{"expression":{"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":859,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"1479:7:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":860,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"1489:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1479:17:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":862,"nodeType":"ExpressionStatement","src":"1479:17:4"}]},"documentation":{"id":848,"nodeType":"StructuredDocumentation","src":"1277:108:4","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":864,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"mutability":"mutable","name":"name_","nameLocation":"1416:5:4","nodeType":"VariableDeclaration","scope":864,"src":"1402:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":849,"name":"string","nodeType":"ElementaryTypeName","src":"1402:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":852,"mutability":"mutable","name":"symbol_","nameLocation":"1437:7:4","nodeType":"VariableDeclaration","scope":864,"src":"1423:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":851,"name":"string","nodeType":"ElementaryTypeName","src":"1423:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1401:44:4"},"returnParameters":{"id":854,"nodeType":"ParameterList","parameters":[],"src":"1446:0:4"},"scope":1668,"src":"1390:113:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2395,2407],"body":{"id":894,"nodeType":"Block","src":"1678:192:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":875,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"1707:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":877,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"1727:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1784_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1784_$","typeString":"type(contract IERC721)"}],"id":876,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1722:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1722:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1784","typeString":"type(contract IERC721)"}},"id":879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"1722:25:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1707:40:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":881,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"1763:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":883,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"1783:15:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1829_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1829_$","typeString":"type(contract IERC721Metadata)"}],"id":882,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1778:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1778:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1829","typeString":"type(contract IERC721Metadata)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"1778:33:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1763:48:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:104:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":890,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"1851:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":888,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1827:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$1668_$","typeString":"type(contract super ERC721)"}},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2395,"src":"1827:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1827:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:156:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":874,"id":893,"nodeType":"Return","src":"1688:175:4"}]},"documentation":{"id":865,"nodeType":"StructuredDocumentation","src":"1509:56:4","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":895,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1579:17:4","nodeType":"FunctionDefinition","overrides":{"id":871,"nodeType":"OverrideSpecifier","overrides":[{"id":869,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":2396,"src":"1646:6:4"},{"id":870,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":2408,"src":"1654:7:4"}],"src":"1637:25:4"},"parameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":867,"mutability":"mutable","name":"interfaceId","nameLocation":"1604:11:4","nodeType":"VariableDeclaration","scope":895,"src":"1597:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":866,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1597:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1596:20:4"},"returnParameters":{"id":874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":895,"src":"1672:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":872,"name":"bool","nodeType":"ElementaryTypeName","src":"1672:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1671:6:4"},"scope":1668,"src":"1570:300:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1709],"body":{"id":918,"nodeType":"Block","src":"2010:123:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":905,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":898,"src":"2028:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2045:1:4","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":907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2037:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":906,"name":"address","nodeType":"ElementaryTypeName","src":"2037:7:4","typeDescriptions":{}}},"id":909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2037:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2028:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2049:43:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":904,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2020:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2020:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":913,"nodeType":"ExpressionStatement","src":"2020:73:4"},{"expression":{"baseExpression":{"id":914,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":837,"src":"2110:9:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":916,"indexExpression":{"id":915,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":898,"src":"2120:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2110:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":903,"id":917,"nodeType":"Return","src":"2103:23:4"}]},"documentation":{"id":896,"nodeType":"StructuredDocumentation","src":"1876:48:4","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":919,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1938:9:4","nodeType":"FunctionDefinition","overrides":{"id":900,"nodeType":"OverrideSpecifier","overrides":[],"src":"1983:8:4"},"parameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"owner","nameLocation":"1956:5:4","nodeType":"VariableDeclaration","scope":919,"src":"1948:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":897,"name":"address","nodeType":"ElementaryTypeName","src":"1948:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1947:15:4"},"returnParameters":{"id":903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":902,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":919,"src":"2001:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":901,"name":"uint256","nodeType":"ElementaryTypeName","src":"2001:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2000:9:4"},"scope":1668,"src":"1929:204:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1717],"body":{"id":946,"nodeType":"Block","src":"2271:137:4","statements":[{"assignments":[929],"declarations":[{"constant":false,"id":929,"mutability":"mutable","name":"owner","nameLocation":"2289:5:4","nodeType":"VariableDeclaration","scope":946,"src":"2281:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":928,"name":"address","nodeType":"ElementaryTypeName","src":"2281:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":933,"initialValue":{"baseExpression":{"id":930,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"2297:7:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":932,"indexExpression":{"id":931,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"2305:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2297:16:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2281:32:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":935,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":929,"src":"2331:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2348:1:4","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":937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2340:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"2340:7:4","typeDescriptions":{}}},"id":939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2340:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2331:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2352:26:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":934,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2323:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2323:56:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":943,"nodeType":"ExpressionStatement","src":"2323:56:4"},{"expression":{"id":944,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":929,"src":"2396:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":927,"id":945,"nodeType":"Return","src":"2389:12:4"}]},"documentation":{"id":920,"nodeType":"StructuredDocumentation","src":"2139:46:4","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":947,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2199:7:4","nodeType":"FunctionDefinition","overrides":{"id":924,"nodeType":"OverrideSpecifier","overrides":[],"src":"2244:8:4"},"parameters":{"id":923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":922,"mutability":"mutable","name":"tokenId","nameLocation":"2215:7:4","nodeType":"VariableDeclaration","scope":947,"src":"2207:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":921,"name":"uint256","nodeType":"ElementaryTypeName","src":"2207:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2206:17:4"},"returnParameters":{"id":927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":926,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":947,"src":"2262:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":925,"name":"address","nodeType":"ElementaryTypeName","src":"2262:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2261:9:4"},"scope":1668,"src":"2190:218:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1814],"body":{"id":956,"nodeType":"Block","src":"2539:29:4","statements":[{"expression":{"id":954,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"2556:5:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":953,"id":955,"nodeType":"Return","src":"2549:12:4"}]},"documentation":{"id":948,"nodeType":"StructuredDocumentation","src":"2414:51:4","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":957,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2479:4:4","nodeType":"FunctionDefinition","overrides":{"id":950,"nodeType":"OverrideSpecifier","overrides":[],"src":"2506:8:4"},"parameters":{"id":949,"nodeType":"ParameterList","parameters":[],"src":"2483:2:4"},"returnParameters":{"id":953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":957,"src":"2524:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":951,"name":"string","nodeType":"ElementaryTypeName","src":"2524:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2523:15:4"},"scope":1668,"src":"2470:98:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1820],"body":{"id":966,"nodeType":"Block","src":"2703:31:4","statements":[{"expression":{"id":964,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"2720:7:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":963,"id":965,"nodeType":"Return","src":"2713:14:4"}]},"documentation":{"id":958,"nodeType":"StructuredDocumentation","src":"2574:53:4","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":967,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2641:6:4","nodeType":"FunctionDefinition","overrides":{"id":960,"nodeType":"OverrideSpecifier","overrides":[],"src":"2670:8:4"},"parameters":{"id":959,"nodeType":"ParameterList","parameters":[],"src":"2647:2:4"},"returnParameters":{"id":963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":962,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":967,"src":"2688:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":961,"name":"string","nodeType":"ElementaryTypeName","src":"2688:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2687:15:4"},"scope":1668,"src":"2632:102:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1828],"body":{"id":1005,"nodeType":"Block","src":"2888:188:4","statements":[{"expression":{"arguments":[{"id":977,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"2913:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":976,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1583,"src":"2898:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2898:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":979,"nodeType":"ExpressionStatement","src":"2898:23:4"},{"assignments":[981],"declarations":[{"constant":false,"id":981,"mutability":"mutable","name":"baseURI","nameLocation":"2946:7:4","nodeType":"VariableDeclaration","scope":1005,"src":"2932:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":980,"name":"string","nodeType":"ElementaryTypeName","src":"2932:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":984,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":982,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1015,"src":"2956:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2956:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2932:34:4"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":987,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"2989:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2983:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":985,"name":"bytes","nodeType":"ElementaryTypeName","src":"2983:5:4","typeDescriptions":{}}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2983:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2983:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3007:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2983:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3067:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2983:86:4","trueExpression":{"arguments":[{"arguments":[{"id":996,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"3035:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":997,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"3044:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":2234,"src":"3044:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3044:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":994,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3018:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3018:16:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3018:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3011:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":992,"name":"string","nodeType":"ElementaryTypeName","src":"3011:6:4","typeDescriptions":{}}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3011:53:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":975,"id":1004,"nodeType":"Return","src":"2976:93:4"}]},"documentation":{"id":968,"nodeType":"StructuredDocumentation","src":"2740:55:4","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":1006,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2809:8:4","nodeType":"FunctionDefinition","overrides":{"id":972,"nodeType":"OverrideSpecifier","overrides":[],"src":"2855:8:4"},"parameters":{"id":971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":970,"mutability":"mutable","name":"tokenId","nameLocation":"2826:7:4","nodeType":"VariableDeclaration","scope":1006,"src":"2818:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":969,"name":"uint256","nodeType":"ElementaryTypeName","src":"2818:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2817:17:4"},"returnParameters":{"id":975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":974,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1006,"src":"2873:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":973,"name":"string","nodeType":"ElementaryTypeName","src":"2873:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2872:15:4"},"scope":1668,"src":"2800:276:4","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1014,"nodeType":"Block","src":"3384:26:4","statements":[{"expression":{"hexValue":"","id":1012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3401:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1011,"id":1013,"nodeType":"Return","src":"3394:9:4"}]},"documentation":{"id":1007,"nodeType":"StructuredDocumentation","src":"3082:231:4","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":1015,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3327:8:4","nodeType":"FunctionDefinition","parameters":{"id":1008,"nodeType":"ParameterList","parameters":[],"src":"3335:2:4"},"returnParameters":{"id":1011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1010,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1015,"src":"3369:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1009,"name":"string","nodeType":"ElementaryTypeName","src":"3369:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3368:15:4"},"scope":1668,"src":"3318:92:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1757],"body":{"id":1057,"nodeType":"Block","src":"3537:337:4","statements":[{"assignments":[1025],"declarations":[{"constant":false,"id":1025,"mutability":"mutable","name":"owner","nameLocation":"3555:5:4","nodeType":"VariableDeclaration","scope":1057,"src":"3547:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1024,"name":"address","nodeType":"ElementaryTypeName","src":"3547:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1030,"initialValue":{"arguments":[{"id":1028,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"3578:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1026,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"3563:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1668_$","typeString":"type(contract ERC721)"}},"id":1027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":947,"src":"3563:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3563:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3547:39:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1032,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1018,"src":"3604:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1033,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"3610:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3604:11:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":1035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3617:35:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":1031,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3596:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3596:57:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1037,"nodeType":"ExpressionStatement","src":"3596:57:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1039,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"3685:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3685:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1041,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"3701:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3685:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1044,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"3727:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"3734:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3734:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1043,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1111,"src":"3710:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":1047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3710:37:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3685:62:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3761:64:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""},"value":"ERC721: approve caller is not token owner nor approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""}],"id":1038,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3664:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3664:171:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1051,"nodeType":"ExpressionStatement","src":"3664:171:4"},{"expression":{"arguments":[{"id":1053,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1018,"src":"3855:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"3859:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1052,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"3846:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3846:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1056,"nodeType":"ExpressionStatement","src":"3846:21:4"}]},"documentation":{"id":1016,"nodeType":"StructuredDocumentation","src":"3416:46:4","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":1058,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3476:7:4","nodeType":"FunctionDefinition","overrides":{"id":1022,"nodeType":"OverrideSpecifier","overrides":[],"src":"3528:8:4"},"parameters":{"id":1021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1018,"mutability":"mutable","name":"to","nameLocation":"3492:2:4","nodeType":"VariableDeclaration","scope":1058,"src":"3484:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1017,"name":"address","nodeType":"ElementaryTypeName","src":"3484:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1020,"mutability":"mutable","name":"tokenId","nameLocation":"3504:7:4","nodeType":"VariableDeclaration","scope":1058,"src":"3496:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1019,"name":"uint256","nodeType":"ElementaryTypeName","src":"3496:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3483:29:4"},"returnParameters":{"id":1023,"nodeType":"ParameterList","parameters":[],"src":"3537:0:4"},"scope":1668,"src":"3467:407:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1773],"body":{"id":1075,"nodeType":"Block","src":"4020:82:4","statements":[{"expression":{"arguments":[{"id":1068,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1061,"src":"4045:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1067,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1583,"src":"4030:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":1069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4030:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1070,"nodeType":"ExpressionStatement","src":"4030:23:4"},{"expression":{"baseExpression":{"id":1071,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":841,"src":"4071:15:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1073,"indexExpression":{"id":1072,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1061,"src":"4087:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4071:24:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1066,"id":1074,"nodeType":"Return","src":"4064:31:4"}]},"documentation":{"id":1059,"nodeType":"StructuredDocumentation","src":"3880:50:4","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":1076,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3944:11:4","nodeType":"FunctionDefinition","overrides":{"id":1063,"nodeType":"OverrideSpecifier","overrides":[],"src":"3993:8:4"},"parameters":{"id":1062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"mutability":"mutable","name":"tokenId","nameLocation":"3964:7:4","nodeType":"VariableDeclaration","scope":1076,"src":"3956:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1060,"name":"uint256","nodeType":"ElementaryTypeName","src":"3956:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3955:17:4"},"returnParameters":{"id":1066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1076,"src":"4011:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1064,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4010:9:4"},"scope":1668,"src":"3935:167:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1765],"body":{"id":1092,"nodeType":"Block","src":"4253:69:4","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1086,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"4282:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4282:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1088,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"4296:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1089,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"4306:8:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1085,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1569,"src":"4263:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4263:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1091,"nodeType":"ExpressionStatement","src":"4263:52:4"}]},"documentation":{"id":1077,"nodeType":"StructuredDocumentation","src":"4108:56:4","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":1093,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4178:17:4","nodeType":"FunctionDefinition","overrides":{"id":1083,"nodeType":"OverrideSpecifier","overrides":[],"src":"4244:8:4"},"parameters":{"id":1082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1079,"mutability":"mutable","name":"operator","nameLocation":"4204:8:4","nodeType":"VariableDeclaration","scope":1093,"src":"4196:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1078,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1081,"mutability":"mutable","name":"approved","nameLocation":"4219:8:4","nodeType":"VariableDeclaration","scope":1093,"src":"4214:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1080,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4195:33:4"},"returnParameters":{"id":1084,"nodeType":"ParameterList","parameters":[],"src":"4253:0:4"},"scope":1668,"src":"4169:153:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1783],"body":{"id":1110,"nodeType":"Block","src":"4491:59:4","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":1104,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"4508:18:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1106,"indexExpression":{"id":1105,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"4527:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:25:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1108,"indexExpression":{"id":1107,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1098,"src":"4534:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:35:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1103,"id":1109,"nodeType":"Return","src":"4501:42:4"}]},"documentation":{"id":1094,"nodeType":"StructuredDocumentation","src":"4328:55:4","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":1111,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4397:16:4","nodeType":"FunctionDefinition","overrides":{"id":1100,"nodeType":"OverrideSpecifier","overrides":[],"src":"4467:8:4"},"parameters":{"id":1099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1096,"mutability":"mutable","name":"owner","nameLocation":"4422:5:4","nodeType":"VariableDeclaration","scope":1111,"src":"4414:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1095,"name":"address","nodeType":"ElementaryTypeName","src":"4414:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1098,"mutability":"mutable","name":"operator","nameLocation":"4437:8:4","nodeType":"VariableDeclaration","scope":1111,"src":"4429:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1097,"name":"address","nodeType":"ElementaryTypeName","src":"4429:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4413:33:4"},"returnParameters":{"id":1103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1111,"src":"4485:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1101,"name":"bool","nodeType":"ElementaryTypeName","src":"4485:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4484:6:4"},"scope":1668,"src":"4388:162:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1749],"body":{"id":1137,"nodeType":"Block","src":"4731:208:4","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1124,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"4820:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4820:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1126,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4834:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1123,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1268,"src":"4801:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":1127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4801:41:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":1128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4844:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":1122,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4793:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4793:100:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1130,"nodeType":"ExpressionStatement","src":"4793:100:4"},{"expression":{"arguments":[{"id":1132,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1114,"src":"4914:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1133,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"4920:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1134,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4924:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1131,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"4904:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4904:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1136,"nodeType":"ExpressionStatement","src":"4904:28:4"}]},"documentation":{"id":1112,"nodeType":"StructuredDocumentation","src":"4556:51:4","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":1138,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4621:12:4","nodeType":"FunctionDefinition","overrides":{"id":1120,"nodeType":"OverrideSpecifier","overrides":[],"src":"4722:8:4"},"parameters":{"id":1119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1114,"mutability":"mutable","name":"from","nameLocation":"4651:4:4","nodeType":"VariableDeclaration","scope":1138,"src":"4643:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1113,"name":"address","nodeType":"ElementaryTypeName","src":"4643:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1116,"mutability":"mutable","name":"to","nameLocation":"4673:2:4","nodeType":"VariableDeclaration","scope":1138,"src":"4665:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1115,"name":"address","nodeType":"ElementaryTypeName","src":"4665:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1118,"mutability":"mutable","name":"tokenId","nameLocation":"4693:7:4","nodeType":"VariableDeclaration","scope":1138,"src":"4685:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1117,"name":"uint256","nodeType":"ElementaryTypeName","src":"4685:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4633:73:4"},"returnParameters":{"id":1121,"nodeType":"ParameterList","parameters":[],"src":"4731:0:4"},"scope":1668,"src":"4612:327:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1739],"body":{"id":1156,"nodeType":"Block","src":"5128:56:4","statements":[{"expression":{"arguments":[{"id":1150,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"5155:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1151,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"5161:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1152,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"5165:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":1153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5174:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1149,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[1157,1187],"referencedDeclaration":1187,"src":"5138:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":1154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5138:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1155,"nodeType":"ExpressionStatement","src":"5138:39:4"}]},"documentation":{"id":1139,"nodeType":"StructuredDocumentation","src":"4945:55:4","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":1157,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5014:16:4","nodeType":"FunctionDefinition","overrides":{"id":1147,"nodeType":"OverrideSpecifier","overrides":[],"src":"5119:8:4"},"parameters":{"id":1146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1141,"mutability":"mutable","name":"from","nameLocation":"5048:4:4","nodeType":"VariableDeclaration","scope":1157,"src":"5040:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1140,"name":"address","nodeType":"ElementaryTypeName","src":"5040:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1143,"mutability":"mutable","name":"to","nameLocation":"5070:2:4","nodeType":"VariableDeclaration","scope":1157,"src":"5062:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1142,"name":"address","nodeType":"ElementaryTypeName","src":"5062:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1145,"mutability":"mutable","name":"tokenId","nameLocation":"5090:7:4","nodeType":"VariableDeclaration","scope":1157,"src":"5082:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1144,"name":"uint256","nodeType":"ElementaryTypeName","src":"5082:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5030:73:4"},"returnParameters":{"id":1148,"nodeType":"ParameterList","parameters":[],"src":"5128:0:4"},"scope":1668,"src":"5005:179:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1729],"body":{"id":1186,"nodeType":"Block","src":"5400:165:4","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1172,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"5437:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5437:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1174,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"5451:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1171,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1268,"src":"5418:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5418:41:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5461:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":1170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5410:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5410:100:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1178,"nodeType":"ExpressionStatement","src":"5410:100:4"},{"expression":{"arguments":[{"id":1180,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"5534:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1181,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"5540:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1182,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"5544:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1183,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"5553:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1179,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"5520:13:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5520:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1185,"nodeType":"ExpressionStatement","src":"5520:38:4"}]},"documentation":{"id":1158,"nodeType":"StructuredDocumentation","src":"5190:55:4","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":1187,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5259:16:4","nodeType":"FunctionDefinition","overrides":{"id":1168,"nodeType":"OverrideSpecifier","overrides":[],"src":"5391:8:4"},"parameters":{"id":1167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1160,"mutability":"mutable","name":"from","nameLocation":"5293:4:4","nodeType":"VariableDeclaration","scope":1187,"src":"5285:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1159,"name":"address","nodeType":"ElementaryTypeName","src":"5285:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1162,"mutability":"mutable","name":"to","nameLocation":"5315:2:4","nodeType":"VariableDeclaration","scope":1187,"src":"5307:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1161,"name":"address","nodeType":"ElementaryTypeName","src":"5307:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1164,"mutability":"mutable","name":"tokenId","nameLocation":"5335:7:4","nodeType":"VariableDeclaration","scope":1187,"src":"5327:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1163,"name":"uint256","nodeType":"ElementaryTypeName","src":"5327:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1166,"mutability":"mutable","name":"data","nameLocation":"5365:4:4","nodeType":"VariableDeclaration","scope":1187,"src":"5352:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1165,"name":"bytes","nodeType":"ElementaryTypeName","src":"5352:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5275:100:4"},"returnParameters":{"id":1169,"nodeType":"ParameterList","parameters":[],"src":"5400:0:4"},"scope":1668,"src":"5250:315:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1215,"nodeType":"Block","src":"6566:165:4","statements":[{"expression":{"arguments":[{"id":1200,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1190,"src":"6586:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1201,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1192,"src":"6592:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1202,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1194,"src":"6596:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1199,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"6576:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6576:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1204,"nodeType":"ExpressionStatement","src":"6576:28:4"},{"expression":{"arguments":[{"arguments":[{"id":1207,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1190,"src":"6645:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1208,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1192,"src":"6651:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1209,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1194,"src":"6655:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1210,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1196,"src":"6664:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1206,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1645,"src":"6622:22:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":1211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6622:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":1212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6671:52:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":1205,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6614:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6614:110:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1214,"nodeType":"ExpressionStatement","src":"6614:110:4"}]},"documentation":{"id":1188,"nodeType":"StructuredDocumentation","src":"5571:850:4","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":1216,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"6435:13:4","nodeType":"FunctionDefinition","parameters":{"id":1197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"from","nameLocation":"6466:4:4","nodeType":"VariableDeclaration","scope":1216,"src":"6458:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1189,"name":"address","nodeType":"ElementaryTypeName","src":"6458:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1192,"mutability":"mutable","name":"to","nameLocation":"6488:2:4","nodeType":"VariableDeclaration","scope":1216,"src":"6480:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1191,"name":"address","nodeType":"ElementaryTypeName","src":"6480:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1194,"mutability":"mutable","name":"tokenId","nameLocation":"6508:7:4","nodeType":"VariableDeclaration","scope":1216,"src":"6500:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1193,"name":"uint256","nodeType":"ElementaryTypeName","src":"6500:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1196,"mutability":"mutable","name":"data","nameLocation":"6538:4:4","nodeType":"VariableDeclaration","scope":1216,"src":"6525:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1195,"name":"bytes","nodeType":"ElementaryTypeName","src":"6525:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6448:100:4"},"returnParameters":{"id":1198,"nodeType":"ParameterList","parameters":[],"src":"6566:0:4"},"scope":1668,"src":"6426:305:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1233,"nodeType":"Block","src":"7105:54:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":1224,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"7122:7:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1226,"indexExpression":{"id":1225,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1219,"src":"7130:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7122:16:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7150:1:4","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":1228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7142:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1227,"name":"address","nodeType":"ElementaryTypeName","src":"7142:7:4","typeDescriptions":{}}},"id":1230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7142:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7122:30:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1223,"id":1232,"nodeType":"Return","src":"7115:37:4"}]},"documentation":{"id":1217,"nodeType":"StructuredDocumentation","src":"6737:292:4","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":1234,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7043:7:4","nodeType":"FunctionDefinition","parameters":{"id":1220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1219,"mutability":"mutable","name":"tokenId","nameLocation":"7059:7:4","nodeType":"VariableDeclaration","scope":1234,"src":"7051:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1218,"name":"uint256","nodeType":"ElementaryTypeName","src":"7051:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7050:17:4"},"returnParameters":{"id":1223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1234,"src":"7099:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1221,"name":"bool","nodeType":"ElementaryTypeName","src":"7099:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7098:6:4"},"scope":1668,"src":"7034:125:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1267,"nodeType":"Block","src":"7416:162:4","statements":[{"assignments":[1245],"declarations":[{"constant":false,"id":1245,"mutability":"mutable","name":"owner","nameLocation":"7434:5:4","nodeType":"VariableDeclaration","scope":1267,"src":"7426:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1244,"name":"address","nodeType":"ElementaryTypeName","src":"7426:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1250,"initialValue":{"arguments":[{"id":1248,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"7457:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1246,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"7442:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1668_$","typeString":"type(contract ERC721)"}},"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":947,"src":"7442:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7442:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7426:39:4"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1251,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"7483:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1252,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1245,"src":"7494:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7483:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1255,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1245,"src":"7520:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1256,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"7527:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1254,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1111,"src":"7503:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7503:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7483:52:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1260,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"7551:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1259,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"7539:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7539:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1262,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"7563:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7539:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7483:87:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1265,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7482:89:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1243,"id":1266,"nodeType":"Return","src":"7475:96:4"}]},"documentation":{"id":1235,"nodeType":"StructuredDocumentation","src":"7165:147:4","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":1268,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"7326:18:4","nodeType":"FunctionDefinition","parameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1237,"mutability":"mutable","name":"spender","nameLocation":"7353:7:4","nodeType":"VariableDeclaration","scope":1268,"src":"7345:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1236,"name":"address","nodeType":"ElementaryTypeName","src":"7345:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1239,"mutability":"mutable","name":"tokenId","nameLocation":"7370:7:4","nodeType":"VariableDeclaration","scope":1268,"src":"7362:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1238,"name":"uint256","nodeType":"ElementaryTypeName","src":"7362:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7344:34:4"},"returnParameters":{"id":1243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1242,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1268,"src":"7410:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1241,"name":"bool","nodeType":"ElementaryTypeName","src":"7410:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7409:6:4"},"scope":1668,"src":"7317:261:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1282,"nodeType":"Block","src":"7973:43:4","statements":[{"expression":{"arguments":[{"id":1277,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"7993:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1278,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1273,"src":"7997:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":1279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8006:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1276,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[1283,1312],"referencedDeclaration":1312,"src":"7983:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7983:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1281,"nodeType":"ExpressionStatement","src":"7983:26:4"}]},"documentation":{"id":1269,"nodeType":"StructuredDocumentation","src":"7584:319:4","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":1283,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"7917:9:4","nodeType":"FunctionDefinition","parameters":{"id":1274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1271,"mutability":"mutable","name":"to","nameLocation":"7935:2:4","nodeType":"VariableDeclaration","scope":1283,"src":"7927:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1270,"name":"address","nodeType":"ElementaryTypeName","src":"7927:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1273,"mutability":"mutable","name":"tokenId","nameLocation":"7947:7:4","nodeType":"VariableDeclaration","scope":1283,"src":"7939:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1272,"name":"uint256","nodeType":"ElementaryTypeName","src":"7939:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7926:29:4"},"returnParameters":{"id":1275,"nodeType":"ParameterList","parameters":[],"src":"7973:0:4"},"scope":1668,"src":"7908:108:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1311,"nodeType":"Block","src":"8351:195:4","statements":[{"expression":{"arguments":[{"id":1294,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1286,"src":"8367:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1295,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1288,"src":"8371:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1293,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1378,"src":"8361:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8361:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1297,"nodeType":"ExpressionStatement","src":"8361:18:4"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":1302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8441:1:4","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":1301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8433:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1300,"name":"address","nodeType":"ElementaryTypeName","src":"8433:7:4","typeDescriptions":{}}},"id":1303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8433:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1304,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1286,"src":"8445:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1305,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1288,"src":"8449:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1306,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1290,"src":"8458:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1299,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1645,"src":"8410:22:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8410:53:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":1308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8477:52:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":1298,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8389:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8389:150:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1310,"nodeType":"ExpressionStatement","src":"8389:150:4"}]},"documentation":{"id":1284,"nodeType":"StructuredDocumentation","src":"8022:210:4","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":1312,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8246:9:4","nodeType":"FunctionDefinition","parameters":{"id":1291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1286,"mutability":"mutable","name":"to","nameLocation":"8273:2:4","nodeType":"VariableDeclaration","scope":1312,"src":"8265:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1285,"name":"address","nodeType":"ElementaryTypeName","src":"8265:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1288,"mutability":"mutable","name":"tokenId","nameLocation":"8293:7:4","nodeType":"VariableDeclaration","scope":1312,"src":"8285:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1287,"name":"uint256","nodeType":"ElementaryTypeName","src":"8285:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1290,"mutability":"mutable","name":"data","nameLocation":"8323:4:4","nodeType":"VariableDeclaration","scope":1312,"src":"8310:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1289,"name":"bytes","nodeType":"ElementaryTypeName","src":"8310:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8255:78:4"},"returnParameters":{"id":1292,"nodeType":"ParameterList","parameters":[],"src":"8351:0:4"},"scope":1668,"src":"8237:309:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1377,"nodeType":"Block","src":"8929:366:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1321,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1315,"src":"8947:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8961:1:4","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":1323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8953:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1322,"name":"address","nodeType":"ElementaryTypeName","src":"8953:7:4","typeDescriptions":{}}},"id":1325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8953:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8947:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":1327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8965:34:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":1320,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8939:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8939:61:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1329,"nodeType":"ExpressionStatement","src":"8939:61:4"},{"expression":{"arguments":[{"id":1334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9018:17:4","subExpression":{"arguments":[{"id":1332,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"9027:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1331,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"9019:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9019:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":1335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9037:30:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":1330,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9010:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9010:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1337,"nodeType":"ExpressionStatement","src":"9010:58:4"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9108:1:4","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":1340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9100:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1339,"name":"address","nodeType":"ElementaryTypeName","src":"9100:7:4","typeDescriptions":{}}},"id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9100:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1343,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1315,"src":"9112:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1344,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"9116:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1338,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"9079:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9079:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1346,"nodeType":"ExpressionStatement","src":"9079:45:4"},{"expression":{"id":1351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1347,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":837,"src":"9135:9:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1349,"indexExpression":{"id":1348,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1315,"src":"9145:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9135:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9152:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9135:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1352,"nodeType":"ExpressionStatement","src":"9135:18:4"},{"expression":{"id":1357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1353,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"9163:7:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1355,"indexExpression":{"id":1354,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"9171:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9163:16:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1356,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1315,"src":"9182:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9163:21:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1358,"nodeType":"ExpressionStatement","src":"9163:21:4"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9217:1:4","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":1361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9209:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1360,"name":"address","nodeType":"ElementaryTypeName","src":"9209:7:4","typeDescriptions":{}}},"id":1363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9209:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1364,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1315,"src":"9221:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1365,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"9225:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1359,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"9200:8:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9200:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1367,"nodeType":"EmitStatement","src":"9195:38:4"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:4","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":1370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9264:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1369,"name":"address","nodeType":"ElementaryTypeName","src":"9264:7:4","typeDescriptions":{}}},"id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9264:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1373,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1315,"src":"9276:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1374,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"9280:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1368,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"9244:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9244:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1376,"nodeType":"ExpressionStatement","src":"9244:44:4"}]},"documentation":{"id":1313,"nodeType":"StructuredDocumentation","src":"8552:311:4","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":1378,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8877:5:4","nodeType":"FunctionDefinition","parameters":{"id":1318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1315,"mutability":"mutable","name":"to","nameLocation":"8891:2:4","nodeType":"VariableDeclaration","scope":1378,"src":"8883:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1314,"name":"address","nodeType":"ElementaryTypeName","src":"8883:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1317,"mutability":"mutable","name":"tokenId","nameLocation":"8903:7:4","nodeType":"VariableDeclaration","scope":1378,"src":"8895:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"8895:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8882:29:4"},"returnParameters":{"id":1319,"nodeType":"ParameterList","parameters":[],"src":"8929:0:4"},"scope":1668,"src":"8868:427:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1437,"nodeType":"Block","src":"9561:357:4","statements":[{"assignments":[1385],"declarations":[{"constant":false,"id":1385,"mutability":"mutable","name":"owner","nameLocation":"9579:5:4","nodeType":"VariableDeclaration","scope":1437,"src":"9571:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1384,"name":"address","nodeType":"ElementaryTypeName","src":"9571:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1390,"initialValue":{"arguments":[{"id":1388,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"9602:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1386,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"9587:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1668_$","typeString":"type(contract ERC721)"}},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":947,"src":"9587:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9587:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9571:39:4"},{"expression":{"arguments":[{"id":1392,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"9642:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9657:1:4","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":1394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9649:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1393,"name":"address","nodeType":"ElementaryTypeName","src":"9649:7:4","typeDescriptions":{}}},"id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9649:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1397,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"9661:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1391,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"9621:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9621:48:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1399,"nodeType":"ExpressionStatement","src":"9621:48:4"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9724:1:4","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":1402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9716:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1401,"name":"address","nodeType":"ElementaryTypeName","src":"9716:7:4","typeDescriptions":{}}},"id":1404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9716:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1405,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"9728:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1400,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"9707:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9707:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1407,"nodeType":"ExpressionStatement","src":"9707:29:4"},{"expression":{"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1408,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":837,"src":"9747:9:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1410,"indexExpression":{"id":1409,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"9757:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9747:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9767:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9747:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1413,"nodeType":"ExpressionStatement","src":"9747:21:4"},{"expression":{"id":1417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9778:23:4","subExpression":{"baseExpression":{"id":1414,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"9785:7:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1416,"indexExpression":{"id":1415,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"9793:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9785:16:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1418,"nodeType":"ExpressionStatement","src":"9778:23:4"},{"eventCall":{"arguments":[{"id":1420,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"9826:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9841:1:4","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":1422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9833:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1421,"name":"address","nodeType":"ElementaryTypeName","src":"9833:7:4","typeDescriptions":{}}},"id":1424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9833:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1425,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"9845:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"9817:8:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9817:36:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1427,"nodeType":"EmitStatement","src":"9812:41:4"},{"expression":{"arguments":[{"id":1429,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"9884:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9899:1:4","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":1431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9891:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1430,"name":"address","nodeType":"ElementaryTypeName","src":"9891:7:4","typeDescriptions":{}}},"id":1433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9891:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1434,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"9903:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1428,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"9864:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9864:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1436,"nodeType":"ExpressionStatement","src":"9864:47:4"}]},"documentation":{"id":1379,"nodeType":"StructuredDocumentation","src":"9301:206:4","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":1438,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9521:5:4","nodeType":"FunctionDefinition","parameters":{"id":1382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1381,"mutability":"mutable","name":"tokenId","nameLocation":"9535:7:4","nodeType":"VariableDeclaration","scope":1438,"src":"9527:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1380,"name":"uint256","nodeType":"ElementaryTypeName","src":"9527:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9526:17:4"},"returnParameters":{"id":1383,"nodeType":"ParameterList","parameters":[],"src":"9561:0:4"},"scope":1668,"src":"9512:406:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1512,"nodeType":"Block","src":"10351:496:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1451,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"10384:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1449,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"10369:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1668_$","typeString":"type(contract ERC721)"}},"id":1450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":947,"src":"10369:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10369:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1453,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1441,"src":"10396:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10369:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":1455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10402:39:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":1448,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10361:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10361:81:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1457,"nodeType":"ExpressionStatement","src":"10361:81:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1459,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"10460:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10474:1:4","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":1461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10466:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1460,"name":"address","nodeType":"ElementaryTypeName","src":"10466:7:4","typeDescriptions":{}}},"id":1463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10466:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10460:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":1465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10478:38:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":1458,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10452:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10452:65:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1467,"nodeType":"ExpressionStatement","src":"10452:65:4"},{"expression":{"arguments":[{"id":1469,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1441,"src":"10549:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1470,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"10555:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1471,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"10559:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1468,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"10528:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10528:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1473,"nodeType":"ExpressionStatement","src":"10528:39:4"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10646:1:4","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":1476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10638:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1475,"name":"address","nodeType":"ElementaryTypeName","src":"10638:7:4","typeDescriptions":{}}},"id":1478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10638:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1479,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"10650:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1474,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"10629:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10629:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1481,"nodeType":"ExpressionStatement","src":"10629:29:4"},{"expression":{"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1482,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":837,"src":"10669:9:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1484,"indexExpression":{"id":1483,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1441,"src":"10679:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10669:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":1485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10688:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10669:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1487,"nodeType":"ExpressionStatement","src":"10669:20:4"},{"expression":{"id":1492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1488,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":837,"src":"10699:9:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1490,"indexExpression":{"id":1489,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"10709:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10699:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10716:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10699:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1493,"nodeType":"ExpressionStatement","src":"10699:18:4"},{"expression":{"id":1498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1494,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"10727:7:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1496,"indexExpression":{"id":1495,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"10735:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10727:16:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1497,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"10746:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10727:21:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1499,"nodeType":"ExpressionStatement","src":"10727:21:4"},{"eventCall":{"arguments":[{"id":1501,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1441,"src":"10773:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1502,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"10779:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1503,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"10783:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1500,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"10764:8:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10764:27:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1505,"nodeType":"EmitStatement","src":"10759:32:4"},{"expression":{"arguments":[{"id":1507,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1441,"src":"10822:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1508,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"10828:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1509,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"10832:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1506,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"10802:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10802:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1511,"nodeType":"ExpressionStatement","src":"10802:38:4"}]},"documentation":{"id":1439,"nodeType":"StructuredDocumentation","src":"9924:313:4","text":" @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":1513,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"10251:9:4","nodeType":"FunctionDefinition","parameters":{"id":1446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1441,"mutability":"mutable","name":"from","nameLocation":"10278:4:4","nodeType":"VariableDeclaration","scope":1513,"src":"10270:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1440,"name":"address","nodeType":"ElementaryTypeName","src":"10270:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1443,"mutability":"mutable","name":"to","nameLocation":"10300:2:4","nodeType":"VariableDeclaration","scope":1513,"src":"10292:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1442,"name":"address","nodeType":"ElementaryTypeName","src":"10292:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1445,"mutability":"mutable","name":"tokenId","nameLocation":"10320:7:4","nodeType":"VariableDeclaration","scope":1513,"src":"10312:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1444,"name":"uint256","nodeType":"ElementaryTypeName","src":"10312:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10260:73:4"},"returnParameters":{"id":1447,"nodeType":"ParameterList","parameters":[],"src":"10351:0:4"},"scope":1668,"src":"10242:605:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1536,"nodeType":"Block","src":"11023:107:4","statements":[{"expression":{"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1521,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":841,"src":"11033:15:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1523,"indexExpression":{"id":1522,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1518,"src":"11049:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11033:24:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1524,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"11060:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11033:29:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1526,"nodeType":"ExpressionStatement","src":"11033:29:4"},{"eventCall":{"arguments":[{"arguments":[{"id":1530,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1518,"src":"11101:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1528,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"11086:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1668_$","typeString":"type(contract ERC721)"}},"id":1529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":947,"src":"11086:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11086:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"11111:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1518,"src":"11115:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1527,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1692,"src":"11077:8:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11077:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1535,"nodeType":"EmitStatement","src":"11072:51:4"}]},"documentation":{"id":1514,"nodeType":"StructuredDocumentation","src":"10853:101:4","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":1537,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10968:8:4","nodeType":"FunctionDefinition","parameters":{"id":1519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1516,"mutability":"mutable","name":"to","nameLocation":"10985:2:4","nodeType":"VariableDeclaration","scope":1537,"src":"10977:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1515,"name":"address","nodeType":"ElementaryTypeName","src":"10977:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1518,"mutability":"mutable","name":"tokenId","nameLocation":"10997:7:4","nodeType":"VariableDeclaration","scope":1537,"src":"10989:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1517,"name":"uint256","nodeType":"ElementaryTypeName","src":"10989:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10976:29:4"},"returnParameters":{"id":1520,"nodeType":"ParameterList","parameters":[],"src":"11023:0:4"},"scope":1668,"src":"10959:171:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1568,"nodeType":"Block","src":"11389:184:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1548,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11407:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1549,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1542,"src":"11416:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11407:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":1551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11426:27:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":1547,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11399:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11399:55:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1553,"nodeType":"ExpressionStatement","src":"11399:55:4"},{"expression":{"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1554,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"11464:18:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1557,"indexExpression":{"id":1555,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11483:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11464:25:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1558,"indexExpression":{"id":1556,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1542,"src":"11490:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11464:35:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1559,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"11502:8:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11464:46:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1561,"nodeType":"ExpressionStatement","src":"11464:46:4"},{"eventCall":{"arguments":[{"id":1563,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11540:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1564,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1542,"src":"11547:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1565,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"11557:8:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1562,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1701,"src":"11525:14:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11525:41:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1567,"nodeType":"EmitStatement","src":"11520:46:4"}]},"documentation":{"id":1538,"nodeType":"StructuredDocumentation","src":"11136:125:4","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":1569,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"11275:18:4","nodeType":"FunctionDefinition","parameters":{"id":1545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1540,"mutability":"mutable","name":"owner","nameLocation":"11311:5:4","nodeType":"VariableDeclaration","scope":1569,"src":"11303:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1539,"name":"address","nodeType":"ElementaryTypeName","src":"11303:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1542,"mutability":"mutable","name":"operator","nameLocation":"11334:8:4","nodeType":"VariableDeclaration","scope":1569,"src":"11326:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1541,"name":"address","nodeType":"ElementaryTypeName","src":"11326:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1544,"mutability":"mutable","name":"approved","nameLocation":"11357:8:4","nodeType":"VariableDeclaration","scope":1569,"src":"11352:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1543,"name":"bool","nodeType":"ElementaryTypeName","src":"11352:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11293:78:4"},"returnParameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"11389:0:4"},"scope":1668,"src":"11266:307:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1582,"nodeType":"Block","src":"11720:70:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":1577,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1572,"src":"11746:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1576,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"11738:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11738:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":1579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11756:26:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":1575,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11730:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11730:53:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1581,"nodeType":"ExpressionStatement","src":"11730:53:4"}]},"documentation":{"id":1570,"nodeType":"StructuredDocumentation","src":"11579:73:4","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":1583,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"11666:14:4","nodeType":"FunctionDefinition","parameters":{"id":1573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1572,"mutability":"mutable","name":"tokenId","nameLocation":"11689:7:4","nodeType":"VariableDeclaration","scope":1583,"src":"11681:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1571,"name":"uint256","nodeType":"ElementaryTypeName","src":"11681:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11680:17:4"},"returnParameters":{"id":1574,"nodeType":"ParameterList","parameters":[],"src":"11720:0:4"},"scope":1668,"src":"11657:133:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1644,"nodeType":"Block","src":"12497:676:4","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1597,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1588,"src":"12511:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1847,"src":"12511:13:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":1599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12511:15:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1642,"nodeType":"Block","src":"13131:36:4","statements":[{"expression":{"hexValue":"74727565","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13152:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":1596,"id":1641,"nodeType":"Return","src":"13145:11:4"}]},"id":1643,"nodeType":"IfStatement","src":"12507:660:4","trueBody":{"id":1639,"nodeType":"Block","src":"12528:597:4","statements":[{"clauses":[{"block":{"id":1619,"nodeType":"Block","src":"12642:91:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1613,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1611,"src":"12667:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":1614,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"12677:15:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1802_$","typeString":"type(contract IERC721Receiver)"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1801,"src":"12677:32:4","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"12677:41:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"12667:51:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1596,"id":1618,"nodeType":"Return","src":"12660:58:4"}]},"errorName":"","id":1620,"nodeType":"TryCatchClause","parameters":{"id":1612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1611,"mutability":"mutable","name":"retval","nameLocation":"12634:6:4","nodeType":"VariableDeclaration","scope":1620,"src":"12627:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1610,"name":"bytes4","nodeType":"ElementaryTypeName","src":"12627:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"12626:15:4"},"src":"12618:115:4"},{"block":{"id":1636,"nodeType":"Block","src":"12762:353:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1624,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"12784:6:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12784:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12801:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12784:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1634,"nodeType":"Block","src":"12911:190:4","statements":[{"AST":{"nodeType":"YulBlock","src":"12997:86:4","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13034:2:4","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"13038:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13030:3:4"},"nodeType":"YulFunctionCall","src":"13030:15:4"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"13053:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13047:5:4"},"nodeType":"YulFunctionCall","src":"13047:13:4"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13023:6:4"},"nodeType":"YulFunctionCall","src":"13023:38:4"},"nodeType":"YulExpressionStatement","src":"13023:38:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1622,"isOffset":false,"isSlot":false,"src":"13038:6:4","valueSize":1},{"declaration":1622,"isOffset":false,"isSlot":false,"src":"13053:6:4","valueSize":1}],"id":1633,"nodeType":"InlineAssembly","src":"12988:95:4"}]},"id":1635,"nodeType":"IfStatement","src":"12780:321:4","trueBody":{"id":1632,"nodeType":"Block","src":"12804:101:4","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":1629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12833:52:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":1628,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"12826:6:4","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12826:60:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1631,"nodeType":"ExpressionStatement","src":"12826:60:4"}]}}]},"errorName":"","id":1637,"nodeType":"TryCatchClause","parameters":{"id":1623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1622,"mutability":"mutable","name":"reason","nameLocation":"12754:6:4","nodeType":"VariableDeclaration","scope":1637,"src":"12741:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1621,"name":"bytes","nodeType":"ElementaryTypeName","src":"12741:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12740:21:4"},"src":"12734:381:4"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1604,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"12583:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12583:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1606,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1586,"src":"12597:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1607,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1590,"src":"12603:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1608,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1592,"src":"12612:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":1601,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1588,"src":"12562:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1600,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"12546:15:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1802_$","typeString":"type(contract IERC721Receiver)"}},"id":1602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12546:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1802","typeString":"contract IERC721Receiver"}},"id":1603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1801,"src":"12546:36:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":1609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12546:71:4","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1638,"nodeType":"TryStatement","src":"12542:573:4"}]}}]},"documentation":{"id":1584,"nodeType":"StructuredDocumentation","src":"11796:541:4","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":1645,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"12351:22:4","nodeType":"FunctionDefinition","parameters":{"id":1593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"from","nameLocation":"12391:4:4","nodeType":"VariableDeclaration","scope":1645,"src":"12383:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1585,"name":"address","nodeType":"ElementaryTypeName","src":"12383:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1588,"mutability":"mutable","name":"to","nameLocation":"12413:2:4","nodeType":"VariableDeclaration","scope":1645,"src":"12405:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1587,"name":"address","nodeType":"ElementaryTypeName","src":"12405:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1590,"mutability":"mutable","name":"tokenId","nameLocation":"12433:7:4","nodeType":"VariableDeclaration","scope":1645,"src":"12425:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1589,"name":"uint256","nodeType":"ElementaryTypeName","src":"12425:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1592,"mutability":"mutable","name":"data","nameLocation":"12463:4:4","nodeType":"VariableDeclaration","scope":1645,"src":"12450:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1591,"name":"bytes","nodeType":"ElementaryTypeName","src":"12450:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12373:100:4"},"returnParameters":{"id":1596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1595,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1645,"src":"12491:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1594,"name":"bool","nodeType":"ElementaryTypeName","src":"12491:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12490:6:4"},"scope":1668,"src":"12342:831:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1655,"nodeType":"Block","src":"13849:2:4","statements":[]},"documentation":{"id":1646,"nodeType":"StructuredDocumentation","src":"13179:545:4","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":1656,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"13738:20:4","nodeType":"FunctionDefinition","parameters":{"id":1653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1648,"mutability":"mutable","name":"from","nameLocation":"13776:4:4","nodeType":"VariableDeclaration","scope":1656,"src":"13768:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"13768:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"mutability":"mutable","name":"to","nameLocation":"13798:2:4","nodeType":"VariableDeclaration","scope":1656,"src":"13790:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1649,"name":"address","nodeType":"ElementaryTypeName","src":"13790:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1652,"mutability":"mutable","name":"tokenId","nameLocation":"13818:7:4","nodeType":"VariableDeclaration","scope":1656,"src":"13810:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1651,"name":"uint256","nodeType":"ElementaryTypeName","src":"13810:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13758:73:4"},"returnParameters":{"id":1654,"nodeType":"ParameterList","parameters":[],"src":"13849:0:4"},"scope":1668,"src":"13729:122:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1666,"nodeType":"Block","src":"14342:2:4","statements":[]},"documentation":{"id":1657,"nodeType":"StructuredDocumentation","src":"13857:361:4","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":1667,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"14232:19:4","nodeType":"FunctionDefinition","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1659,"mutability":"mutable","name":"from","nameLocation":"14269:4:4","nodeType":"VariableDeclaration","scope":1667,"src":"14261:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1658,"name":"address","nodeType":"ElementaryTypeName","src":"14261:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1661,"mutability":"mutable","name":"to","nameLocation":"14291:2:4","nodeType":"VariableDeclaration","scope":1667,"src":"14283:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1660,"name":"address","nodeType":"ElementaryTypeName","src":"14283:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"14311:7:4","nodeType":"VariableDeclaration","scope":1667,"src":"14303:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"14303:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14251:73:4"},"returnParameters":{"id":1665,"nodeType":"ParameterList","parameters":[],"src":"14342:0:4"},"scope":1668,"src":"14223:121:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1669,"src":"628:13718:4","usedErrors":[]}],"src":"107:14240:4"},"id":4},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[2408],"IERC721":[1784]},"id":1785,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1670,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:5"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":1671,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1785,"sourceUnit":2409,"src":"133:47:5","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1673,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":2408,"src":"271:7:5"},"id":1674,"nodeType":"InheritanceSpecifier","src":"271:7:5"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1672,"nodeType":"StructuredDocumentation","src":"182:67:5","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":1784,"linearizedBaseContracts":[1784,2408],"name":"IERC721","nameLocation":"260:7:5","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1675,"nodeType":"StructuredDocumentation","src":"285:88:5","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1683,"name":"Transfer","nameLocation":"384:8:5","nodeType":"EventDefinition","parameters":{"id":1682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1677,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:5","nodeType":"VariableDeclaration","scope":1683,"src":"393:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1676,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1679,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:5","nodeType":"VariableDeclaration","scope":1683,"src":"415:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1678,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1681,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:5","nodeType":"VariableDeclaration","scope":1683,"src":"435:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1680,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:5"},"src":"378:82:5"},{"anonymous":false,"documentation":{"id":1684,"nodeType":"StructuredDocumentation","src":"466:94:5","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1692,"name":"Approval","nameLocation":"571:8:5","nodeType":"EventDefinition","parameters":{"id":1691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1686,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:5","nodeType":"VariableDeclaration","scope":1692,"src":"580:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1685,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1688,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:5","nodeType":"VariableDeclaration","scope":1692,"src":"603:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1687,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1690,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:5","nodeType":"VariableDeclaration","scope":1692,"src":"629:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1689,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:5"},"src":"565:89:5"},{"anonymous":false,"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"660:117:5","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":1701,"name":"ApprovalForAll","nameLocation":"788:14:5","nodeType":"EventDefinition","parameters":{"id":1700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:5","nodeType":"VariableDeclaration","scope":1701,"src":"803:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:5","nodeType":"VariableDeclaration","scope":1701,"src":"826:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1696,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1699,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:5","nodeType":"VariableDeclaration","scope":1701,"src":"852:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1698,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:5"},"src":"782:85:5"},{"documentation":{"id":1702,"nodeType":"StructuredDocumentation","src":"873:76:5","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":1709,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:5","nodeType":"FunctionDefinition","parameters":{"id":1705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1704,"mutability":"mutable","name":"owner","nameLocation":"981:5:5","nodeType":"VariableDeclaration","scope":1709,"src":"973:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1703,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:5"},"returnParameters":{"id":1708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1707,"mutability":"mutable","name":"balance","nameLocation":"1019:7:5","nodeType":"VariableDeclaration","scope":1709,"src":"1011:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1706,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:5"},"scope":1784,"src":"954:74:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1710,"nodeType":"StructuredDocumentation","src":"1034:131:5","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":1717,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:5","nodeType":"FunctionDefinition","parameters":{"id":1713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1712,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:5","nodeType":"VariableDeclaration","scope":1717,"src":"1187:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1711,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:5"},"returnParameters":{"id":1716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1715,"mutability":"mutable","name":"owner","nameLocation":"1235:5:5","nodeType":"VariableDeclaration","scope":1717,"src":"1227:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1714,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:5"},"scope":1784,"src":"1170:72:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1718,"nodeType":"StructuredDocumentation","src":"1248:556:5","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 a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":1729,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:5","nodeType":"FunctionDefinition","parameters":{"id":1727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1720,"mutability":"mutable","name":"from","nameLocation":"1852:4:5","nodeType":"VariableDeclaration","scope":1729,"src":"1844:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1719,"name":"address","nodeType":"ElementaryTypeName","src":"1844:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1722,"mutability":"mutable","name":"to","nameLocation":"1874:2:5","nodeType":"VariableDeclaration","scope":1729,"src":"1866:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"1866:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1724,"mutability":"mutable","name":"tokenId","nameLocation":"1894:7:5","nodeType":"VariableDeclaration","scope":1729,"src":"1886:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1723,"name":"uint256","nodeType":"ElementaryTypeName","src":"1886:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1726,"mutability":"mutable","name":"data","nameLocation":"1926:4:5","nodeType":"VariableDeclaration","scope":1729,"src":"1911:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1725,"name":"bytes","nodeType":"ElementaryTypeName","src":"1911:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:102:5"},"returnParameters":{"id":1728,"nodeType":"ParameterList","parameters":[],"src":"1945:0:5"},"scope":1784,"src":"1809:137:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1730,"nodeType":"StructuredDocumentation","src":"1952:687:5","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 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 {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":1739,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2653:16:5","nodeType":"FunctionDefinition","parameters":{"id":1737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"from","nameLocation":"2687:4:5","nodeType":"VariableDeclaration","scope":1739,"src":"2679:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1731,"name":"address","nodeType":"ElementaryTypeName","src":"2679:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1734,"mutability":"mutable","name":"to","nameLocation":"2709:2:5","nodeType":"VariableDeclaration","scope":1739,"src":"2701:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1733,"name":"address","nodeType":"ElementaryTypeName","src":"2701:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1736,"mutability":"mutable","name":"tokenId","nameLocation":"2729:7:5","nodeType":"VariableDeclaration","scope":1739,"src":"2721:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1735,"name":"uint256","nodeType":"ElementaryTypeName","src":"2721:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2669:73:5"},"returnParameters":{"id":1738,"nodeType":"ParameterList","parameters":[],"src":"2751:0:5"},"scope":1784,"src":"2644:108:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"2758:504:5","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\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":1749,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3276:12:5","nodeType":"FunctionDefinition","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1742,"mutability":"mutable","name":"from","nameLocation":"3306:4:5","nodeType":"VariableDeclaration","scope":1749,"src":"3298:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1741,"name":"address","nodeType":"ElementaryTypeName","src":"3298:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1744,"mutability":"mutable","name":"to","nameLocation":"3328:2:5","nodeType":"VariableDeclaration","scope":1749,"src":"3320:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1743,"name":"address","nodeType":"ElementaryTypeName","src":"3320:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1746,"mutability":"mutable","name":"tokenId","nameLocation":"3348:7:5","nodeType":"VariableDeclaration","scope":1749,"src":"3340:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1745,"name":"uint256","nodeType":"ElementaryTypeName","src":"3340:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3288:73:5"},"returnParameters":{"id":1748,"nodeType":"ParameterList","parameters":[],"src":"3370:0:5"},"scope":1784,"src":"3267:104:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1750,"nodeType":"StructuredDocumentation","src":"3377:452:5","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":1757,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3843:7:5","nodeType":"FunctionDefinition","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1752,"mutability":"mutable","name":"to","nameLocation":"3859:2:5","nodeType":"VariableDeclaration","scope":1757,"src":"3851:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1751,"name":"address","nodeType":"ElementaryTypeName","src":"3851:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"3871:7:5","nodeType":"VariableDeclaration","scope":1757,"src":"3863:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"3863:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3850:29:5"},"returnParameters":{"id":1756,"nodeType":"ParameterList","parameters":[],"src":"3888:0:5"},"scope":1784,"src":"3834:55:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1758,"nodeType":"StructuredDocumentation","src":"3895:309:5","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 caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":1765,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4218:17:5","nodeType":"FunctionDefinition","parameters":{"id":1763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1760,"mutability":"mutable","name":"operator","nameLocation":"4244:8:5","nodeType":"VariableDeclaration","scope":1765,"src":"4236:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1759,"name":"address","nodeType":"ElementaryTypeName","src":"4236:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1762,"mutability":"mutable","name":"_approved","nameLocation":"4259:9:5","nodeType":"VariableDeclaration","scope":1765,"src":"4254:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1761,"name":"bool","nodeType":"ElementaryTypeName","src":"4254:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4235:34:5"},"returnParameters":{"id":1764,"nodeType":"ParameterList","parameters":[],"src":"4278:0:5"},"scope":1784,"src":"4209:70:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1766,"nodeType":"StructuredDocumentation","src":"4285:139:5","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":1773,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4438:11:5","nodeType":"FunctionDefinition","parameters":{"id":1769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1768,"mutability":"mutable","name":"tokenId","nameLocation":"4458:7:5","nodeType":"VariableDeclaration","scope":1773,"src":"4450:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1767,"name":"uint256","nodeType":"ElementaryTypeName","src":"4450:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4449:17:5"},"returnParameters":{"id":1772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1771,"mutability":"mutable","name":"operator","nameLocation":"4498:8:5","nodeType":"VariableDeclaration","scope":1773,"src":"4490:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1770,"name":"address","nodeType":"ElementaryTypeName","src":"4490:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4489:18:5"},"scope":1784,"src":"4429:79:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1774,"nodeType":"StructuredDocumentation","src":"4514:138:5","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":1783,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4666:16:5","nodeType":"FunctionDefinition","parameters":{"id":1779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1776,"mutability":"mutable","name":"owner","nameLocation":"4691:5:5","nodeType":"VariableDeclaration","scope":1783,"src":"4683:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1775,"name":"address","nodeType":"ElementaryTypeName","src":"4683:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1778,"mutability":"mutable","name":"operator","nameLocation":"4706:8:5","nodeType":"VariableDeclaration","scope":1783,"src":"4698:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1777,"name":"address","nodeType":"ElementaryTypeName","src":"4698:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4682:33:5"},"returnParameters":{"id":1782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1783,"src":"4739:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1780,"name":"bool","nodeType":"ElementaryTypeName","src":"4739:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4738:6:5"},"scope":1784,"src":"4657:88:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1785,"src":"250:4497:5","usedErrors":[]}],"src":"108:4640:5"},"id":5},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[1802]},"id":1803,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1786,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1787,"nodeType":"StructuredDocumentation","src":"141:152:6","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":1802,"linearizedBaseContracts":[1802],"name":"IERC721Receiver","nameLocation":"304:15:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1788,"nodeType":"StructuredDocumentation","src":"326:493:6","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":1801,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:6","nodeType":"FunctionDefinition","parameters":{"id":1797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1790,"mutability":"mutable","name":"operator","nameLocation":"867:8:6","nodeType":"VariableDeclaration","scope":1801,"src":"859:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1792,"mutability":"mutable","name":"from","nameLocation":"893:4:6","nodeType":"VariableDeclaration","scope":1801,"src":"885:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1791,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1794,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:6","nodeType":"VariableDeclaration","scope":1801,"src":"907:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1793,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1796,"mutability":"mutable","name":"data","nameLocation":"947:4:6","nodeType":"VariableDeclaration","scope":1801,"src":"932:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1795,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:6"},"returnParameters":{"id":1800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1801,"src":"976:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1798,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:6"},"scope":1802,"src":"824:160:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1803,"src":"294:692:6","usedErrors":[]}],"src":"116:871:6"},"id":6},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC165":[2408],"IERC721":[1784],"IERC721Metadata":[1829]},"id":1830,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1804,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:7"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":1805,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1830,"sourceUnit":1785,"src":"137:24:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1807,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":1784,"src":"326:7:7"},"id":1808,"nodeType":"InheritanceSpecifier","src":"326:7:7"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1806,"nodeType":"StructuredDocumentation","src":"163:133:7","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":1829,"linearizedBaseContracts":[1829,1784,2408],"name":"IERC721Metadata","nameLocation":"307:15:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1809,"nodeType":"StructuredDocumentation","src":"340:58:7","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":1814,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"412:4:7","nodeType":"FunctionDefinition","parameters":{"id":1810,"nodeType":"ParameterList","parameters":[],"src":"416:2:7"},"returnParameters":{"id":1813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1814,"src":"442:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1811,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"441:15:7"},"scope":1829,"src":"403:54:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"463:60:7","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":1820,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"537:6:7","nodeType":"FunctionDefinition","parameters":{"id":1816,"nodeType":"ParameterList","parameters":[],"src":"543:2:7"},"returnParameters":{"id":1819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1818,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1820,"src":"569:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1817,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"568:15:7"},"scope":1829,"src":"528:56:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1821,"nodeType":"StructuredDocumentation","src":"590:90:7","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":1828,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"694:8:7","nodeType":"FunctionDefinition","parameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"tokenId","nameLocation":"711:7:7","nodeType":"VariableDeclaration","scope":1828,"src":"703:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"702:17:7"},"returnParameters":{"id":1827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1828,"src":"743:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1825,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:15:7"},"scope":1829,"src":"685:73:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1830,"src":"297:463:7","usedErrors":[]}],"src":"112:649:7"},"id":7},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[2124]},"id":2125,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1831,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:8"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1832,"nodeType":"StructuredDocumentation","src":"126:67:8","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":2124,"linearizedBaseContracts":[2124],"name":"Address","nameLocation":"202:7:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":1846,"nodeType":"Block","src":"1241:254:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1840,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"1465:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"1465:12:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1465:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1465:23:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1839,"id":1845,"nodeType":"Return","src":"1458:30:8"}]},"documentation":{"id":1833,"nodeType":"StructuredDocumentation","src":"216:954:8","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":1847,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1184:10:8","nodeType":"FunctionDefinition","parameters":{"id":1836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1835,"mutability":"mutable","name":"account","nameLocation":"1203:7:8","nodeType":"VariableDeclaration","scope":1847,"src":"1195:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1834,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1194:17:8"},"returnParameters":{"id":1839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1847,"src":"1235:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1837,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1234:6:8"},"scope":2124,"src":"1175:320:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1880,"nodeType":"Block","src":"2483:241:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1858,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2509:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2124","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2124","typeString":"library Address"}],"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2501:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1856,"name":"address","nodeType":"ElementaryTypeName","src":"2501:7:8","typeDescriptions":{}}},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2501:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2501:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1861,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1852,"src":"2526:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2501:31:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2534:31:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":1855,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2493:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2493:73:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"ExpressionStatement","src":"2493:73:8"},{"assignments":[1867,null],"declarations":[{"constant":false,"id":1867,"mutability":"mutable","name":"success","nameLocation":"2583:7:8","nodeType":"VariableDeclaration","scope":1880,"src":"2578:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1866,"name":"bool","nodeType":"ElementaryTypeName","src":"2578:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1874,"initialValue":{"arguments":[{"hexValue":"","id":1872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2626:2:8","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":1868,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1850,"src":"2596:9:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2596:14:8","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":1871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1870,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1852,"src":"2618:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2596:29:8","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":1873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2596:33:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2577:52:8"},{"expression":{"arguments":[{"id":1876,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"2647:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":1877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2656:60:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":1875,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2639:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2639:78:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1879,"nodeType":"ExpressionStatement","src":"2639:78:8"}]},"documentation":{"id":1848,"nodeType":"StructuredDocumentation","src":"1501:906:8","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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":1881,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2421:9:8","nodeType":"FunctionDefinition","parameters":{"id":1853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1850,"mutability":"mutable","name":"recipient","nameLocation":"2447:9:8","nodeType":"VariableDeclaration","scope":1881,"src":"2431:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1849,"name":"address","nodeType":"ElementaryTypeName","src":"2431:15:8","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1852,"mutability":"mutable","name":"amount","nameLocation":"2466:6:8","nodeType":"VariableDeclaration","scope":1881,"src":"2458:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2458:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:43:8"},"returnParameters":{"id":1854,"nodeType":"ParameterList","parameters":[],"src":"2483:0:8"},"scope":2124,"src":"2412:312:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1897,"nodeType":"Block","src":"3555:84:8","statements":[{"expression":{"arguments":[{"id":1892,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1884,"src":"3585:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1893,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1886,"src":"3593:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":1894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3599:32:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":1891,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[1898,1918],"referencedDeclaration":1918,"src":"3572:12:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3572:60:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1890,"id":1896,"nodeType":"Return","src":"3565:67:8"}]},"documentation":{"id":1882,"nodeType":"StructuredDocumentation","src":"2730:731:8","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, it is bubbled up by this\n function (like regular Solidity function calls).\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.\n _Available since v3.1._"},"id":1898,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3475:12:8","nodeType":"FunctionDefinition","parameters":{"id":1887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1884,"mutability":"mutable","name":"target","nameLocation":"3496:6:8","nodeType":"VariableDeclaration","scope":1898,"src":"3488:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1883,"name":"address","nodeType":"ElementaryTypeName","src":"3488:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1886,"mutability":"mutable","name":"data","nameLocation":"3517:4:8","nodeType":"VariableDeclaration","scope":1898,"src":"3504:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1885,"name":"bytes","nodeType":"ElementaryTypeName","src":"3504:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3487:35:8"},"returnParameters":{"id":1890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1898,"src":"3541:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1888,"name":"bytes","nodeType":"ElementaryTypeName","src":"3541:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3540:14:8"},"scope":2124,"src":"3466:173:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1917,"nodeType":"Block","src":"4008:76:8","statements":[{"expression":{"arguments":[{"id":1911,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"4047:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1912,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1903,"src":"4055:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4061:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1914,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"4064:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"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"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1910,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1938,1988],"referencedDeclaration":1988,"src":"4025:21:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4025:52:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1909,"id":1916,"nodeType":"Return","src":"4018:59:8"}]},"documentation":{"id":1899,"nodeType":"StructuredDocumentation","src":"3645:211:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1918,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3870:12:8","nodeType":"FunctionDefinition","parameters":{"id":1906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1901,"mutability":"mutable","name":"target","nameLocation":"3900:6:8","nodeType":"VariableDeclaration","scope":1918,"src":"3892:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1900,"name":"address","nodeType":"ElementaryTypeName","src":"3892:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1903,"mutability":"mutable","name":"data","nameLocation":"3929:4:8","nodeType":"VariableDeclaration","scope":1918,"src":"3916:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1902,"name":"bytes","nodeType":"ElementaryTypeName","src":"3916:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1905,"mutability":"mutable","name":"errorMessage","nameLocation":"3957:12:8","nodeType":"VariableDeclaration","scope":1918,"src":"3943:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1904,"name":"string","nodeType":"ElementaryTypeName","src":"3943:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3882:93:8"},"returnParameters":{"id":1909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1918,"src":"3994:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1907,"name":"bytes","nodeType":"ElementaryTypeName","src":"3994:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3993:14:8"},"scope":2124,"src":"3861:223:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1937,"nodeType":"Block","src":"4589:111:8","statements":[{"expression":{"arguments":[{"id":1931,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1921,"src":"4628:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1932,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"4636:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1933,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"4642:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":1934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4649:43:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":1930,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1938,1988],"referencedDeclaration":1988,"src":"4606:21:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4606:87:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1929,"id":1936,"nodeType":"Return","src":"4599:94:8"}]},"documentation":{"id":1919,"nodeType":"StructuredDocumentation","src":"4090:351:8","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`.\n _Available since v3.1._"},"id":1938,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4455:21:8","nodeType":"FunctionDefinition","parameters":{"id":1926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1921,"mutability":"mutable","name":"target","nameLocation":"4494:6:8","nodeType":"VariableDeclaration","scope":1938,"src":"4486:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1920,"name":"address","nodeType":"ElementaryTypeName","src":"4486:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1923,"mutability":"mutable","name":"data","nameLocation":"4523:4:8","nodeType":"VariableDeclaration","scope":1938,"src":"4510:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1922,"name":"bytes","nodeType":"ElementaryTypeName","src":"4510:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1925,"mutability":"mutable","name":"value","nameLocation":"4545:5:8","nodeType":"VariableDeclaration","scope":1938,"src":"4537:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1924,"name":"uint256","nodeType":"ElementaryTypeName","src":"4537:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4476:80:8"},"returnParameters":{"id":1929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1938,"src":"4575:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1927,"name":"bytes","nodeType":"ElementaryTypeName","src":"4575:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4574:14:8"},"scope":2124,"src":"4446:254:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1987,"nodeType":"Block","src":"5127:320:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1955,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5153:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2124","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2124","typeString":"library Address"}],"id":1954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5145:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1953,"name":"address","nodeType":"ElementaryTypeName","src":"5145:7:8","typeDescriptions":{}}},"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5145:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"5145:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1958,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"5170:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5145:30:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":1960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5177:40:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":1952,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5137:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5137:81:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1962,"nodeType":"ExpressionStatement","src":"5137:81:8"},{"expression":{"arguments":[{"arguments":[{"id":1965,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1941,"src":"5247:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1964,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"5236:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5236:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":1967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5256:31:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":1963,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5228:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5228:60:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1969,"nodeType":"ExpressionStatement","src":"5228:60:8"},{"assignments":[1971,1973],"declarations":[{"constant":false,"id":1971,"mutability":"mutable","name":"success","nameLocation":"5305:7:8","nodeType":"VariableDeclaration","scope":1987,"src":"5300:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1970,"name":"bool","nodeType":"ElementaryTypeName","src":"5300:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1973,"mutability":"mutable","name":"returndata","nameLocation":"5327:10:8","nodeType":"VariableDeclaration","scope":1987,"src":"5314:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1972,"name":"bytes","nodeType":"ElementaryTypeName","src":"5314:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1980,"initialValue":{"arguments":[{"id":1978,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"5367:4:8","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":1974,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1941,"src":"5341:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5341:11:8","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":1977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1976,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"5360:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5341:25:8","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":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5341:31:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5299:73:8"},{"expression":{"arguments":[{"id":1982,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1971,"src":"5406:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1983,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1973,"src":"5415:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1984,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1947,"src":"5427:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1981,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2123,"src":"5389:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":1985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5389:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1951,"id":1986,"nodeType":"Return","src":"5382:58:8"}]},"documentation":{"id":1939,"nodeType":"StructuredDocumentation","src":"4706:237:8","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1988,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4957:21:8","nodeType":"FunctionDefinition","parameters":{"id":1948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1941,"mutability":"mutable","name":"target","nameLocation":"4996:6:8","nodeType":"VariableDeclaration","scope":1988,"src":"4988:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1940,"name":"address","nodeType":"ElementaryTypeName","src":"4988:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1943,"mutability":"mutable","name":"data","nameLocation":"5025:4:8","nodeType":"VariableDeclaration","scope":1988,"src":"5012:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1942,"name":"bytes","nodeType":"ElementaryTypeName","src":"5012:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1945,"mutability":"mutable","name":"value","nameLocation":"5047:5:8","nodeType":"VariableDeclaration","scope":1988,"src":"5039:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1944,"name":"uint256","nodeType":"ElementaryTypeName","src":"5039:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1947,"mutability":"mutable","name":"errorMessage","nameLocation":"5076:12:8","nodeType":"VariableDeclaration","scope":1988,"src":"5062:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1946,"name":"string","nodeType":"ElementaryTypeName","src":"5062:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4978:116:8"},"returnParameters":{"id":1951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1950,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1988,"src":"5113:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1949,"name":"bytes","nodeType":"ElementaryTypeName","src":"5113:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5112:14:8"},"scope":2124,"src":"4948:499:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2004,"nodeType":"Block","src":"5724:97:8","statements":[{"expression":{"arguments":[{"id":1999,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"5760:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2000,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"5768:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":2001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5774:39:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":1998,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[2005,2040],"referencedDeclaration":2040,"src":"5741:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5741:73:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1997,"id":2003,"nodeType":"Return","src":"5734:80:8"}]},"documentation":{"id":1989,"nodeType":"StructuredDocumentation","src":"5453:166:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":2005,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5633:18:8","nodeType":"FunctionDefinition","parameters":{"id":1994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"target","nameLocation":"5660:6:8","nodeType":"VariableDeclaration","scope":2005,"src":"5652:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1990,"name":"address","nodeType":"ElementaryTypeName","src":"5652:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1993,"mutability":"mutable","name":"data","nameLocation":"5681:4:8","nodeType":"VariableDeclaration","scope":2005,"src":"5668:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1992,"name":"bytes","nodeType":"ElementaryTypeName","src":"5668:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5651:35:8"},"returnParameters":{"id":1997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1996,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2005,"src":"5710:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1995,"name":"bytes","nodeType":"ElementaryTypeName","src":"5710:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5709:14:8"},"scope":2124,"src":"5624:197:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2039,"nodeType":"Block","src":"6163:228:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":2019,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2008,"src":"6192:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2018,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"6181:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":2020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6181:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":2021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6201:38:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""},"value":"Address: static call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""}],"id":2017,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6173:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6173:67:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2023,"nodeType":"ExpressionStatement","src":"6173:67:8"},{"assignments":[2025,2027],"declarations":[{"constant":false,"id":2025,"mutability":"mutable","name":"success","nameLocation":"6257:7:8","nodeType":"VariableDeclaration","scope":2039,"src":"6252:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2024,"name":"bool","nodeType":"ElementaryTypeName","src":"6252:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2027,"mutability":"mutable","name":"returndata","nameLocation":"6279:10:8","nodeType":"VariableDeclaration","scope":2039,"src":"6266:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2026,"name":"bytes","nodeType":"ElementaryTypeName","src":"6266:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2032,"initialValue":{"arguments":[{"id":2030,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"6311:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2028,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2008,"src":"6293:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"6293:17:8","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":2031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6293:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6251:65:8"},{"expression":{"arguments":[{"id":2034,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"6350:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2035,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"6359:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2036,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"6371:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2033,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2123,"src":"6333:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6333:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2016,"id":2038,"nodeType":"Return","src":"6326:58:8"}]},"documentation":{"id":2006,"nodeType":"StructuredDocumentation","src":"5827:173:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":2040,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6014:18:8","nodeType":"FunctionDefinition","parameters":{"id":2013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2008,"mutability":"mutable","name":"target","nameLocation":"6050:6:8","nodeType":"VariableDeclaration","scope":2040,"src":"6042:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2007,"name":"address","nodeType":"ElementaryTypeName","src":"6042:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2010,"mutability":"mutable","name":"data","nameLocation":"6079:4:8","nodeType":"VariableDeclaration","scope":2040,"src":"6066:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2009,"name":"bytes","nodeType":"ElementaryTypeName","src":"6066:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2012,"mutability":"mutable","name":"errorMessage","nameLocation":"6107:12:8","nodeType":"VariableDeclaration","scope":2040,"src":"6093:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2011,"name":"string","nodeType":"ElementaryTypeName","src":"6093:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6032:93:8"},"returnParameters":{"id":2016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2040,"src":"6149:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2014,"name":"bytes","nodeType":"ElementaryTypeName","src":"6149:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6148:14:8"},"scope":2124,"src":"6005:386:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2056,"nodeType":"Block","src":"6667:101:8","statements":[{"expression":{"arguments":[{"id":2051,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2043,"src":"6705:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2052,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2045,"src":"6713:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":2053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6719:41:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":2050,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[2057,2092],"referencedDeclaration":2092,"src":"6684:20:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":2054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6684:77:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2049,"id":2055,"nodeType":"Return","src":"6677:84:8"}]},"documentation":{"id":2041,"nodeType":"StructuredDocumentation","src":"6397:168:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2057,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6579:20:8","nodeType":"FunctionDefinition","parameters":{"id":2046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2043,"mutability":"mutable","name":"target","nameLocation":"6608:6:8","nodeType":"VariableDeclaration","scope":2057,"src":"6600:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2042,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2045,"mutability":"mutable","name":"data","nameLocation":"6629:4:8","nodeType":"VariableDeclaration","scope":2057,"src":"6616:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2044,"name":"bytes","nodeType":"ElementaryTypeName","src":"6616:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6599:35:8"},"returnParameters":{"id":2049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2057,"src":"6653:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2047,"name":"bytes","nodeType":"ElementaryTypeName","src":"6653:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6652:14:8"},"scope":2124,"src":"6570:198:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2091,"nodeType":"Block","src":"7109:232:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":2071,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"7138:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2070,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"7127:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7127:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":2073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7147:40:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""},"value":"Address: delegate call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""}],"id":2069,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7119:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7119:69:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2075,"nodeType":"ExpressionStatement","src":"7119:69:8"},{"assignments":[2077,2079],"declarations":[{"constant":false,"id":2077,"mutability":"mutable","name":"success","nameLocation":"7205:7:8","nodeType":"VariableDeclaration","scope":2091,"src":"7200:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2076,"name":"bool","nodeType":"ElementaryTypeName","src":"7200:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2079,"mutability":"mutable","name":"returndata","nameLocation":"7227:10:8","nodeType":"VariableDeclaration","scope":2091,"src":"7214:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2078,"name":"bytes","nodeType":"ElementaryTypeName","src":"7214:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2084,"initialValue":{"arguments":[{"id":2082,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"7261:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2080,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"7241:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"7241:19:8","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":2083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7241:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7199:67:8"},{"expression":{"arguments":[{"id":2086,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2077,"src":"7300:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2087,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2079,"src":"7309:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2088,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"7321:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2085,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2123,"src":"7283:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7283:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2068,"id":2090,"nodeType":"Return","src":"7276:58:8"}]},"documentation":{"id":2058,"nodeType":"StructuredDocumentation","src":"6774:175:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2092,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6963:20:8","nodeType":"FunctionDefinition","parameters":{"id":2065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2060,"mutability":"mutable","name":"target","nameLocation":"7001:6:8","nodeType":"VariableDeclaration","scope":2092,"src":"6993:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2059,"name":"address","nodeType":"ElementaryTypeName","src":"6993:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"data","nameLocation":"7030:4:8","nodeType":"VariableDeclaration","scope":2092,"src":"7017:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2061,"name":"bytes","nodeType":"ElementaryTypeName","src":"7017:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2064,"mutability":"mutable","name":"errorMessage","nameLocation":"7058:12:8","nodeType":"VariableDeclaration","scope":2092,"src":"7044:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2063,"name":"string","nodeType":"ElementaryTypeName","src":"7044:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6983:93:8"},"returnParameters":{"id":2068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2067,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2092,"src":"7095:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2066,"name":"bytes","nodeType":"ElementaryTypeName","src":"7095:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7094:14:8"},"scope":2124,"src":"6954:387:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2122,"nodeType":"Block","src":"7721:582:8","statements":[{"condition":{"id":2104,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2095,"src":"7735:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2120,"nodeType":"Block","src":"7792:505:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2108,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2097,"src":"7876:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7876:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7876:21:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2118,"nodeType":"Block","src":"8234:53:8","statements":[{"expression":{"arguments":[{"id":2115,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2099,"src":"8259:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2114,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8252:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8252:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2117,"nodeType":"ExpressionStatement","src":"8252:20:8"}]},"id":2119,"nodeType":"IfStatement","src":"7872:415:8","trueBody":{"id":2113,"nodeType":"Block","src":"7899:329:8","statements":[{"AST":{"nodeType":"YulBlock","src":"8069:145:8","statements":[{"nodeType":"YulVariableDeclaration","src":"8091:40:8","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"8120:10:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8114:5:8"},"nodeType":"YulFunctionCall","src":"8114:17:8"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"8095:15:8","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8163:2:8","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"8167:10:8"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8159:3:8"},"nodeType":"YulFunctionCall","src":"8159:19:8"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"8180:15:8"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8152:6:8"},"nodeType":"YulFunctionCall","src":"8152:44:8"},"nodeType":"YulExpressionStatement","src":"8152:44:8"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2097,"isOffset":false,"isSlot":false,"src":"8120:10:8","valueSize":1},{"declaration":2097,"isOffset":false,"isSlot":false,"src":"8167:10:8","valueSize":1}],"id":2112,"nodeType":"InlineAssembly","src":"8060:154:8"}]}}]},"id":2121,"nodeType":"IfStatement","src":"7731:566:8","trueBody":{"id":2107,"nodeType":"Block","src":"7744:42:8","statements":[{"expression":{"id":2105,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2097,"src":"7765:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2103,"id":2106,"nodeType":"Return","src":"7758:17:8"}]}}]},"documentation":{"id":2093,"nodeType":"StructuredDocumentation","src":"7347:209:8","text":" @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"},"id":2123,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"7570:16:8","nodeType":"FunctionDefinition","parameters":{"id":2100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2095,"mutability":"mutable","name":"success","nameLocation":"7601:7:8","nodeType":"VariableDeclaration","scope":2123,"src":"7596:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2094,"name":"bool","nodeType":"ElementaryTypeName","src":"7596:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2097,"mutability":"mutable","name":"returndata","nameLocation":"7631:10:8","nodeType":"VariableDeclaration","scope":2123,"src":"7618:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2096,"name":"bytes","nodeType":"ElementaryTypeName","src":"7618:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2099,"mutability":"mutable","name":"errorMessage","nameLocation":"7665:12:8","nodeType":"VariableDeclaration","scope":2123,"src":"7651:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2098,"name":"string","nodeType":"ElementaryTypeName","src":"7651:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7586:97:8"},"returnParameters":{"id":2103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2123,"src":"7707:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2101,"name":"bytes","nodeType":"ElementaryTypeName","src":"7707:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7706:14:8"},"scope":2124,"src":"7561:742:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2125,"src":"194:8111:8","usedErrors":[]}],"src":"101:8205:8"},"id":8},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[2146]},"id":2147,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2126,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:9"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2127,"nodeType":"StructuredDocumentation","src":"111:496:9","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":2146,"linearizedBaseContracts":[2146],"name":"Context","nameLocation":"626:7:9","nodeType":"ContractDefinition","nodes":[{"body":{"id":2135,"nodeType":"Block","src":"702:34:9","statements":[{"expression":{"expression":{"id":2132,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"719:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2131,"id":2134,"nodeType":"Return","src":"712:17:9"}]},"id":2136,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:9","nodeType":"FunctionDefinition","parameters":{"id":2128,"nodeType":"ParameterList","parameters":[],"src":"659:2:9"},"returnParameters":{"id":2131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2136,"src":"693:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2129,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:9"},"scope":2146,"src":"640:96:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2144,"nodeType":"Block","src":"809:32:9","statements":[{"expression":{"expression":{"id":2141,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"826:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2140,"id":2143,"nodeType":"Return","src":"819:15:9"}]},"id":2145,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:9","nodeType":"FunctionDefinition","parameters":{"id":2137,"nodeType":"ParameterList","parameters":[],"src":"759:2:9"},"returnParameters":{"id":2140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2145,"src":"793:14:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2138,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:9"},"scope":2146,"src":"742:99:9","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2147,"src":"608:235:9","usedErrors":[]}],"src":"86:758:9"},"id":9},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Strings":[2372]},"id":2373,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2148,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":2149,"nodeType":"StructuredDocumentation","src":"126:34:10","text":" @dev String operations."},"fullyImplemented":true,"id":2372,"linearizedBaseContracts":[2372],"name":"Strings","nameLocation":"169:7:10","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2152,"mutability":"constant","name":"_HEX_SYMBOLS","nameLocation":"208:12:10","nodeType":"VariableDeclaration","scope":2372,"src":"183:58:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":2150,"name":"bytes16","nodeType":"ElementaryTypeName","src":"183:7:10","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":2151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"223:18:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":2155,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"270:15:10","nodeType":"VariableDeclaration","scope":2372,"src":"247:43:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2153,"name":"uint8","nodeType":"ElementaryTypeName","src":"247:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":2154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"288:2:10","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":2233,"nodeType":"Block","src":"463:632:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2163,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"665:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"674:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"665:10:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2169,"nodeType":"IfStatement","src":"661:51:10","trueBody":{"id":2168,"nodeType":"Block","src":"677:35:10","statements":[{"expression":{"hexValue":"30","id":2166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"698:3:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"functionReturnParameters":2162,"id":2167,"nodeType":"Return","src":"691:10:10"}]}},{"assignments":[2171],"declarations":[{"constant":false,"id":2171,"mutability":"mutable","name":"temp","nameLocation":"729:4:10","nodeType":"VariableDeclaration","scope":2233,"src":"721:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2170,"name":"uint256","nodeType":"ElementaryTypeName","src":"721:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2173,"initialValue":{"id":2172,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"736:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"721:20:10"},{"assignments":[2175],"declarations":[{"constant":false,"id":2175,"mutability":"mutable","name":"digits","nameLocation":"759:6:10","nodeType":"VariableDeclaration","scope":2233,"src":"751:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2174,"name":"uint256","nodeType":"ElementaryTypeName","src":"751:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2176,"nodeType":"VariableDeclarationStatement","src":"751:14:10"},{"body":{"id":2187,"nodeType":"Block","src":"793:57:10","statements":[{"expression":{"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"807:8:10","subExpression":{"id":2180,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"807:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2182,"nodeType":"ExpressionStatement","src":"807:8:10"},{"expression":{"id":2185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2183,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"829:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":2184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"837:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"829:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2186,"nodeType":"ExpressionStatement","src":"829:10:10"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2177,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"782:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"790:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"782:9:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2188,"nodeType":"WhileStatement","src":"775:75:10"},{"assignments":[2190],"declarations":[{"constant":false,"id":2190,"mutability":"mutable","name":"buffer","nameLocation":"872:6:10","nodeType":"VariableDeclaration","scope":2233,"src":"859:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2189,"name":"bytes","nodeType":"ElementaryTypeName","src":"859:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2195,"initialValue":{"arguments":[{"id":2193,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"891:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"881:9:10","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2191,"name":"bytes","nodeType":"ElementaryTypeName","src":"885:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"881:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"859:39:10"},{"body":{"id":2226,"nodeType":"Block","src":"927:131:10","statements":[{"expression":{"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2199,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"941:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"941:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2202,"nodeType":"ExpressionStatement","src":"941:11:10"},{"expression":{"id":2220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2203,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2190,"src":"966:6:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2205,"indexExpression":{"id":2204,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"973:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"966:14:10","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3438","id":2210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"996:2:10","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2213,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"1009:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3130","id":2214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1017:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1009:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1001:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2211,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:10","typeDescriptions":{}}},"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1001:19:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"996:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"990:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2208,"name":"uint8","nodeType":"ElementaryTypeName","src":"990:5:10","typeDescriptions":{}}},"id":2218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"990:31:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"983:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2206,"name":"bytes1","nodeType":"ElementaryTypeName","src":"983:6:10","typeDescriptions":{}}},"id":2219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"983:39:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"966:56:10","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2221,"nodeType":"ExpressionStatement","src":"966:56:10"},{"expression":{"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2222,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"1036:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":2223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1045:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1036:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2225,"nodeType":"ExpressionStatement","src":"1036:11:10"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2196,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"915:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"924:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"915:10:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2227,"nodeType":"WhileStatement","src":"908:150:10"},{"expression":{"arguments":[{"id":2230,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2190,"src":"1081:6:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1074:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2228,"name":"string","nodeType":"ElementaryTypeName","src":"1074:6:10","typeDescriptions":{}}},"id":2231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1074:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2162,"id":2232,"nodeType":"Return","src":"1067:21:10"}]},"documentation":{"id":2156,"nodeType":"StructuredDocumentation","src":"297:90:10","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":2234,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"401:8:10","nodeType":"FunctionDefinition","parameters":{"id":2159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2158,"mutability":"mutable","name":"value","nameLocation":"418:5:10","nodeType":"VariableDeclaration","scope":2234,"src":"410:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2157,"name":"uint256","nodeType":"ElementaryTypeName","src":"410:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"409:15:10"},"returnParameters":{"id":2162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2234,"src":"448:13:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2160,"name":"string","nodeType":"ElementaryTypeName","src":"448:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"447:15:10"},"scope":2372,"src":"392:703:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2274,"nodeType":"Block","src":"1274:255:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"1288:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1288:10:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2248,"nodeType":"IfStatement","src":"1284:54:10","trueBody":{"id":2247,"nodeType":"Block","src":"1300:38:10","statements":[{"expression":{"hexValue":"30783030","id":2245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1321:6:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4","typeString":"literal_string \"0x00\""},"value":"0x00"},"functionReturnParameters":2241,"id":2246,"nodeType":"Return","src":"1314:13:10"}]}},{"assignments":[2250],"declarations":[{"constant":false,"id":2250,"mutability":"mutable","name":"temp","nameLocation":"1355:4:10","nodeType":"VariableDeclaration","scope":2274,"src":"1347:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2249,"name":"uint256","nodeType":"ElementaryTypeName","src":"1347:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2252,"initialValue":{"id":2251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"1362:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1347:20:10"},{"assignments":[2254],"declarations":[{"constant":false,"id":2254,"mutability":"mutable","name":"length","nameLocation":"1385:6:10","nodeType":"VariableDeclaration","scope":2274,"src":"1377:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2253,"name":"uint256","nodeType":"ElementaryTypeName","src":"1377:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2256,"initialValue":{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1394:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1377:18:10"},{"body":{"id":2267,"nodeType":"Block","src":"1423:57:10","statements":[{"expression":{"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1437:8:10","subExpression":{"id":2260,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"1437:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2262,"nodeType":"ExpressionStatement","src":"1437:8:10"},{"expression":{"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2263,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2250,"src":"1459:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1468:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1459:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2266,"nodeType":"ExpressionStatement","src":"1459:10:10"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2257,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2250,"src":"1412:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1420:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1412:9:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2268,"nodeType":"WhileStatement","src":"1405:75:10"},{"expression":{"arguments":[{"id":2270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"1508:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2271,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"1515:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2269,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2275,2351,2371],"referencedDeclaration":2351,"src":"1496:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1496:26:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2241,"id":2273,"nodeType":"Return","src":"1489:33:10"}]},"documentation":{"id":2235,"nodeType":"StructuredDocumentation","src":"1101:94:10","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":2275,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1209:11:10","nodeType":"FunctionDefinition","parameters":{"id":2238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2237,"mutability":"mutable","name":"value","nameLocation":"1229:5:10","nodeType":"VariableDeclaration","scope":2275,"src":"1221:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2236,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:15:10"},"returnParameters":{"id":2241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2240,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2275,"src":"1259:13:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2239,"name":"string","nodeType":"ElementaryTypeName","src":"1259:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1258:15:10"},"scope":2372,"src":"1200:329:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2350,"nodeType":"Block","src":"1742:351:10","statements":[{"assignments":[2286],"declarations":[{"constant":false,"id":2286,"mutability":"mutable","name":"buffer","nameLocation":"1765:6:10","nodeType":"VariableDeclaration","scope":2350,"src":"1752:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2285,"name":"bytes","nodeType":"ElementaryTypeName","src":"1752:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2295,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1784:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2290,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"1788:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1784:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":2292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1797:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1784:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1774:9:10","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2287,"name":"bytes","nodeType":"ElementaryTypeName","src":"1778:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1774:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1752:47:10"},{"expression":{"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2296,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"1809:6:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2298,"indexExpression":{"hexValue":"30","id":2297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1816:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1809:9:10","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1821:3:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1809:15:10","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2301,"nodeType":"ExpressionStatement","src":"1809:15:10"},{"expression":{"id":2306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2302,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"1834:6:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2304,"indexExpression":{"hexValue":"31","id":2303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1841:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1834:9:10","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":2305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1846:3:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"1834:15:10","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2307,"nodeType":"ExpressionStatement","src":"1834:15:10"},{"body":{"id":2336,"nodeType":"Block","src":"1904:87:10","statements":[{"expression":{"id":2330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2322,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"1918:6:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2324,"indexExpression":{"id":2323,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"1925:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1918:9:10","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2325,"name":"_HEX_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2152,"src":"1930:12:10","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":2329,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2278,"src":"1943:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1951:3:10","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"1943:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1930:25:10","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1918:37:10","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2331,"nodeType":"ExpressionStatement","src":"1918:37:10"},{"expression":{"id":2334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2332,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2278,"src":"1969:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1979:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1969:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2335,"nodeType":"ExpressionStatement","src":"1969:11:10"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2316,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"1892:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":2317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1896:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1892:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2337,"initializationExpression":{"assignments":[2309],"declarations":[{"constant":false,"id":2309,"mutability":"mutable","name":"i","nameLocation":"1872:1:10","nodeType":"VariableDeclaration","scope":2337,"src":"1864:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2308,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2315,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1876:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2311,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"1880:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1876:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1889:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1876:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1864:26:10"},"loopExpression":{"expression":{"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"1899:3:10","subExpression":{"id":2319,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"1901:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2321,"nodeType":"ExpressionStatement","src":"1899:3:10"},"nodeType":"ForStatement","src":"1859:132:10"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2339,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2278,"src":"2008:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2017:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2008:10:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":2342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2020:34:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":2338,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2000:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2000:55:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2344,"nodeType":"ExpressionStatement","src":"2000:55:10"},{"expression":{"arguments":[{"id":2347,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"2079:6:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2072:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2345,"name":"string","nodeType":"ElementaryTypeName","src":"2072:6:10","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2072:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2284,"id":2349,"nodeType":"Return","src":"2065:21:10"}]},"documentation":{"id":2276,"nodeType":"StructuredDocumentation","src":"1535:112:10","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":2351,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1661:11:10","nodeType":"FunctionDefinition","parameters":{"id":2281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2278,"mutability":"mutable","name":"value","nameLocation":"1681:5:10","nodeType":"VariableDeclaration","scope":2351,"src":"1673:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2277,"name":"uint256","nodeType":"ElementaryTypeName","src":"1673:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2280,"mutability":"mutable","name":"length","nameLocation":"1696:6:10","nodeType":"VariableDeclaration","scope":2351,"src":"1688:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2279,"name":"uint256","nodeType":"ElementaryTypeName","src":"1688:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1672:31:10"},"returnParameters":{"id":2284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2351,"src":"1727:13:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2282,"name":"string","nodeType":"ElementaryTypeName","src":"1727:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1726:15:10"},"scope":2372,"src":"1652:441:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2370,"nodeType":"Block","src":"2318:76:10","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":2364,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"2363:4:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2355:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2362,"name":"uint160","nodeType":"ElementaryTypeName","src":"2355:7:10","typeDescriptions":{}}},"id":2365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2355:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2347:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2360,"name":"uint256","nodeType":"ElementaryTypeName","src":"2347:7:10","typeDescriptions":{}}},"id":2366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2347:22:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2367,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2155,"src":"2371:15:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2359,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2275,2351,2371],"referencedDeclaration":2351,"src":"2335:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2335:52:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2358,"id":2369,"nodeType":"Return","src":"2328:59:10"}]},"documentation":{"id":2352,"nodeType":"StructuredDocumentation","src":"2099:141:10","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":2371,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2254:11:10","nodeType":"FunctionDefinition","parameters":{"id":2355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2354,"mutability":"mutable","name":"addr","nameLocation":"2274:4:10","nodeType":"VariableDeclaration","scope":2371,"src":"2266:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2353,"name":"address","nodeType":"ElementaryTypeName","src":"2266:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2265:14:10"},"returnParameters":{"id":2358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2357,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2371,"src":"2303:13:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2356,"name":"string","nodeType":"ElementaryTypeName","src":"2303:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2302:15:10"},"scope":2372,"src":"2245:149:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2373,"src":"161:2235:10","usedErrors":[]}],"src":"101:2296:10"},"id":10},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[2396],"IERC165":[2408]},"id":2397,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2374,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:11"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":2375,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2397,"sourceUnit":2409,"src":"124:23:11","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2377,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":2408,"src":"754:7:11"},"id":2378,"nodeType":"InheritanceSpecifier","src":"754:7:11"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"149:576:11","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":2396,"linearizedBaseContracts":[2396,2408],"name":"ERC165","nameLocation":"744:6:11","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2407],"body":{"id":2394,"nodeType":"Block","src":"920:64:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2387,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2381,"src":"937:11:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2389,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"957:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2408_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2408_$","typeString":"type(contract IERC165)"}],"id":2388,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"952:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"952:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2408","typeString":"type(contract IERC165)"}},"id":2391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2386,"id":2393,"nodeType":"Return","src":"930:47:11"}]},"documentation":{"id":2379,"nodeType":"StructuredDocumentation","src":"768:56:11","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2395,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:11","nodeType":"FunctionDefinition","overrides":{"id":2383,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:11"},"parameters":{"id":2382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2381,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:11","nodeType":"VariableDeclaration","scope":2395,"src":"856:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2380,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:11"},"returnParameters":{"id":2386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2385,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2395,"src":"914:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2384,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:11"},"scope":2396,"src":"829:155:11","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":2397,"src":"726:260:11","usedErrors":[]}],"src":"99:888:11"},"id":11},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2408]},"id":2409,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2398,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2399,"nodeType":"StructuredDocumentation","src":"125:279:12","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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":2408,"linearizedBaseContracts":[2408],"name":"IERC165","nameLocation":"415:7:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2400,"nodeType":"StructuredDocumentation","src":"429:340:12","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[EIP 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":2407,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:12","nodeType":"FunctionDefinition","parameters":{"id":2403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2402,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:12","nodeType":"VariableDeclaration","scope":2407,"src":"801:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2401,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:12"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2407,"src":"844:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2404,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:12"},"scope":2408,"src":"774:76:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2409,"src":"405:447:12","usedErrors":[]}],"src":"100:753:12"},"id":12},"contracts/BNPL.sol":{"ast":{"absolutePath":"contracts/BNPL.sol","exportedSymbols":{"BNPL":[2436],"Consideration":[4594]},"id":2437,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2410,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"33:24:13"},{"absolutePath":"contracts/lib/Consideration.sol","file":"./lib/Consideration.sol","id":2412,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2437,"sourceUnit":4595,"src":"59:60:13","symbolAliases":[{"foreign":{"id":2411,"name":"Consideration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"72:13:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2413,"name":"Consideration","nodeType":"IdentifierPath","referencedDeclaration":4594,"src":"138:13:13"},"id":2414,"nodeType":"InheritanceSpecifier","src":"138:13:13"}],"canonicalName":"BNPL","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":2436,"linearizedBaseContracts":[2436,4594,6886,7713,7881,5917,7995,8438,7919,6071,4265,4363,4325,5442,7767,4247,4158,6031,4761],"name":"BNPL","nameLocation":"130:4:13","nodeType":"ContractDefinition","nodes":[{"body":{"id":2425,"nodeType":"Block","src":"265:2:13","statements":[]},"id":2426,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2421,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"233:17:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2422,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"252:11:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2423,"kind":"baseConstructorSpecifier","modifierName":{"id":2420,"name":"Consideration","nodeType":"IdentifierPath","referencedDeclaration":4594,"src":"219:13:13"},"nodeType":"ModifierInvocation","src":"219:45:13"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2416,"mutability":"mutable","name":"conduitController","nameLocation":"179:17:13","nodeType":"VariableDeclaration","scope":2426,"src":"171:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"171:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2418,"mutability":"mutable","name":"shadowToken","nameLocation":"206:11:13","nodeType":"VariableDeclaration","scope":2426,"src":"198:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2417,"name":"address","nodeType":"ElementaryTypeName","src":"198:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"170:48:13"},"returnParameters":{"id":2424,"nodeType":"ParameterList","parameters":[],"src":"265:0:13"},"scope":2436,"src":"159:108:13","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4683],"body":{"id":2434,"nodeType":"Block","src":"343:30:13","statements":[{"expression":{"hexValue":"424e504c","id":2432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"360:6:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3c8359e88e9129b6c7c2ef6aa4b1baca80faf9733edfad5851ad912d00223dd","typeString":"literal_string \"BNPL\""},"value":"BNPL"},"functionReturnParameters":2431,"id":2433,"nodeType":"Return","src":"353:13:13"}]},"id":2435,"implemented":true,"kind":"function","modifiers":[],"name":"_nameString","nameLocation":"282:11:13","nodeType":"FunctionDefinition","overrides":{"id":2428,"nodeType":"OverrideSpecifier","overrides":[],"src":"310:8:13"},"parameters":{"id":2427,"nodeType":"ParameterList","parameters":[],"src":"293:2:13"},"returnParameters":{"id":2431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2430,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2435,"src":"328:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2429,"name":"string","nodeType":"ElementaryTypeName","src":"328:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"327:15:13"},"scope":2436,"src":"273:100:13","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2437,"src":"121:254:13","usedErrors":[4057,4061,4065,4069,4072,4079,4082,4087,4096,4099,4106,4109,4114,4119,4122,4125,4130,4133,4136,4139,4143,4147,4151,4155,4157,4246,4255,4258,4261,4264,4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"33:342:13"},"id":13},"contracts/ERC4907.sol":{"ast":{"absolutePath":"contracts/ERC4907.sol","exportedSymbols":{"ERC4907":[2574],"ERC4907A":[10513],"ERC721A":[10143],"IERC721A":[10349],"IERC721Metadata":[2454],"Ownable":[112]},"id":2575,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2438,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:14"},{"absolutePath":"erc721a/contracts/IERC721A.sol","file":"erc721a/contracts/IERC721A.sol","id":2440,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2575,"sourceUnit":10350,"src":"58:58:14","symbolAliases":[{"foreign":{"id":2439,"name":"IERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"67:8:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"erc721a/contracts/ERC721A.sol","file":"erc721a/contracts/ERC721A.sol","id":2442,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2575,"sourceUnit":10144,"src":"117:56:14","symbolAliases":[{"foreign":{"id":2441,"name":"ERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10143,"src":"126:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"erc721a/contracts/extensions/ERC4907A.sol","file":"erc721a/contracts/extensions/ERC4907A.sol","id":2444,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2575,"sourceUnit":10514,"src":"174:69:14","symbolAliases":[{"foreign":{"id":2443,"name":"ERC4907A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10513,"src":"183:8:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":2446,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2575,"sourceUnit":113,"src":"244:69:14","symbolAliases":[{"foreign":{"id":2445,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112,"src":"253:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2454,"linearizedBaseContracts":[2454],"name":"IERC721Metadata","nameLocation":"325:15:14","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c87b56dd","id":2453,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"356:8:14","nodeType":"FunctionDefinition","parameters":{"id":2449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2448,"mutability":"mutable","name":"tokenId","nameLocation":"373:7:14","nodeType":"VariableDeclaration","scope":2453,"src":"365:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2447,"name":"uint256","nodeType":"ElementaryTypeName","src":"365:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"364:17:14"},"returnParameters":{"id":2452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2453,"src":"405:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2450,"name":"string","nodeType":"ElementaryTypeName","src":"405:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"404:15:14"},"scope":2454,"src":"347:73:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2575,"src":"315:107:14","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":2455,"name":"ERC4907A","nodeType":"IdentifierPath","referencedDeclaration":10513,"src":"444:8:14"},"id":2456,"nodeType":"InheritanceSpecifier","src":"444:8:14"},{"baseName":{"id":2457,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"454:7:14"},"id":2458,"nodeType":"InheritanceSpecifier","src":"454:7:14"}],"canonicalName":"ERC4907","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":2574,"linearizedBaseContracts":[2574,112,2146,10513,10558,10143,10349],"name":"ERC4907","nameLocation":"433:7:14","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ERC4907.AssetInfo","id":2463,"members":[{"constant":false,"id":2460,"mutability":"mutable","name":"tokenAddress","nameLocation":"504:12:14","nodeType":"VariableDeclaration","scope":2463,"src":"496:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"496:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2462,"mutability":"mutable","name":"tokenId","nameLocation":"534:7:14","nodeType":"VariableDeclaration","scope":2463,"src":"526:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2461,"name":"uint256","nodeType":"ElementaryTypeName","src":"526:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AssetInfo","nameLocation":"476:9:14","nodeType":"StructDefinition","scope":2574,"src":"469:79:14","visibility":"public"},{"constant":false,"id":2468,"mutability":"mutable","name":"_assets","nameLocation":"593:7:14","nodeType":"VariableDeclaration","scope":2574,"src":"554:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_AssetInfo_$2463_storage_$","typeString":"mapping(uint256 => struct ERC4907.AssetInfo)"},"typeName":{"id":2467,"keyType":{"id":2464,"name":"uint256","nodeType":"ElementaryTypeName","src":"562:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"554:29:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_AssetInfo_$2463_storage_$","typeString":"mapping(uint256 => struct ERC4907.AssetInfo)"},"valueType":{"id":2466,"nodeType":"UserDefinedTypeName","pathNode":{"id":2465,"name":"AssetInfo","nodeType":"IdentifierPath","referencedDeclaration":2463,"src":"573:9:14"},"referencedDeclaration":2463,"src":"573:9:14","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$2463_storage_ptr","typeString":"struct ERC4907.AssetInfo"}}},"visibility":"internal"},{"body":{"id":2475,"nodeType":"Block","src":"645:2:14","statements":[]},"id":2476,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"424e504c","id":2471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"629:6:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3c8359e88e9129b6c7c2ef6aa4b1baca80faf9733edfad5851ad912d00223dd","typeString":"literal_string \"BNPL\""},"value":"BNPL"},{"hexValue":"424e504c","id":2472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"637:6:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3c8359e88e9129b6c7c2ef6aa4b1baca80faf9733edfad5851ad912d00223dd","typeString":"literal_string \"BNPL\""},"value":"BNPL"}],"id":2473,"kind":"baseConstructorSpecifier","modifierName":{"id":2470,"name":"ERC721A","nodeType":"IdentifierPath","referencedDeclaration":10143,"src":"621:7:14"},"nodeType":"ModifierInvocation","src":"621:23:14"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2469,"nodeType":"ParameterList","parameters":[],"src":"618:2:14"},"returnParameters":{"id":2474,"nodeType":"ParameterList","parameters":[],"src":"645:0:14"},"scope":2574,"src":"607:40:14","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2510,"nodeType":"Block","src":"791:120:14","statements":[{"expression":{"arguments":[{"id":2490,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2478,"src":"807:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"31","id":2491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"811:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":2489,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9679,"src":"801:5:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"801:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2493,"nodeType":"ExpressionStatement","src":"801:12:14"},{"expression":{"id":2499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2494,"name":"tid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"823:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2495,"name":"_nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"829:12:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"829:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"846:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"829:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"823:24:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2500,"nodeType":"ExpressionStatement","src":"823:24:14"},{"expression":{"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2501,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"857:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_AssetInfo_$2463_storage_$","typeString":"mapping(uint256 => struct ERC4907.AssetInfo storage ref)"}},"id":2503,"indexExpression":{"id":2502,"name":"tid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"865:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"857:12:14","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$2463_storage","typeString":"struct ERC4907.AssetInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2505,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"882:12:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2482,"src":"896:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2504,"name":"AssetInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"872:9:14","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AssetInfo_$2463_storage_ptr_$","typeString":"type(struct ERC4907.AssetInfo storage pointer)"}},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"872:32:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$2463_memory_ptr","typeString":"struct ERC4907.AssetInfo memory"}},"src":"857:47:14","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$2463_storage","typeString":"struct ERC4907.AssetInfo storage ref"}},"id":2509,"nodeType":"ExpressionStatement","src":"857:47:14"}]},"functionSelector":"c6c3bbe6","id":2511,"implemented":true,"kind":"function","modifiers":[{"id":2485,"kind":"modifierInvocation","modifierName":{"id":2484,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"747:9:14"},"nodeType":"ModifierInvocation","src":"747:9:14"}],"name":"mint","nameLocation":"666:4:14","nodeType":"FunctionDefinition","parameters":{"id":2483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2478,"mutability":"mutable","name":"to","nameLocation":"679:2:14","nodeType":"VariableDeclaration","scope":2511,"src":"671:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2477,"name":"address","nodeType":"ElementaryTypeName","src":"671:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2480,"mutability":"mutable","name":"tokenAddress","nameLocation":"691:12:14","nodeType":"VariableDeclaration","scope":2511,"src":"683:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2479,"name":"address","nodeType":"ElementaryTypeName","src":"683:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2482,"mutability":"mutable","name":"tokenId","nameLocation":"713:7:14","nodeType":"VariableDeclaration","scope":2511,"src":"705:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2481,"name":"uint256","nodeType":"ElementaryTypeName","src":"705:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"670:51:14"},"returnParameters":{"id":2488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2487,"mutability":"mutable","name":"tid","nameLocation":"782:3:14","nodeType":"VariableDeclaration","scope":2511,"src":"774:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2486,"name":"uint256","nodeType":"ElementaryTypeName","src":"774:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"773:13:14"},"scope":2574,"src":"657:254:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2531,"nodeType":"Block","src":"967:72:14","statements":[{"expression":{"arguments":[{"id":2519,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"985:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1002:1:14","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":2521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"994:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2520,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:14","typeDescriptions":{}}},"id":2523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"994:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1006:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2518,"name":"setUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10431,"src":"977:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint64_$returns$__$","typeString":"function (uint256,address,uint64)"}},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"977:31:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2526,"nodeType":"ExpressionStatement","src":"977:31:14"},{"expression":{"arguments":[{"id":2528,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"1024:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2527,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[9880,10032],"referencedDeclaration":9880,"src":"1018:5:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1018:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2530,"nodeType":"ExpressionStatement","src":"1018:14:14"}]},"functionSelector":"42966c68","id":2532,"implemented":true,"kind":"function","modifiers":[{"id":2516,"kind":"modifierInvocation","modifierName":{"id":2515,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"957:9:14"},"nodeType":"ModifierInvocation","src":"957:9:14"}],"name":"burn","nameLocation":"926:4:14","nodeType":"FunctionDefinition","parameters":{"id":2514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2513,"mutability":"mutable","name":"tokenId","nameLocation":"939:7:14","nodeType":"VariableDeclaration","scope":2532,"src":"931:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2512,"name":"uint256","nodeType":"ElementaryTypeName","src":"931:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"930:17:14"},"returnParameters":{"id":2517,"nodeType":"ParameterList","parameters":[],"src":"967:0:14"},"scope":2574,"src":"917:122:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[8916,10337],"body":{"id":2572,"nodeType":"Block","src":"1181:256:14","statements":[{"assignments":[2544],"declarations":[{"constant":false,"id":2544,"mutability":"mutable","name":"asset","nameLocation":"1208:5:14","nodeType":"VariableDeclaration","scope":2572,"src":"1191:22:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$2463_memory_ptr","typeString":"struct ERC4907.AssetInfo"},"typeName":{"id":2543,"nodeType":"UserDefinedTypeName","pathNode":{"id":2542,"name":"AssetInfo","nodeType":"IdentifierPath","referencedDeclaration":2463,"src":"1191:9:14"},"referencedDeclaration":2463,"src":"1191:9:14","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$2463_storage_ptr","typeString":"struct ERC4907.AssetInfo"}},"visibility":"internal"}],"id":2548,"initialValue":{"baseExpression":{"id":2545,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"1216:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_AssetInfo_$2463_storage_$","typeString":"mapping(uint256 => struct ERC4907.AssetInfo storage ref)"}},"id":2547,"indexExpression":{"id":2546,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2534,"src":"1224:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1216:16:14","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$2463_storage","typeString":"struct ERC4907.AssetInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"1191:41:14"},{"clauses":[{"block":{"id":2562,"nodeType":"Block","src":"1334:35:14","statements":[{"expression":{"id":2560,"name":"uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2558,"src":"1355:3:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2541,"id":2561,"nodeType":"Return","src":"1348:10:14"}]},"errorName":"","id":2563,"nodeType":"TryCatchClause","parameters":{"id":2559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2558,"mutability":"mutable","name":"uri","nameLocation":"1329:3:14","nodeType":"VariableDeclaration","scope":2563,"src":"1315:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2557,"name":"string","nodeType":"ElementaryTypeName","src":"1315:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1314:19:14"},"src":"1306:63:14"},{"block":{"id":2569,"nodeType":"Block","src":"1376:55:14","statements":[{"expression":{"arguments":[{"id":2566,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2534,"src":"1412:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2564,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1397:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC4907_$2574_$","typeString":"type(contract super ERC4907)"}},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenURI","nodeType":"MemberAccess","referencedDeclaration":8916,"src":"1397:14:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) view returns (string memory)"}},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1397:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2541,"id":2568,"nodeType":"Return","src":"1390:30:14"}]},"errorName":"","id":2570,"nodeType":"TryCatchClause","src":"1370:61:14"}],"externalCall":{"arguments":[{"expression":{"id":2554,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2544,"src":"1291:5:14","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$2463_memory_ptr","typeString":"struct ERC4907.AssetInfo memory"}},"id":2555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":2462,"src":"1291:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":2550,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2544,"src":"1262:5:14","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$2463_memory_ptr","typeString":"struct ERC4907.AssetInfo memory"}},"id":2551,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenAddress","nodeType":"MemberAccess","referencedDeclaration":2460,"src":"1262:18:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2549,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2454,"src":"1246:15:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$2454_$","typeString":"type(contract IERC721Metadata)"}},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1246:35:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$2454","typeString":"contract IERC721Metadata"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenURI","nodeType":"MemberAccess","referencedDeclaration":2453,"src":"1246:44:14","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) view external returns (string memory)"}},"id":2556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1246:59:14","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":2571,"nodeType":"TryStatement","src":"1242:189:14"}]},"functionSelector":"c87b56dd","id":2573,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"1054:8:14","nodeType":"FunctionDefinition","overrides":{"id":2538,"nodeType":"OverrideSpecifier","overrides":[{"id":2536,"name":"ERC721A","nodeType":"IdentifierPath","referencedDeclaration":10143,"src":"1126:7:14"},{"id":2537,"name":"IERC721A","nodeType":"IdentifierPath","referencedDeclaration":10349,"src":"1135:8:14"}],"src":"1116:28:14"},"parameters":{"id":2535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2534,"mutability":"mutable","name":"tokenId","nameLocation":"1071:7:14","nodeType":"VariableDeclaration","scope":2573,"src":"1063:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2533,"name":"uint256","nodeType":"ElementaryTypeName","src":"1063:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1062:17:14"},"returnParameters":{"id":2541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2573,"src":"1162:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2539,"name":"string","nodeType":"ElementaryTypeName","src":"1162:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1161:15:14"},"scope":2574,"src":"1045:392:14","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":2575,"src":"424:1015:14","usedErrors":[10149,10152,10155,10158,10161,10164,10167,10170,10173,10176,10179,10182,10185,10522]}],"src":"32:1407:14"},"id":14},"contracts/conduit/Conduit.sol":{"ast":{"absolutePath":"contracts/conduit/Conduit.sol","exportedSymbols":{"ChannelClosed_channel_ptr":[3623],"ChannelClosed_error_length":[3626],"ChannelClosed_error_ptr":[3620],"ChannelClosed_error_signature":[3617],"ChannelKey_channel_ptr":[3629],"ChannelKey_length":[3635],"ChannelKey_slot_ptr":[3632],"Conduit":[2853],"ConduitBatch1155Transfer":[3673],"ConduitInterface":[4006],"ConduitItemType":[3642],"ConduitTransfer":[3660],"TokenTransferrer":[7995]},"id":2854,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2576,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:15"},{"absolutePath":"contracts/interfaces/ConduitInterface.sol","file":"../interfaces/ConduitInterface.sol","id":2578,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2854,"sourceUnit":4007,"src":"57:70:15","symbolAliases":[{"foreign":{"id":2577,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"66:16:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/conduit/lib/ConduitEnums.sol","file":"./lib/ConduitEnums.sol","id":2580,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2854,"sourceUnit":3643,"src":"129:57:15","symbolAliases":[{"foreign":{"id":2579,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"138:15:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/TokenTransferrer.sol","file":"../lib/TokenTransferrer.sol","id":2582,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2854,"sourceUnit":7996,"src":"188:63:15","symbolAliases":[{"foreign":{"id":2581,"name":"TokenTransferrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7995,"src":"197:16:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/conduit/lib/ConduitStructs.sol","file":"./lib/ConduitStructs.sol","id":2585,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2854,"sourceUnit":3674,"src":"253:93:15","symbolAliases":[{"foreign":{"id":2583,"name":"ConduitTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"266:15:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2584,"name":"ConduitBatch1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"287:24:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/conduit/lib/ConduitConstants.sol","file":"./lib/ConduitConstants.sol","id":2586,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2854,"sourceUnit":3636,"src":"348:36:15","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2588,"name":"ConduitInterface","nodeType":"IdentifierPath","referencedDeclaration":4006,"src":"1078:16:15"},"id":2589,"nodeType":"InheritanceSpecifier","src":"1078:16:15"},{"baseName":{"id":2590,"name":"TokenTransferrer","nodeType":"IdentifierPath","referencedDeclaration":7995,"src":"1096:16:15"},"id":2591,"nodeType":"InheritanceSpecifier","src":"1096:16:15"}],"canonicalName":"Conduit","contractDependencies":[],"contractKind":"contract","documentation":{"id":2587,"nodeType":"StructuredDocumentation","src":"386:671:15","text":" @title Conduit\n @author 0age\n @notice This contract serves as an originator for \"proxied\" transfers. Each\n         conduit is deployed and controlled by a \"conduit controller\" that can\n         add and remove \"channels\" or contracts that can instruct the conduit\n         to transfer approved ERC20/721/1155 tokens. *IMPORTANT NOTE: each\n         conduit has an owner that can arbitrarily add or remove channels, and\n         a malicious or negligent owner can add a channel that allows for any\n         approved ERC20/721/1155 tokens to be taken immediately — be extremely\n         cautious with what conduits you give token approvals to!*"},"fullyImplemented":true,"id":2853,"linearizedBaseContracts":[2853,7995,4325,4006],"name":"Conduit","nameLocation":"1067:7:15","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2593,"mutability":"immutable","name":"_controller","nameLocation":"1226:11:15","nodeType":"VariableDeclaration","scope":2853,"src":"1200:37:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2592,"name":"address","nodeType":"ElementaryTypeName","src":"1200:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":2597,"mutability":"mutable","name":"_channels","nameLocation":"1318:9:15","nodeType":"VariableDeclaration","scope":2853,"src":"1285:42:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":2596,"keyType":{"id":2594,"name":"address","nodeType":"ElementaryTypeName","src":"1293:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1285:24:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":2595,"name":"bool","nodeType":"ElementaryTypeName","src":"1304:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"body":{"id":2602,"nodeType":"Block","src":"1489:1149:15","statements":[{"AST":{"nodeType":"YulBlock","src":"1580:995:15","statements":[{"expression":{"arguments":[{"name":"ChannelKey_channel_ptr","nodeType":"YulIdentifier","src":"1651:22:15"},{"arguments":[],"functionName":{"name":"caller","nodeType":"YulIdentifier","src":"1675:6:15"},"nodeType":"YulFunctionCall","src":"1675:8:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1644:6:15"},"nodeType":"YulFunctionCall","src":"1644:40:15"},"nodeType":"YulExpressionStatement","src":"1644:40:15"},{"expression":{"arguments":[{"name":"ChannelKey_slot_ptr","nodeType":"YulIdentifier","src":"1775:19:15"},{"name":"_channels.slot","nodeType":"YulIdentifier","src":"1796:14:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1768:6:15"},"nodeType":"YulFunctionCall","src":"1768:43:15"},"nodeType":"YulExpressionStatement","src":"1768:43:15"},{"body":{"nodeType":"YulBlock","src":"2051:514:15","statements":[{"expression":{"arguments":[{"name":"ChannelClosed_error_ptr","nodeType":"YulIdentifier","src":"2222:23:15"},{"name":"ChannelClosed_error_signature","nodeType":"YulIdentifier","src":"2247:29:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2215:6:15"},"nodeType":"YulFunctionCall","src":"2215:62:15"},"nodeType":"YulExpressionStatement","src":"2215:62:15"},{"expression":{"arguments":[{"name":"ChannelClosed_channel_ptr","nodeType":"YulIdentifier","src":"2359:25:15"},{"arguments":[],"functionName":{"name":"caller","nodeType":"YulIdentifier","src":"2386:6:15"},"nodeType":"YulFunctionCall","src":"2386:8:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:15"},"nodeType":"YulFunctionCall","src":"2352:43:15"},"nodeType":"YulExpressionStatement","src":"2352:43:15"},{"expression":{"arguments":[{"name":"ChannelClosed_error_ptr","nodeType":"YulIdentifier","src":"2499:23:15"},{"name":"ChannelClosed_error_length","nodeType":"YulIdentifier","src":"2524:26:15"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2492:6:15"},"nodeType":"YulFunctionCall","src":"2492:59:15"},"nodeType":"YulExpressionStatement","src":"2492:59:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"ChannelKey_channel_ptr","nodeType":"YulIdentifier","src":"1993:22:15"},{"name":"ChannelKey_length","nodeType":"YulIdentifier","src":"2017:17:15"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1983:9:15"},"nodeType":"YulFunctionCall","src":"1983:52:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"1977:5:15"},"nodeType":"YulFunctionCall","src":"1977:59:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1953:6:15"},"nodeType":"YulFunctionCall","src":"1953:97:15"},"nodeType":"YulIf","src":"1950:615:15"}]},"evmVersion":"london","externalReferences":[{"declaration":3623,"isOffset":false,"isSlot":false,"src":"2359:25:15","valueSize":1},{"declaration":3626,"isOffset":false,"isSlot":false,"src":"2524:26:15","valueSize":1},{"declaration":3620,"isOffset":false,"isSlot":false,"src":"2222:23:15","valueSize":1},{"declaration":3620,"isOffset":false,"isSlot":false,"src":"2499:23:15","valueSize":1},{"declaration":3617,"isOffset":false,"isSlot":false,"src":"2247:29:15","valueSize":1},{"declaration":3629,"isOffset":false,"isSlot":false,"src":"1651:22:15","valueSize":1},{"declaration":3629,"isOffset":false,"isSlot":false,"src":"1993:22:15","valueSize":1},{"declaration":3635,"isOffset":false,"isSlot":false,"src":"2017:17:15","valueSize":1},{"declaration":3632,"isOffset":false,"isSlot":false,"src":"1775:19:15","valueSize":1},{"declaration":2597,"isOffset":false,"isSlot":true,"src":"1796:14:15","suffix":"slot","valueSize":1}],"id":2600,"nodeType":"InlineAssembly","src":"1571:1004:15"},{"id":2601,"nodeType":"PlaceholderStatement","src":"2630:1:15"}]},"documentation":{"id":2598,"nodeType":"StructuredDocumentation","src":"1334:123:15","text":" @notice Ensure that the caller is currently registered as an open channel\n         on the conduit."},"id":2603,"name":"onlyOpenChannel","nameLocation":"1471:15:15","nodeType":"ModifierDefinition","parameters":{"id":2599,"nodeType":"ParameterList","parameters":[],"src":"1486:2:15"},"src":"1462:1176:15","virtual":false,"visibility":"internal"},{"body":{"id":2612,"nodeType":"Block","src":"2745:88:15","statements":[{"expression":{"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2607,"name":"_controller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"2802:11:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2608,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2816:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2816:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2802:24:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2611,"nodeType":"ExpressionStatement","src":"2802:24:15"}]},"documentation":{"id":2604,"nodeType":"StructuredDocumentation","src":"2644:82:15","text":" @notice In the constructor, set the deployer as the controller."},"id":2613,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2605,"nodeType":"ParameterList","parameters":[],"src":"2742:2:15"},"returnParameters":{"id":2606,"nodeType":"ParameterList","parameters":[],"src":"2745:0:15"},"scope":2853,"src":"2731:102:15","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3973],"body":{"id":2656,"nodeType":"Block","src":"3735:621:15","statements":[{"assignments":[2627],"declarations":[{"constant":false,"id":2627,"mutability":"mutable","name":"totalStandardTransfers","nameLocation":"3827:22:15","nodeType":"VariableDeclaration","scope":2656,"src":"3819:30:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2626,"name":"uint256","nodeType":"ElementaryTypeName","src":"3819:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2630,"initialValue":{"expression":{"id":2628,"name":"transfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"3852:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer calldata[] calldata"}},"id":2629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3852:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3819:49:15"},{"body":{"id":2648,"nodeType":"Block","src":"3968:259:15","statements":[{"expression":{"arguments":[{"baseExpression":{"id":2639,"name":"transfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"4067:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer calldata[] calldata"}},"id":2641,"indexExpression":{"id":2640,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"4077:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4067:12:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}],"id":2638,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2852,"src":"4057:9:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$returns$__$","typeString":"function (struct ConduitTransfer calldata)"}},"id":2642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4057:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2643,"nodeType":"ExpressionStatement","src":"4057:23:15"},{"id":2647,"nodeType":"UncheckedBlock","src":"4171:46:15","statements":[{"expression":{"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4199:3:15","subExpression":{"id":2644,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"4201:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2646,"nodeType":"ExpressionStatement","src":"4199:3:15"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2635,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"3938:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2636,"name":"totalStandardTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"3942:22:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3938:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2649,"initializationExpression":{"assignments":[2632],"declarations":[{"constant":false,"id":2632,"mutability":"mutable","name":"i","nameLocation":"3931:1:15","nodeType":"VariableDeclaration","scope":2649,"src":"3923:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2631,"name":"uint256","nodeType":"ElementaryTypeName","src":"3923:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2634,"initialValue":{"hexValue":"30","id":2633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3935:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3923:13:15"},"nodeType":"ForStatement","src":"3918:309:15"},{"expression":{"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2650,"name":"magicValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"4315:10:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":2651,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4328:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}},"id":2652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2657,"src":"4328:12:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_struct$_ConduitTransfer_$3660_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes4_$","typeString":"function (struct ConduitTransfer memory[] memory) external returns (bytes4)"}},"id":2653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"4328:21:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4315:34:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2655,"nodeType":"ExpressionStatement","src":"4315:34:15"}]},"documentation":{"id":2614,"nodeType":"StructuredDocumentation","src":"2839:738:15","text":" @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\n         with an open channel can call this function. Note that channels\n         are expected to implement reentrancy protection if desired, and\n         that cross-channel reentrancy may be possible if the conduit has\n         multiple open channels at once. Also note that channels are\n         expected to implement checks against transferring any zero-amount\n         items if that constraint is desired.\n @param transfers The ERC20/721/1155 transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."},"functionSelector":"4ce34aa2","id":2657,"implemented":true,"kind":"function","modifiers":[{"id":2622,"kind":"modifierInvocation","modifierName":{"id":2621,"name":"onlyOpenChannel","nodeType":"IdentifierPath","referencedDeclaration":2603,"src":"3679:15:15"},"nodeType":"ModifierInvocation","src":"3679:15:15"}],"name":"execute","nameLocation":"3591:7:15","nodeType":"FunctionDefinition","overrides":{"id":2620,"nodeType":"OverrideSpecifier","overrides":[],"src":"3662:8:15"},"parameters":{"id":2619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2618,"mutability":"mutable","name":"transfers","nameLocation":"3626:9:15","nodeType":"VariableDeclaration","scope":2657,"src":"3599:36:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer[]"},"typeName":{"baseType":{"id":2616,"nodeType":"UserDefinedTypeName","pathNode":{"id":2615,"name":"ConduitTransfer","nodeType":"IdentifierPath","referencedDeclaration":3660,"src":"3599:15:15"},"referencedDeclaration":3660,"src":"3599:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_storage_ptr","typeString":"struct ConduitTransfer"}},"id":2617,"nodeType":"ArrayTypeName","src":"3599:17:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_storage_$dyn_storage_ptr","typeString":"struct ConduitTransfer[]"}},"visibility":"internal"}],"src":"3598:38:15"},"returnParameters":{"id":2625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2624,"mutability":"mutable","name":"magicValue","nameLocation":"3719:10:15","nodeType":"VariableDeclaration","scope":2657,"src":"3712:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2623,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3712:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3711:19:15"},"scope":2853,"src":"3582:774:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3983],"body":{"id":2680,"nodeType":"Block","src":"5271:328:15","statements":[{"expression":{"arguments":[{"id":2671,"name":"batchTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"5445:14:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer calldata[] calldata"}],"id":2670,"name":"_performERC1155BatchTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7994,"src":"5415:29:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (struct ConduitBatch1155Transfer calldata[] calldata)"}},"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5415:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2673,"nodeType":"ExpressionStatement","src":"5415:45:15"},{"expression":{"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2674,"name":"magicValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"5549:10:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":2675,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5562:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executeBatch1155","nodeType":"MemberAccess","referencedDeclaration":2681,"src":"5562:21:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_struct$_ConduitBatch1155Transfer_$3673_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes4_$","typeString":"function (struct ConduitBatch1155Transfer memory[] memory) external returns (bytes4)"}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"5562:30:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5549:43:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2679,"nodeType":"ExpressionStatement","src":"5549:43:15"}]},"documentation":{"id":2658,"nodeType":"StructuredDocumentation","src":"4362:750:15","text":" @notice Execute a sequence of batch 1155 item transfers. Only a caller\n         with an open channel can call this function. Note that channels\n         are expected to implement reentrancy protection if desired, and\n         that cross-channel reentrancy may be possible if the conduit has\n         multiple open channels at once. Also note that channels are\n         expected to implement checks against transferring any zero-amount\n         items if that constraint is desired.\n @param batchTransfers The 1155 batch item transfers to perform.\n @return magicValue A magic value indicating that the item transfers were\n                    performed successfully."},"functionSelector":"8df25d92","id":2681,"implemented":true,"kind":"function","modifiers":[{"id":2666,"kind":"modifierInvocation","modifierName":{"id":2665,"name":"onlyOpenChannel","nodeType":"IdentifierPath","referencedDeclaration":2603,"src":"5227:15:15"},"nodeType":"ModifierInvocation","src":"5227:15:15"}],"name":"executeBatch1155","nameLocation":"5126:16:15","nodeType":"FunctionDefinition","overrides":{"id":2664,"nodeType":"OverrideSpecifier","overrides":[],"src":"5218:8:15"},"parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"batchTransfers","nameLocation":"5188:14:15","nodeType":"VariableDeclaration","scope":2681,"src":"5152:50:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer[]"},"typeName":{"baseType":{"id":2660,"nodeType":"UserDefinedTypeName","pathNode":{"id":2659,"name":"ConduitBatch1155Transfer","nodeType":"IdentifierPath","referencedDeclaration":3673,"src":"5152:24:15"},"referencedDeclaration":3673,"src":"5152:24:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitBatch1155Transfer_$3673_storage_ptr","typeString":"struct ConduitBatch1155Transfer"}},"id":2661,"nodeType":"ArrayTypeName","src":"5152:26:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_storage_$dyn_storage_ptr","typeString":"struct ConduitBatch1155Transfer[]"}},"visibility":"internal"}],"src":"5142:66:15"},"returnParameters":{"id":2669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2668,"mutability":"mutable","name":"magicValue","nameLocation":"5259:10:15","nodeType":"VariableDeclaration","scope":2681,"src":"5252:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2667,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5252:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5251:19:15"},"scope":2853,"src":"5117:482:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3997],"body":{"id":2732,"nodeType":"Block","src":"6732:920:15","statements":[{"assignments":[2699],"declarations":[{"constant":false,"id":2699,"mutability":"mutable","name":"totalStandardTransfers","nameLocation":"6824:22:15","nodeType":"VariableDeclaration","scope":2732,"src":"6816:30:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2698,"name":"uint256","nodeType":"ElementaryTypeName","src":"6816:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2702,"initialValue":{"expression":{"id":2700,"name":"standardTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"6849:17:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer calldata[] calldata"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6849:24:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6816:57:15"},{"body":{"id":2720,"nodeType":"Block","src":"6982:267:15","statements":[{"expression":{"arguments":[{"baseExpression":{"id":2711,"name":"standardTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"7081:17:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer calldata[] calldata"}},"id":2713,"indexExpression":{"id":2712,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"7099:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7081:20:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}],"id":2710,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2852,"src":"7071:9:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$returns$__$","typeString":"function (struct ConduitTransfer calldata)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7071:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2715,"nodeType":"ExpressionStatement","src":"7071:31:15"},{"id":2719,"nodeType":"UncheckedBlock","src":"7193:46:15","statements":[{"expression":{"id":2717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7221:3:15","subExpression":{"id":2716,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"7223:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2718,"nodeType":"ExpressionStatement","src":"7221:3:15"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2707,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"6952:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2708,"name":"totalStandardTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2699,"src":"6956:22:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6952:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2721,"initializationExpression":{"assignments":[2704],"declarations":[{"constant":false,"id":2704,"mutability":"mutable","name":"i","nameLocation":"6945:1:15","nodeType":"VariableDeclaration","scope":2721,"src":"6937:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2703,"name":"uint256","nodeType":"ElementaryTypeName","src":"6937:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2706,"initialValue":{"hexValue":"30","id":2705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6949:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6937:13:15"},"nodeType":"ForStatement","src":"6932:317:15"},{"expression":{"arguments":[{"id":2723,"name":"batchTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2690,"src":"7494:14:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer calldata[] calldata"}],"id":2722,"name":"_performERC1155BatchTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7994,"src":"7464:29:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (struct ConduitBatch1155Transfer calldata[] calldata)"}},"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7464:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2725,"nodeType":"ExpressionStatement","src":"7464:45:15"},{"expression":{"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2726,"name":"magicValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"7598:10:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":2727,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7611:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}},"id":2728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executeWithBatch1155","nodeType":"MemberAccess","referencedDeclaration":2733,"src":"7611:25:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_struct$_ConduitTransfer_$3660_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_ConduitBatch1155Transfer_$3673_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes4_$","typeString":"function (struct ConduitTransfer memory[] memory,struct ConduitBatch1155Transfer memory[] memory) external returns (bytes4)"}},"id":2729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"7611:34:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"7598:47:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2731,"nodeType":"ExpressionStatement","src":"7598:47:15"}]},"documentation":{"id":2682,"nodeType":"StructuredDocumentation","src":"5605:910:15","text":" @notice Execute a sequence of transfers, both single ERC20/721/1155 item\n         transfers as well as batch 1155 item transfers. Only a caller\n         with an open channel can call this function. Note that channels\n         are expected to implement reentrancy protection if desired, and\n         that cross-channel reentrancy may be possible if the conduit has\n         multiple open channels at once. Also note that channels are\n         expected to implement checks against transferring any zero-amount\n         items if that constraint is desired.\n @param standardTransfers The ERC20/721/1155 item transfers to perform.\n @param batchTransfers    The 1155 batch item transfers to perform.\n @return magicValue A magic value indicating that the item transfers were\n                    performed successfully."},"functionSelector":"899e104c","id":2733,"implemented":true,"kind":"function","modifiers":[{"id":2694,"kind":"modifierInvocation","modifierName":{"id":2693,"name":"onlyOpenChannel","nodeType":"IdentifierPath","referencedDeclaration":2603,"src":"6688:15:15"},"nodeType":"ModifierInvocation","src":"6688:15:15"}],"name":"executeWithBatch1155","nameLocation":"6529:20:15","nodeType":"FunctionDefinition","overrides":{"id":2692,"nodeType":"OverrideSpecifier","overrides":[],"src":"6679:8:15"},"parameters":{"id":2691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2686,"mutability":"mutable","name":"standardTransfers","nameLocation":"6586:17:15","nodeType":"VariableDeclaration","scope":2733,"src":"6559:44:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer[]"},"typeName":{"baseType":{"id":2684,"nodeType":"UserDefinedTypeName","pathNode":{"id":2683,"name":"ConduitTransfer","nodeType":"IdentifierPath","referencedDeclaration":3660,"src":"6559:15:15"},"referencedDeclaration":3660,"src":"6559:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_storage_ptr","typeString":"struct ConduitTransfer"}},"id":2685,"nodeType":"ArrayTypeName","src":"6559:17:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_storage_$dyn_storage_ptr","typeString":"struct ConduitTransfer[]"}},"visibility":"internal"},{"constant":false,"id":2690,"mutability":"mutable","name":"batchTransfers","nameLocation":"6649:14:15","nodeType":"VariableDeclaration","scope":2733,"src":"6613:50:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer[]"},"typeName":{"baseType":{"id":2688,"nodeType":"UserDefinedTypeName","pathNode":{"id":2687,"name":"ConduitBatch1155Transfer","nodeType":"IdentifierPath","referencedDeclaration":3673,"src":"6613:24:15"},"referencedDeclaration":3673,"src":"6613:24:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitBatch1155Transfer_$3673_storage_ptr","typeString":"struct ConduitBatch1155Transfer"}},"id":2689,"nodeType":"ArrayTypeName","src":"6613:26:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_storage_$dyn_storage_ptr","typeString":"struct ConduitBatch1155Transfer[]"}},"visibility":"internal"}],"src":"6549:120:15"},"returnParameters":{"id":2697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2696,"mutability":"mutable","name":"magicValue","nameLocation":"6720:10:15","nodeType":"VariableDeclaration","scope":2733,"src":"6713:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2695,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6713:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6712:19:15"},"scope":2853,"src":"6520:1132:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4005],"body":{"id":2774,"nodeType":"Block","src":"7956:532:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2742,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8040:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8040:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2744,"name":"_controller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"8054:11:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8040:25:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"8036:82:15","trueBody":{"id":2749,"nodeType":"Block","src":"8067:51:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2746,"name":"InvalidController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"8088:17:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8088:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2748,"nodeType":"RevertStatement","src":"8081:26:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2751,"name":"_channels","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"8211:9:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2753,"indexExpression":{"id":2752,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"8221:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8211:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2754,"name":"isOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"8233:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8211:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2762,"nodeType":"IfStatement","src":"8207:106:15","trueBody":{"id":2761,"nodeType":"Block","src":"8241:72:15","statements":[{"errorCall":{"arguments":[{"id":2757,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"8286:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2758,"name":"isOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"8295:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2756,"name":"ChannelStatusAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3950,"src":"8262:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool) pure"}},"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8262:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2760,"nodeType":"RevertStatement","src":"8255:47:15"}]}},{"expression":{"id":2767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2763,"name":"_channels","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"8368:9:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2765,"indexExpression":{"id":2764,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"8378:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8368:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2766,"name":"isOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"8389:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8368:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2768,"nodeType":"ExpressionStatement","src":"8368:27:15"},{"eventCall":{"arguments":[{"id":2770,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"8465:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2771,"name":"isOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"8474:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2769,"name":"ChannelUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3963,"src":"8450:14:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":2772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8450:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2773,"nodeType":"EmitStatement","src":"8445:36:15"}]},"documentation":{"id":2734,"nodeType":"StructuredDocumentation","src":"7658:222:15","text":" @notice Open or close a given channel. Only callable by the controller.\n @param channel The channel to open or close.\n @param isOpen  The status of the channel (either open or closed)."},"functionSelector":"c4e8fcb5","id":2775,"implemented":true,"kind":"function","modifiers":[],"name":"updateChannel","nameLocation":"7894:13:15","nodeType":"FunctionDefinition","overrides":{"id":2740,"nodeType":"OverrideSpecifier","overrides":[],"src":"7947:8:15"},"parameters":{"id":2739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2736,"mutability":"mutable","name":"channel","nameLocation":"7916:7:15","nodeType":"VariableDeclaration","scope":2775,"src":"7908:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2735,"name":"address","nodeType":"ElementaryTypeName","src":"7908:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2738,"mutability":"mutable","name":"isOpen","nameLocation":"7930:6:15","nodeType":"VariableDeclaration","scope":2775,"src":"7925:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2737,"name":"bool","nodeType":"ElementaryTypeName","src":"7925:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7907:30:15"},"returnParameters":{"id":2741,"nodeType":"ParameterList","parameters":[],"src":"7956:0:15"},"scope":2853,"src":"7885:603:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2851,"nodeType":"Block","src":"8853:1338:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"},"id":2786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2782,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"8943:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"itemType","nodeType":"MemberAccess","referencedDeclaration":3649,"src":"8943:13:15","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2784,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"8960:15:15","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ConduitItemType_$3642_$","typeString":"type(enum ConduitItemType)"}},"id":2785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC20","nodeType":"MemberAccess","referencedDeclaration":3639,"src":"8960:21:15","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},"src":"8943:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"},"id":2803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2799,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9371:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"itemType","nodeType":"MemberAccess","referencedDeclaration":3649,"src":"9371:13:15","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2801,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"9388:15:15","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ConduitItemType_$3642_$","typeString":"type(enum ConduitItemType)"}},"id":2802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":3640,"src":"9388:22:15","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},"src":"9371:39:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"},"id":2829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2825,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9809:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"itemType","nodeType":"MemberAccess","referencedDeclaration":3649,"src":"9809:13:15","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2827,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"9826:15:15","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ConduitItemType_$3642_$","typeString":"type(enum ConduitItemType)"}},"id":2828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC1155","nodeType":"MemberAccess","referencedDeclaration":3641,"src":"9826:23:15","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},"src":"9809:40:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2847,"nodeType":"Block","src":"10100:85:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2844,"name":"InvalidItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3953,"src":"10157:15:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10157:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2846,"nodeType":"RevertStatement","src":"10150:24:15"}]},"id":2848,"nodeType":"IfStatement","src":"9805:380:15","trueBody":{"id":2843,"nodeType":"Block","src":"9851:243:15","statements":[{"expression":{"arguments":[{"expression":{"id":2831,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9945:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3651,"src":"9945:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2833,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9973:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":3653,"src":"9973:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2835,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"10000:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":3655,"src":"10000:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2837,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"10025:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":3657,"src":"10025:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2839,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"10058:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3659,"src":"10058:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2830,"name":"_performERC1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"9904:23:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":2841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9904:179:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2842,"nodeType":"ExpressionStatement","src":"9904:179:15"}]}},"id":2849,"nodeType":"IfStatement","src":"9367:818:15","trueBody":{"id":2824,"nodeType":"Block","src":"9412:387:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2804,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9500:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3659,"src":"9500:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":2806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9515:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9500:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2812,"nodeType":"IfStatement","src":"9496:91:15","trueBody":{"id":2811,"nodeType":"Block","src":"9518:69:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2808,"name":"InvalidERC721TransferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4271,"src":"9543:27:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9543:29:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2810,"nodeType":"RevertStatement","src":"9536:36:15"}]}},{"expression":{"arguments":[{"expression":{"id":2814,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9679:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3651,"src":"9679:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2816,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9707:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":3653,"src":"9707:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2818,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9734:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":3655,"src":"9734:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2820,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9759:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":3657,"src":"9759:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2813,"name":"_performERC721Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7968,"src":"9639:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":2822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9639:149:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2823,"nodeType":"ExpressionStatement","src":"9639:149:15"}]}},"id":2850,"nodeType":"IfStatement","src":"8939:1246:15","trueBody":{"id":2798,"nodeType":"Block","src":"8983:378:15","statements":[{"expression":{"arguments":[{"expression":{"id":2788,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9306:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3651,"src":"9306:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2790,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9318:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":3653,"src":"9318:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2792,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9329:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":3655,"src":"9329:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2794,"name":"item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"9338:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer calldata"}},"id":2795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3659,"src":"9338:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2787,"name":"_performERC20Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"9284:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":2796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9284:66:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2797,"nodeType":"ExpressionStatement","src":"9284:66:15"}]}}]},"documentation":{"id":2776,"nodeType":"StructuredDocumentation","src":"8494:295:15","text":" @dev Internal function to transfer a given ERC20/721/1155 item. Note that\n      channels are expected to implement checks against transferring any\n      zero-amount items if that constraint is desired.\n @param item The ERC20/721/1155 item to transfer."},"id":2852,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"8803:9:15","nodeType":"FunctionDefinition","parameters":{"id":2780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2779,"mutability":"mutable","name":"item","nameLocation":"8838:4:15","nodeType":"VariableDeclaration","scope":2852,"src":"8813:29:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_calldata_ptr","typeString":"struct ConduitTransfer"},"typeName":{"id":2778,"nodeType":"UserDefinedTypeName","pathNode":{"id":2777,"name":"ConduitTransfer","nodeType":"IdentifierPath","referencedDeclaration":3660,"src":"8813:15:15"},"referencedDeclaration":3660,"src":"8813:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_storage_ptr","typeString":"struct ConduitTransfer"}},"visibility":"internal"}],"src":"8812:31:15"},"returnParameters":{"id":2781,"nodeType":"ParameterList","parameters":[],"src":"8853:0:15"},"scope":2853,"src":"8794:1397:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2854,"src":"1058:9135:15","usedErrors":[3943,3950,3953,3956,4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"32:10162:15"},"id":15},"contracts/conduit/ConduitController.sol":{"ast":{"absolutePath":"contracts/conduit/ConduitController.sol","exportedSymbols":{"Conduit":[2853],"ConduitController":[3611],"ConduitControllerInterface":[3932],"ConduitInterface":[4006]},"id":3612,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2855,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:16"},{"absolutePath":"contracts/interfaces/ConduitControllerInterface.sol","file":"../interfaces/ConduitControllerInterface.sol","id":2857,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3612,"sourceUnit":3933,"src":"57:94:16","symbolAliases":[{"foreign":{"id":2856,"name":"ConduitControllerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3932,"src":"70:26:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/ConduitInterface.sol","file":"../interfaces/ConduitInterface.sol","id":2859,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3612,"sourceUnit":4007,"src":"153:70:16","symbolAliases":[{"foreign":{"id":2858,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"162:16:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/conduit/Conduit.sol","file":"./Conduit.sol","id":2861,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3612,"sourceUnit":2854,"src":"225:40:16","symbolAliases":[{"foreign":{"id":2860,"name":"Conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"234:7:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2863,"name":"ConduitControllerInterface","nodeType":"IdentifierPath","referencedDeclaration":3932,"src":"569:26:16"},"id":2864,"nodeType":"InheritanceSpecifier","src":"569:26:16"}],"canonicalName":"ConduitController","contractDependencies":[2853],"contractKind":"contract","documentation":{"id":2862,"nodeType":"StructuredDocumentation","src":"267:271:16","text":" @title ConduitController\n @author 0age\n @notice ConduitController enables deploying and managing new conduits, or\n         contracts that allow registered callers (or open \"channels\") to\n         transfer approved ERC20/721/1155 tokens on their behalf."},"fullyImplemented":true,"id":3611,"linearizedBaseContracts":[3611,3932],"name":"ConduitController","nameLocation":"548:17:16","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2869,"mutability":"mutable","name":"_conduits","nameLocation":"726:9:16","nodeType":"VariableDeclaration","scope":3611,"src":"679:56:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties)"},"typeName":{"id":2868,"keyType":{"id":2865,"name":"address","nodeType":"ElementaryTypeName","src":"687:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"679:37:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties)"},"valueType":{"id":2867,"nodeType":"UserDefinedTypeName","pathNode":{"id":2866,"name":"ConduitProperties","nodeType":"IdentifierPath","referencedDeclaration":3745,"src":"698:17:16"},"referencedDeclaration":3745,"src":"698:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties"}}},"visibility":"internal"},{"constant":false,"id":2871,"mutability":"immutable","name":"_CONDUIT_CREATION_CODE_HASH","nameLocation":"850:27:16","nodeType":"VariableDeclaration","scope":3611,"src":"823:54:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2870,"name":"bytes32","nodeType":"ElementaryTypeName","src":"823:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2873,"mutability":"immutable","name":"_CONDUIT_RUNTIME_CODE_HASH","nameLocation":"910:26:16","nodeType":"VariableDeclaration","scope":3611,"src":"883:53:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2872,"name":"bytes32","nodeType":"ElementaryTypeName","src":"883:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"body":{"id":2907,"nodeType":"Block","src":"1118:434:16","statements":[{"expression":{"id":2884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2877,"name":"_CONDUIT_CREATION_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"1205:27:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"arguments":[{"id":2880,"name":"Conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"1250:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Conduit_$2853_$","typeString":"type(contract Conduit)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_Conduit_$2853_$","typeString":"type(contract Conduit)"}],"id":2879,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1245:4:16","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1245:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_Conduit_$2853","typeString":"type(contract Conduit)"}},"id":2882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"creationCode","nodeType":"MemberAccess","src":"1245:26:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2878,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1235:9:16","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1235:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1205:67:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2885,"nodeType":"ExpressionStatement","src":"1205:67:16"},{"assignments":[2888],"declarations":[{"constant":false,"id":2888,"mutability":"mutable","name":"zeroConduit","nameLocation":"1351:11:16","nodeType":"VariableDeclaration","scope":2907,"src":"1343:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"},"typeName":{"id":2887,"nodeType":"UserDefinedTypeName","pathNode":{"id":2886,"name":"Conduit","nodeType":"IdentifierPath","referencedDeclaration":2853,"src":"1343:7:16"},"referencedDeclaration":2853,"src":"1343:7:16","typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}},"visibility":"internal"}],"id":2898,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1365:11:16","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_Conduit_$2853_$","typeString":"function () returns (contract Conduit)"},"typeName":{"id":2890,"nodeType":"UserDefinedTypeName","pathNode":{"id":2889,"name":"Conduit","nodeType":"IdentifierPath","referencedDeclaration":2853,"src":"1369:7:16"},"referencedDeclaration":2853,"src":"1369:7:16","typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}}},"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["salt"],"nodeType":"FunctionCallOptions","options":[{"arguments":[{"hexValue":"30","id":2894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1392:1:16","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":2893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1384:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1384:7:16","typeDescriptions":{}}},"id":2895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1384:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"src":"1365:31:16","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_Conduit_$2853_$salt","typeString":"function () returns (contract Conduit)"}},"id":2897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1365:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}},"nodeType":"VariableDeclarationStatement","src":"1343:55:16"},{"expression":{"id":2905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2899,"name":"_CONDUIT_RUNTIME_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2873,"src":"1487:26:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":2902,"name":"zeroConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2888,"src":"1524:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}],"id":2901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1516:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2900,"name":"address","nodeType":"ElementaryTypeName","src":"1516:7:16","typeDescriptions":{}}},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1516:20:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"codehash","nodeType":"MemberAccess","src":"1516:29:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1487:58:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2906,"nodeType":"ExpressionStatement","src":"1487:58:16"}]},"documentation":{"id":2874,"nodeType":"StructuredDocumentation","src":"943:156:16","text":" @dev Initialize contract by deploying a conduit and setting the creation\n      code and runtime code hashes as immutable arguments."},"id":2908,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2875,"nodeType":"ParameterList","parameters":[],"src":"1115:2:16"},"returnParameters":{"id":2876,"nodeType":"ParameterList","parameters":[],"src":"1118:0:16"},"scope":3611,"src":"1104:448:16","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3822],"body":{"id":3025,"nodeType":"Block","src":"2448:1989:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2919,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2913,"src":"2521:12:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2545:1:16","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":2921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2537:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2920,"name":"address","nodeType":"ElementaryTypeName","src":"2537:7:16","typeDescriptions":{}}},"id":2923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2537:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2521:26:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2929,"nodeType":"IfStatement","src":"2517:85:16","trueBody":{"id":2928,"nodeType":"Block","src":"2549:53:16","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2925,"name":"InvalidInitialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3772,"src":"2570:19:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2570:21:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2927,"nodeType":"RevertStatement","src":"2563:28:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":2936,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"2719:10:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2711:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":2934,"name":"bytes20","nodeType":"ElementaryTypeName","src":"2711:7:16","typeDescriptions":{}}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2711:19:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":2933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2703:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2932,"name":"uint160","nodeType":"ElementaryTypeName","src":"2703:7:16","typeDescriptions":{}}},"id":2938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2703:28:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2695:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2930,"name":"address","nodeType":"ElementaryTypeName","src":"2695:7:16","typeDescriptions":{}}},"id":2939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2695:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2940,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2736:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2736:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2695:51:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2947,"nodeType":"IfStatement","src":"2691:181:16","trueBody":{"id":2946,"nodeType":"Block","src":"2748:124:16","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2943,"name":"InvalidCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"2845:14:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2845:16:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2945,"nodeType":"RevertStatement","src":"2838:23:16"}]}},{"expression":{"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2948,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"2959:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30786666","id":2960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3132:4:16","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":2959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3125:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2958,"name":"bytes1","nodeType":"ElementaryTypeName","src":"3125:6:16","typeDescriptions":{}}},"id":2961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3125:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":2964,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3175:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitController_$3611","typeString":"contract ConduitController"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ConduitController_$3611","typeString":"contract ConduitController"}],"id":2963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3167:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2962,"name":"address","nodeType":"ElementaryTypeName","src":"3167:7:16","typeDescriptions":{}}},"id":2965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3167:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2966,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"3210:10:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2967,"name":"_CONDUIT_CREATION_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"3250:27:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2956,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3079:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3079:16:16","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3079:224:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2955,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3044:9:16","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3044:281:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3015:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2953,"name":"uint256","nodeType":"ElementaryTypeName","src":"3015:7:16","typeDescriptions":{}}},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3015:328:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2990:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2951,"name":"uint160","nodeType":"ElementaryTypeName","src":"2990:7:16","typeDescriptions":{}}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2990:367:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2969:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2949,"name":"address","nodeType":"ElementaryTypeName","src":"2969:7:16","typeDescriptions":{}}},"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2969:398:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2959:408:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2974,"nodeType":"ExpressionStatement","src":"2959:408:16"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2975,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"3462:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"codehash","nodeType":"MemberAccess","src":"3462:16:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2977,"name":"_CONDUIT_RUNTIME_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2873,"src":"3482:26:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3462:46:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2984,"nodeType":"IfStatement","src":"3458:193:16","trueBody":{"id":2983,"nodeType":"Block","src":"3510:141:16","statements":[{"errorCall":{"arguments":[{"id":2980,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"3632:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2979,"name":"ConduitAlreadyExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3792,"src":"3611:20:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3611:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2982,"nodeType":"RevertStatement","src":"3604:36:16"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"id":2987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"3738:11:16","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_Conduit_$2853_$","typeString":"function () returns (contract Conduit)"},"typeName":{"id":2986,"nodeType":"UserDefinedTypeName","pathNode":{"id":2985,"name":"Conduit","nodeType":"IdentifierPath","referencedDeclaration":2853,"src":"3742:7:16"},"referencedDeclaration":2853,"src":"3742:7:16","typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}}},"id":2989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["salt"],"nodeType":"FunctionCallOptions","options":[{"id":2988,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"3757:10:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"src":"3738:31:16","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_Conduit_$2853_$salt","typeString":"function () returns (contract Conduit)"}},"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3738:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Conduit_$2853","typeString":"contract Conduit"}},"id":2991,"nodeType":"ExpressionStatement","src":"3738:33:16"},{"assignments":[2994],"declarations":[{"constant":false,"id":2994,"mutability":"mutable","name":"conduitProperties","nameLocation":"3879:17:16","nodeType":"VariableDeclaration","scope":3025,"src":"3853:43:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties"},"typeName":{"id":2993,"nodeType":"UserDefinedTypeName","pathNode":{"id":2992,"name":"ConduitProperties","nodeType":"IdentifierPath","referencedDeclaration":3745,"src":"3853:17:16"},"referencedDeclaration":3745,"src":"3853:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties"}},"visibility":"internal"}],"id":2998,"initialValue":{"baseExpression":{"id":2995,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"3899:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":2997,"indexExpression":{"id":2996,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"3909:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3899:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3853:64:16"},{"expression":{"id":3003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2999,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2994,"src":"3999:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":3735,"src":"3999:23:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3002,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2913,"src":"4025:12:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3999:38:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3004,"nodeType":"ExpressionStatement","src":"3999:38:16"},{"expression":{"id":3009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3005,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2994,"src":"4128:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3007,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":3733,"src":"4128:21:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3008,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"4152:10:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4128:34:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3010,"nodeType":"ExpressionStatement","src":"4128:34:16"},{"eventCall":{"arguments":[{"id":3012,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"4261:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3013,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"4270:10:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3011,"name":"NewConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3752,"src":"4250:10:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":3014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4250:31:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3015,"nodeType":"EmitStatement","src":"4245:36:16"},{"eventCall":{"arguments":[{"id":3017,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"4396:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4413:1:16","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":3019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4405:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3018,"name":"address","nodeType":"ElementaryTypeName","src":"4405:7:16","typeDescriptions":{}}},"id":3021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4405:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3022,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2913,"src":"4417:12:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3016,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"4375:20:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":3023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4375:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3024,"nodeType":"EmitStatement","src":"4370:60:16"}]},"documentation":{"id":2909,"nodeType":"StructuredDocumentation","src":"1558:748:16","text":" @notice Deploy a new conduit using a supplied conduit key and assigning\n         an initial owner for the deployed conduit. Note that the first\n         twenty bytes of the supplied conduit key must match the caller\n         and that a new conduit cannot be created if one has already been\n         deployed using the same conduit key.\n @param conduitKey   The conduit key used to deploy the conduit. Note that\n                     the first twenty bytes of the conduit key must match\n                     the caller of this contract.\n @param initialOwner The initial owner to set for the new conduit.\n @return conduit The address of the newly deployed conduit."},"functionSelector":"794593bc","id":3026,"implemented":true,"kind":"function","modifiers":[],"name":"createConduit","nameLocation":"2320:13:16","nodeType":"FunctionDefinition","overrides":{"id":2915,"nodeType":"OverrideSpecifier","overrides":[],"src":"2401:8:16"},"parameters":{"id":2914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2911,"mutability":"mutable","name":"conduitKey","nameLocation":"2342:10:16","nodeType":"VariableDeclaration","scope":3026,"src":"2334:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2334:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2913,"mutability":"mutable","name":"initialOwner","nameLocation":"2362:12:16","nodeType":"VariableDeclaration","scope":3026,"src":"2354:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2912,"name":"address","nodeType":"ElementaryTypeName","src":"2354:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2333:42:16"},"returnParameters":{"id":2918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2917,"mutability":"mutable","name":"conduit","nameLocation":"2435:7:16","nodeType":"VariableDeclaration","scope":3026,"src":"2427:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2916,"name":"address","nodeType":"ElementaryTypeName","src":"2427:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2426:17:16"},"scope":3611,"src":"2311:2126:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3832],"body":{"id":3162,"nodeType":"Block","src":"5282:2862:16","statements":[{"expression":{"arguments":[{"id":3038,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"5398:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3037,"name":"_assertCallerIsConduitOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"5370:27:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5370:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3040,"nodeType":"ExpressionStatement","src":"5370:36:16"},{"expression":{"arguments":[{"id":3045,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"5508:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3046,"name":"isOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"5517:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"id":3042,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"5485:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3041,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"5468:16:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ConduitInterface_$4006_$","typeString":"type(contract ConduitInterface)"}},"id":3043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5468:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ConduitInterface_$4006","typeString":"contract ConduitInterface"}},"id":3044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateChannel","nodeType":"MemberAccess","referencedDeclaration":4005,"src":"5468:39:16","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool) external"}},"id":3047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5468:56:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3048,"nodeType":"ExpressionStatement","src":"5468:56:16"},{"assignments":[3051],"declarations":[{"constant":false,"id":3051,"mutability":"mutable","name":"conduitProperties","nameLocation":"5640:17:16","nodeType":"VariableDeclaration","scope":3162,"src":"5614:43:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties"},"typeName":{"id":3050,"nodeType":"UserDefinedTypeName","pathNode":{"id":3049,"name":"ConduitProperties","nodeType":"IdentifierPath","referencedDeclaration":3745,"src":"5614:17:16"},"referencedDeclaration":3745,"src":"5614:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties"}},"visibility":"internal"}],"id":3055,"initialValue":{"baseExpression":{"id":3052,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"5660:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3054,"indexExpression":{"id":3053,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"5670:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5660:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5614:64:16"},{"assignments":[3057],"declarations":[{"constant":false,"id":3057,"mutability":"mutable","name":"channelIndexPlusOne","nameLocation":"5778:19:16","nodeType":"VariableDeclaration","scope":3162,"src":"5770:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3056,"name":"uint256","nodeType":"ElementaryTypeName","src":"5770:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3063,"initialValue":{"components":[{"baseExpression":{"expression":{"id":3058,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"5814:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channelIndexesPlusOne","nodeType":"MemberAccess","referencedDeclaration":3744,"src":"5814:39:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3061,"indexExpression":{"id":3060,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"5854:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5814:48:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5800:72:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5770:102:16"},{"assignments":[3065],"declarations":[{"constant":false,"id":3065,"mutability":"mutable","name":"channelPreviouslyOpen","nameLocation":"5965:21:16","nodeType":"VariableDeclaration","scope":3162,"src":"5960:26:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3064,"name":"bool","nodeType":"ElementaryTypeName","src":"5960:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":3069,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3066,"name":"channelIndexPlusOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"5989:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6012:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5989:24:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5960:53:16"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3070,"name":"isOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"6104:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6114:22:16","subExpression":{"id":3071,"name":"channelPreviouslyOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"6115:21:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6104:32:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6493:7:16","subExpression":{"id":3094,"name":"isOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"6494:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":3096,"name":"channelPreviouslyOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"6504:21:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6493:32:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3160,"nodeType":"IfStatement","src":"6489:1649:16","trueBody":{"id":3159,"nodeType":"Block","src":"6527:1611:16","statements":[{"assignments":[3099],"declarations":[{"constant":false,"id":3099,"mutability":"mutable","name":"removedChannelIndex","nameLocation":"6708:19:16","nodeType":"VariableDeclaration","scope":3159,"src":"6700:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3098,"name":"uint256","nodeType":"ElementaryTypeName","src":"6700:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3100,"nodeType":"VariableDeclarationStatement","src":"6700:27:16"},{"id":3107,"nodeType":"UncheckedBlock","src":"6874:88:16","statements":[{"expression":{"id":3105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3101,"name":"removedChannelIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"6902:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3102,"name":"channelIndexPlusOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"6924:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6946:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6924:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6902:45:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3106,"nodeType":"ExpressionStatement","src":"6902:45:16"}]},{"assignments":[3109],"declarations":[{"constant":false,"id":3109,"mutability":"mutable","name":"finalChannelIndex","nameLocation":"7064:17:16","nodeType":"VariableDeclaration","scope":3159,"src":"7056:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3108,"name":"uint256","nodeType":"ElementaryTypeName","src":"7056:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3115,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3110,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"7084:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"7084:26:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7084:33:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7120:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7084:37:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7056:65:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3116,"name":"finalChannelIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"7218:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3117,"name":"removedChannelIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"7239:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7218:40:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3145,"nodeType":"IfStatement","src":"7214:640:16","trueBody":{"id":3144,"nodeType":"Block","src":"7260:594:16","statements":[{"assignments":[3120],"declarations":[{"constant":false,"id":3120,"mutability":"mutable","name":"finalChannel","nameLocation":"7366:12:16","nodeType":"VariableDeclaration","scope":3144,"src":"7358:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3119,"name":"address","nodeType":"ElementaryTypeName","src":"7358:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3126,"initialValue":{"components":[{"baseExpression":{"expression":{"id":3121,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"7403:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3122,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"7403:26:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3124,"indexExpression":{"id":3123,"name":"finalChannelIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"7430:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7403:45:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3125,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7381:85:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7358:108:16"},{"expression":{"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3127,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"7565:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"7565:26:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3131,"indexExpression":{"id":3129,"name":"removedChannelIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"7592:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7565:47:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3132,"name":"finalChannel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"7615:12:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7565:62:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3134,"nodeType":"ExpressionStatement","src":"7565:62:16"},{"expression":{"id":3142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3135,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"7724:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channelIndexesPlusOne","nodeType":"MemberAccess","referencedDeclaration":3744,"src":"7724:39:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3139,"indexExpression":{"id":3137,"name":"finalChannel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"7764:12:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7724:53:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":3140,"name":"channelIndexPlusOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"7802:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3141,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7780:59:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7724:115:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3143,"nodeType":"ExpressionStatement","src":"7724:115:16"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":3146,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"7948:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"7948:26:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"7948:30:16","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":3151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7948:32:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3152,"nodeType":"ExpressionStatement","src":"7948:32:16"},{"expression":{"id":3157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8072:55:16","subExpression":{"baseExpression":{"expression":{"id":3153,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"8079:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channelIndexesPlusOne","nodeType":"MemberAccess","referencedDeclaration":3744,"src":"8079:39:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3156,"indexExpression":{"id":3155,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"8119:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8079:48:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3158,"nodeType":"ExpressionStatement","src":"8072:55:16"}]}},"id":3161,"nodeType":"IfStatement","src":"6100:2038:16","trueBody":{"id":3093,"nodeType":"Block","src":"6138:345:16","statements":[{"expression":{"arguments":[{"id":3079,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"6254:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":3074,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"6222:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"6222:26:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"6222:31:16","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":3080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6222:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3081,"nodeType":"ExpressionStatement","src":"6222:40:16"},{"expression":{"id":3091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3082,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"6356:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channelIndexesPlusOne","nodeType":"MemberAccess","referencedDeclaration":3744,"src":"6356:39:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3086,"indexExpression":{"id":3084,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"6396:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6356:48:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"expression":{"id":3087,"name":"conduitProperties","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"6425:17:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage_ptr","typeString":"struct ConduitControllerInterface.ConduitProperties storage pointer"}},"id":3088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"6425:26:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6425:33:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3090,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6407:65:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6356:116:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3092,"nodeType":"ExpressionStatement","src":"6356:116:16"}]}}]},"documentation":{"id":3027,"nodeType":"StructuredDocumentation","src":"4443:716:16","text":" @notice Open or close a channel on a given conduit, thereby allowing the\n         specified account to execute transfers against that conduit.\n         Extreme care must be taken when updating channels, as malicious\n         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\n         tokens where the token holder has granted the conduit approval.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to open or close the channel.\n @param channel The channel to open or close on the conduit.\n @param isOpen  A boolean indicating whether to open or close the channel."},"functionSelector":"13ad9cab","id":3163,"implemented":true,"kind":"function","modifiers":[],"name":"updateChannel","nameLocation":"5173:13:16","nodeType":"FunctionDefinition","overrides":{"id":3035,"nodeType":"OverrideSpecifier","overrides":[],"src":"5273:8:16"},"parameters":{"id":3034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3029,"mutability":"mutable","name":"conduit","nameLocation":"5204:7:16","nodeType":"VariableDeclaration","scope":3163,"src":"5196:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3028,"name":"address","nodeType":"ElementaryTypeName","src":"5196:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3031,"mutability":"mutable","name":"channel","nameLocation":"5229:7:16","nodeType":"VariableDeclaration","scope":3163,"src":"5221:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3030,"name":"address","nodeType":"ElementaryTypeName","src":"5221:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3033,"mutability":"mutable","name":"isOpen","nameLocation":"5251:6:16","nodeType":"VariableDeclaration","scope":3163,"src":"5246:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3032,"name":"bool","nodeType":"ElementaryTypeName","src":"5246:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5186:77:16"},"returnParameters":{"id":3036,"nodeType":"ParameterList","parameters":[],"src":"5282:0:16"},"scope":3611,"src":"5164:2980:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3840],"body":{"id":3212,"nodeType":"Block","src":"8746:814:16","statements":[{"expression":{"arguments":[{"id":3173,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"8862:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3172,"name":"_assertCallerIsConduitOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"8834:27:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8834:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3175,"nodeType":"ExpressionStatement","src":"8834:36:16"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3176,"name":"newPotentialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"8954:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8983:1:16","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":3178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8975:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3177,"name":"address","nodeType":"ElementaryTypeName","src":"8975:7:16","typeDescriptions":{}}},"id":3180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8975:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8954:31:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3187,"nodeType":"IfStatement","src":"8950:108:16","trueBody":{"id":3186,"nodeType":"Block","src":"8987:71:16","statements":[{"errorCall":{"arguments":[{"id":3183,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"9039:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3182,"name":"NewPotentialOwnerIsZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3802,"src":"9008:30:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9008:39:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3185,"nodeType":"RevertStatement","src":"9001:46:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3188,"name":"newPotentialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"9134:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"baseExpression":{"id":3189,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"9155:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3191,"indexExpression":{"id":3190,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"9165:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9155:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"potentialOwner","nodeType":"MemberAccess","referencedDeclaration":3737,"src":"9155:33:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9134:54:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3200,"nodeType":"IfStatement","src":"9130:147:16","trueBody":{"id":3199,"nodeType":"Block","src":"9190:87:16","statements":[{"errorCall":{"arguments":[{"id":3195,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"9239:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3196,"name":"newPotentialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"9248:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3194,"name":"NewPotentialOwnerAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3779,"src":"9211:27:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9211:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3198,"nodeType":"RevertStatement","src":"9204:62:16"}]}},{"eventCall":{"arguments":[{"id":3202,"name":"newPotentialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"9393:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3201,"name":"PotentialOwnerUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"9371:21:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9371:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3204,"nodeType":"EmitStatement","src":"9366:45:16"},{"expression":{"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3205,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"9500:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3207,"indexExpression":{"id":3206,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"9510:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9500:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"potentialOwner","nodeType":"MemberAccess","referencedDeclaration":3737,"src":"9500:33:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3209,"name":"newPotentialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"9536:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9500:53:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3211,"nodeType":"ExpressionStatement","src":"9500:53:16"}]},"documentation":{"id":3164,"nodeType":"StructuredDocumentation","src":"8150:482:16","text":" @notice Initiate conduit ownership transfer by assigning a new potential\n         owner for the given conduit. Once set, the new potential owner\n         may call `acceptOwnership` to claim ownership of the conduit.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to initiate ownership transfer.\n @param newPotentialOwner The new potential owner of the conduit."},"functionSelector":"6d435421","id":3213,"implemented":true,"kind":"function","modifiers":[],"name":"transferOwnership","nameLocation":"8646:17:16","nodeType":"FunctionDefinition","overrides":{"id":3170,"nodeType":"OverrideSpecifier","overrides":[],"src":"8733:8:16"},"parameters":{"id":3169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3166,"mutability":"mutable","name":"conduit","nameLocation":"8672:7:16","nodeType":"VariableDeclaration","scope":3213,"src":"8664:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3165,"name":"address","nodeType":"ElementaryTypeName","src":"8664:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3168,"mutability":"mutable","name":"newPotentialOwner","nameLocation":"8689:17:16","nodeType":"VariableDeclaration","scope":3213,"src":"8681:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3167,"name":"address","nodeType":"ElementaryTypeName","src":"8681:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8663:44:16"},"returnParameters":{"id":3171,"nodeType":"ParameterList","parameters":[],"src":"8746:0:16"},"scope":3611,"src":"8637:923:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3846],"body":{"id":3256,"nodeType":"Block","src":"9892:580:16","statements":[{"expression":{"arguments":[{"id":3221,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"10008:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3220,"name":"_assertCallerIsConduitOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"9980:27:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9980:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3223,"nodeType":"ExpressionStatement","src":"9980:36:16"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3224,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"10096:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3226,"indexExpression":{"id":3225,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"10106:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10096:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"potentialOwner","nodeType":"MemberAccess","referencedDeclaration":3737,"src":"10096:33:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10141:1:16","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":3229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10133:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3228,"name":"address","nodeType":"ElementaryTypeName","src":"10133:7:16","typeDescriptions":{}}},"id":3231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10133:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10096:47:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3238,"nodeType":"IfStatement","src":"10092:122:16","trueBody":{"id":3237,"nodeType":"Block","src":"10145:69:16","statements":[{"errorCall":{"arguments":[{"id":3234,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"10195:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3233,"name":"NoPotentialOwnerCurrentlySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3784,"src":"10166:28:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":3235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10166:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3236,"nodeType":"RevertStatement","src":"10159:44:16"}]}},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10338:1:16","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":3241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10330:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3240,"name":"address","nodeType":"ElementaryTypeName","src":"10330:7:16","typeDescriptions":{}}},"id":3243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10330:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3239,"name":"PotentialOwnerUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"10308:21:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10308:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3245,"nodeType":"EmitStatement","src":"10303:38:16"},{"expression":{"id":3254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3246,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"10419:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3248,"indexExpression":{"id":3247,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"10429:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10419:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"potentialOwner","nodeType":"MemberAccess","referencedDeclaration":3737,"src":"10419:33:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10463:1:16","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":3251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10455:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3250,"name":"address","nodeType":"ElementaryTypeName","src":"10455:7:16","typeDescriptions":{}}},"id":3253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10455:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10419:46:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3255,"nodeType":"ExpressionStatement","src":"10419:46:16"}]},"documentation":{"id":3214,"nodeType":"StructuredDocumentation","src":"9566:253:16","text":" @notice Clear the currently set potential owner, if any, from a conduit.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to cancel ownership transfer."},"functionSelector":"7b37e561","id":3257,"implemented":true,"kind":"function","modifiers":[],"name":"cancelOwnershipTransfer","nameLocation":"9833:23:16","nodeType":"FunctionDefinition","overrides":{"id":3218,"nodeType":"OverrideSpecifier","overrides":[],"src":"9883:8:16"},"parameters":{"id":3217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3216,"mutability":"mutable","name":"conduit","nameLocation":"9865:7:16","nodeType":"VariableDeclaration","scope":3257,"src":"9857:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3215,"name":"address","nodeType":"ElementaryTypeName","src":"9857:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9856:17:16"},"returnParameters":{"id":3219,"nodeType":"ParameterList","parameters":[],"src":"9892:0:16"},"scope":3611,"src":"9824:648:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3852],"body":{"id":3316,"nodeType":"Block","src":"10807:949:16","statements":[{"expression":{"arguments":[{"id":3265,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"10893:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3264,"name":"_assertConduitExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"10872:20:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10872:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3267,"nodeType":"ExpressionStatement","src":"10872:29:16"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3268,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10994:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10994:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"baseExpression":{"id":3270,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"11008:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3272,"indexExpression":{"id":3271,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"11018:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11008:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"potentialOwner","nodeType":"MemberAccess","referencedDeclaration":3737,"src":"11008:33:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10994:47:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3280,"nodeType":"IfStatement","src":"10990:200:16","trueBody":{"id":3279,"nodeType":"Block","src":"11043:147:16","statements":[{"errorCall":{"arguments":[{"id":3276,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"11171:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3275,"name":"CallerIsNotNewPotentialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"11142:28:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11142:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3278,"nodeType":"RevertStatement","src":"11135:44:16"}]}},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11314:1:16","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":3283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11306:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3282,"name":"address","nodeType":"ElementaryTypeName","src":"11306:7:16","typeDescriptions":{}}},"id":3285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11306:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3281,"name":"PotentialOwnerUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"11284:21:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11284:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3287,"nodeType":"EmitStatement","src":"11279:38:16"},{"expression":{"id":3296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3288,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"11395:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3290,"indexExpression":{"id":3289,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"11405:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11395:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"potentialOwner","nodeType":"MemberAccess","referencedDeclaration":3737,"src":"11395:33:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11439:1:16","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":3293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11431:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3292,"name":"address","nodeType":"ElementaryTypeName","src":"11431:7:16","typeDescriptions":{}}},"id":3295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11431:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11395:46:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3297,"nodeType":"ExpressionStatement","src":"11395:46:16"},{"eventCall":{"arguments":[{"id":3299,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"11567:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":3300,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"11588:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3302,"indexExpression":{"id":3301,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"11598:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11588:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":3735,"src":"11588:24:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3304,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11626:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11626:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3298,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"11533:20:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":3306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11533:113:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3307,"nodeType":"EmitStatement","src":"11528:118:16"},{"expression":{"id":3314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3308,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"11712:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3310,"indexExpression":{"id":3309,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"11722:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11712:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3311,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":3735,"src":"11712:24:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3312,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11739:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11739:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11712:37:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3315,"nodeType":"ExpressionStatement","src":"11712:37:16"}]},"documentation":{"id":3258,"nodeType":"StructuredDocumentation","src":"10478:264:16","text":" @notice Accept ownership of a supplied conduit. Only accounts that the\n         current owner has set as the new potential owner may call this\n         function.\n @param conduit The conduit for which to accept ownership."},"functionSelector":"51710e45","id":3317,"implemented":true,"kind":"function","modifiers":[],"name":"acceptOwnership","nameLocation":"10756:15:16","nodeType":"FunctionDefinition","overrides":{"id":3262,"nodeType":"OverrideSpecifier","overrides":[],"src":"10798:8:16"},"parameters":{"id":3261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3260,"mutability":"mutable","name":"conduit","nameLocation":"10780:7:16","nodeType":"VariableDeclaration","scope":3317,"src":"10772:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3259,"name":"address","nodeType":"ElementaryTypeName","src":"10772:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10771:17:16"},"returnParameters":{"id":3263,"nodeType":"ParameterList","parameters":[],"src":"10807:0:16"},"scope":3611,"src":"10747:1009:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3860],"body":{"id":3337,"nodeType":"Block","src":"12108:210:16","statements":[{"expression":{"arguments":[{"id":3327,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3320,"src":"12194:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3326,"name":"_assertConduitExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"12173:20:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12173:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3329,"nodeType":"ExpressionStatement","src":"12173:29:16"},{"expression":{"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3330,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3324,"src":"12279:5:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":3331,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"12287:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3333,"indexExpression":{"id":3332,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3320,"src":"12297:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12287:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":3735,"src":"12287:24:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12279:32:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3336,"nodeType":"ExpressionStatement","src":"12279:32:16"}]},"documentation":{"id":3318,"nodeType":"StructuredDocumentation","src":"11762:224:16","text":" @notice Retrieve the current owner of a deployed conduit.\n @param conduit The conduit for which to retrieve the associated owner.\n @return owner The owner of the supplied conduit."},"functionSelector":"14afd79e","id":3338,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"12000:7:16","nodeType":"FunctionDefinition","overrides":{"id":3322,"nodeType":"OverrideSpecifier","overrides":[],"src":"12063:8:16"},"parameters":{"id":3321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3320,"mutability":"mutable","name":"conduit","nameLocation":"12016:7:16","nodeType":"VariableDeclaration","scope":3338,"src":"12008:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3319,"name":"address","nodeType":"ElementaryTypeName","src":"12008:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12007:17:16"},"returnParameters":{"id":3325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3324,"mutability":"mutable","name":"owner","nameLocation":"12097:5:16","nodeType":"VariableDeclaration","scope":3338,"src":"12089:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3323,"name":"address","nodeType":"ElementaryTypeName","src":"12089:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12088:15:16"},"scope":3611,"src":"11991:327:16","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3868],"body":{"id":3365,"nodeType":"Block","src":"12758:258:16","statements":[{"expression":{"id":3352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3347,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3345,"src":"12842:10:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":3348,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"12855:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3350,"indexExpression":{"id":3349,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"12865:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12855:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":3733,"src":"12855:22:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12842:35:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3353,"nodeType":"ExpressionStatement","src":"12842:35:16"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3354,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3345,"src":"12941:10:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12963:1:16","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":3356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12955:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3355,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12955:7:16","typeDescriptions":{}}},"id":3358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12955:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12941:24:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3364,"nodeType":"IfStatement","src":"12937:73:16","trueBody":{"id":3363,"nodeType":"Block","src":"12967:43:16","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3360,"name":"NoConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3787,"src":"12988:9:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12988:11:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3362,"nodeType":"RevertStatement","src":"12981:18:16"}]}}]},"documentation":{"id":3339,"nodeType":"StructuredDocumentation","src":"12324:308:16","text":" @notice Retrieve the conduit key for a deployed conduit via reverse\n         lookup.\n @param conduit The conduit for which to retrieve the associated conduit\n                key.\n @return conduitKey The conduit key used to deploy the supplied conduit."},"functionSelector":"93790f44","id":3366,"implemented":true,"kind":"function","modifiers":[],"name":"getKey","nameLocation":"12646:6:16","nodeType":"FunctionDefinition","overrides":{"id":3343,"nodeType":"OverrideSpecifier","overrides":[],"src":"12708:8:16"},"parameters":{"id":3342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3341,"mutability":"mutable","name":"conduit","nameLocation":"12661:7:16","nodeType":"VariableDeclaration","scope":3366,"src":"12653:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3340,"name":"address","nodeType":"ElementaryTypeName","src":"12653:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12652:17:16"},"returnParameters":{"id":3346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3345,"mutability":"mutable","name":"conduitKey","nameLocation":"12742:10:16","nodeType":"VariableDeclaration","scope":3366,"src":"12734:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12734:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12733:20:16"},"scope":3611,"src":"12637:379:16","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3878],"body":{"id":3412,"nodeType":"Block","src":"13618:646:16","statements":[{"expression":{"id":3402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3377,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"13705:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30786666","id":3389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13878:4:16","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":3388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13871:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":3387,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13871:6:16","typeDescriptions":{}}},"id":3390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13871:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":3393,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13921:4:16","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitController_$3611","typeString":"contract ConduitController"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ConduitController_$3611","typeString":"contract ConduitController"}],"id":3392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13913:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3391,"name":"address","nodeType":"ElementaryTypeName","src":"13913:7:16","typeDescriptions":{}}},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13913:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3395,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"13956:10:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3396,"name":"_CONDUIT_CREATION_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"13996:27:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3385,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13825:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"13825:16:16","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13825:224:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3384,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13790:9:16","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13790:281:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13761:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3382,"name":"uint256","nodeType":"ElementaryTypeName","src":"13761:7:16","typeDescriptions":{}}},"id":3399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13761:328:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13736:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3380,"name":"uint160","nodeType":"ElementaryTypeName","src":"13736:7:16","typeDescriptions":{}}},"id":3400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13736:367:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13715:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3378,"name":"address","nodeType":"ElementaryTypeName","src":"13715:7:16","typeDescriptions":{}}},"id":3401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13715:398:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13705:408:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3403,"nodeType":"ExpressionStatement","src":"13705:408:16"},{"expression":{"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3404,"name":"exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"14200:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3405,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"14210:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"codehash","nodeType":"MemberAccess","src":"14210:16:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3407,"name":"_CONDUIT_RUNTIME_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2873,"src":"14230:26:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14210:46:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3409,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14209:48:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14200:57:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3411,"nodeType":"ExpressionStatement","src":"14200:57:16"}]},"documentation":{"id":3367,"nodeType":"StructuredDocumentation","src":"13022:453:16","text":" @notice Derive the conduit associated with a given conduit key and\n         determine whether that conduit exists (i.e. whether it has been\n         deployed).\n @param conduitKey The conduit key used to derive the conduit.\n @return conduit The derived address of the conduit.\n @return exists  A boolean indicating whether the derived conduit has been\n                 deployed or not."},"functionSelector":"6e9bfd9f","id":3413,"implemented":true,"kind":"function","modifiers":[],"name":"getConduit","nameLocation":"13489:10:16","nodeType":"FunctionDefinition","overrides":{"id":3371,"nodeType":"OverrideSpecifier","overrides":[],"src":"13558:8:16"},"parameters":{"id":3370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3369,"mutability":"mutable","name":"conduitKey","nameLocation":"13508:10:16","nodeType":"VariableDeclaration","scope":3413,"src":"13500:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3368,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13500:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13499:20:16"},"returnParameters":{"id":3376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3373,"mutability":"mutable","name":"conduit","nameLocation":"13592:7:16","nodeType":"VariableDeclaration","scope":3413,"src":"13584:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3372,"name":"address","nodeType":"ElementaryTypeName","src":"13584:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3375,"mutability":"mutable","name":"exists","nameLocation":"13606:6:16","nodeType":"VariableDeclaration","scope":3413,"src":"13601:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3374,"name":"bool","nodeType":"ElementaryTypeName","src":"13601:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13583:30:16"},"scope":3611,"src":"13480:784:16","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3886],"body":{"id":3433,"nodeType":"Block","src":"14871:238:16","statements":[{"expression":{"arguments":[{"id":3423,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"14957:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3422,"name":"_assertConduitExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"14936:20:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14936:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3425,"nodeType":"ExpressionStatement","src":"14936:29:16"},{"expression":{"id":3431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3426,"name":"potentialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3420,"src":"15052:14:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":3427,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"15069:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3429,"indexExpression":{"id":3428,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"15079:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15069:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"potentialOwner","nodeType":"MemberAccess","referencedDeclaration":3737,"src":"15069:33:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15052:50:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3432,"nodeType":"ExpressionStatement","src":"15052:50:16"}]},"documentation":{"id":3414,"nodeType":"StructuredDocumentation","src":"14270:460:16","text":" @notice Retrieve the potential owner, if any, for a given conduit. The\n         current owner may set a new potential owner via\n         `transferOwnership` and that owner may then accept ownership of\n         the conduit in question via `acceptOwnership`.\n @param conduit The conduit for which to retrieve the potential owner.\n @return potentialOwner The potential owner, if any, for the conduit."},"functionSelector":"906c87cc","id":3434,"implemented":true,"kind":"function","modifiers":[],"name":"getPotentialOwner","nameLocation":"14744:17:16","nodeType":"FunctionDefinition","overrides":{"id":3418,"nodeType":"OverrideSpecifier","overrides":[],"src":"14817:8:16"},"parameters":{"id":3417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3416,"mutability":"mutable","name":"conduit","nameLocation":"14770:7:16","nodeType":"VariableDeclaration","scope":3434,"src":"14762:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3415,"name":"address","nodeType":"ElementaryTypeName","src":"14762:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14761:17:16"},"returnParameters":{"id":3421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3420,"mutability":"mutable","name":"potentialOwner","nameLocation":"14851:14:16","nodeType":"VariableDeclaration","scope":3434,"src":"14843:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3419,"name":"address","nodeType":"ElementaryTypeName","src":"14843:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14842:24:16"},"scope":3611,"src":"14735:374:16","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3896],"body":{"id":3460,"nodeType":"Block","src":"15607:251:16","statements":[{"expression":{"arguments":[{"id":3446,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"15693:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3445,"name":"_assertConduitExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"15672:20:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15672:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3448,"nodeType":"ExpressionStatement","src":"15672:29:16"},{"expression":{"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3449,"name":"isOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3443,"src":"15788:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"baseExpression":{"id":3450,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"15797:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3452,"indexExpression":{"id":3451,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"15807:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15797:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channelIndexesPlusOne","nodeType":"MemberAccess","referencedDeclaration":3744,"src":"15797:40:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3455,"indexExpression":{"id":3454,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3439,"src":"15838:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15797:49:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15850:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15797:54:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15788:63:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3459,"nodeType":"ExpressionStatement","src":"15788:63:16"}]},"documentation":{"id":3435,"nodeType":"StructuredDocumentation","src":"15115:346:16","text":" @notice Retrieve the status (either open or closed) of a given channel on\n         a conduit.\n @param conduit The conduit for which to retrieve the channel status.\n @param channel The channel for which to retrieve the status.\n @return isOpen The status of the channel on the given conduit."},"functionSelector":"33bc8572","id":3461,"implemented":true,"kind":"function","modifiers":[],"name":"getChannelStatus","nameLocation":"15475:16:16","nodeType":"FunctionDefinition","overrides":{"id":3441,"nodeType":"OverrideSpecifier","overrides":[],"src":"15564:8:16"},"parameters":{"id":3440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3437,"mutability":"mutable","name":"conduit","nameLocation":"15500:7:16","nodeType":"VariableDeclaration","scope":3461,"src":"15492:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3436,"name":"address","nodeType":"ElementaryTypeName","src":"15492:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3439,"mutability":"mutable","name":"channel","nameLocation":"15517:7:16","nodeType":"VariableDeclaration","scope":3461,"src":"15509:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3438,"name":"address","nodeType":"ElementaryTypeName","src":"15509:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15491:34:16"},"returnParameters":{"id":3444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3443,"mutability":"mutable","name":"isOpen","nameLocation":"15595:6:16","nodeType":"VariableDeclaration","scope":3461,"src":"15590:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3442,"name":"bool","nodeType":"ElementaryTypeName","src":"15590:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15589:13:16"},"scope":3611,"src":"15466:392:16","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3904],"body":{"id":3482,"nodeType":"Block","src":"16268:240:16","statements":[{"expression":{"arguments":[{"id":3471,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"16354:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3470,"name":"_assertConduitExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"16333:20:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16333:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3473,"nodeType":"ExpressionStatement","src":"16333:29:16"},{"expression":{"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3474,"name":"totalChannels","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3468,"src":"16451:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"baseExpression":{"id":3475,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"16467:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3477,"indexExpression":{"id":3476,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"16477:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16467:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"16467:27:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"16467:34:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16451:50:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3481,"nodeType":"ExpressionStatement","src":"16451:50:16"}]},"documentation":{"id":3462,"nodeType":"StructuredDocumentation","src":"15864:265:16","text":" @notice Retrieve the total number of open channels for a given conduit.\n @param conduit The conduit for which to retrieve the total channel count.\n @return totalChannels The total number of open channels for the conduit."},"functionSelector":"4e3f9580","id":3483,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalChannels","nameLocation":"16143:16:16","nodeType":"FunctionDefinition","overrides":{"id":3466,"nodeType":"OverrideSpecifier","overrides":[],"src":"16215:8:16"},"parameters":{"id":3465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3464,"mutability":"mutable","name":"conduit","nameLocation":"16168:7:16","nodeType":"VariableDeclaration","scope":3483,"src":"16160:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3463,"name":"address","nodeType":"ElementaryTypeName","src":"16160:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16159:17:16"},"returnParameters":{"id":3469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3468,"mutability":"mutable","name":"totalChannels","nameLocation":"16249:13:16","nodeType":"VariableDeclaration","scope":3483,"src":"16241:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3467,"name":"uint256","nodeType":"ElementaryTypeName","src":"16241:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16240:23:16"},"scope":3611,"src":"16134:374:16","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3914],"body":{"id":3524,"nodeType":"Block","src":"17127:524:16","statements":[{"expression":{"arguments":[{"id":3495,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"17213:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3494,"name":"_assertConduitExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"17192:20:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17192:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3497,"nodeType":"ExpressionStatement","src":"17192:29:16"},{"assignments":[3499],"declarations":[{"constant":false,"id":3499,"mutability":"mutable","name":"totalChannels","nameLocation":"17318:13:16","nodeType":"VariableDeclaration","scope":3524,"src":"17310:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3498,"name":"uint256","nodeType":"ElementaryTypeName","src":"17310:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3505,"initialValue":{"expression":{"expression":{"baseExpression":{"id":3500,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"17334:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3502,"indexExpression":{"id":3501,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"17344:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17334:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"17334:27:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"17334:34:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17310:58:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3506,"name":"channelIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"17442:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3507,"name":"totalChannels","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3499,"src":"17458:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17442:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3514,"nodeType":"IfStatement","src":"17438:93:16","trueBody":{"id":3513,"nodeType":"Block","src":"17473:58:16","statements":[{"errorCall":{"arguments":[{"id":3510,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"17512:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3509,"name":"ChannelOutOfRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3812,"src":"17494:17:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":3511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17494:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3512,"nodeType":"RevertStatement","src":"17487:33:16"}]}},{"expression":{"id":3522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3515,"name":"channel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3492,"src":"17593:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":3516,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"17603:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3518,"indexExpression":{"id":3517,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"17613:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17603:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"17603:27:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3521,"indexExpression":{"id":3520,"name":"channelIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"17631:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17603:41:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17593:51:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3523,"nodeType":"ExpressionStatement","src":"17593:51:16"}]},"documentation":{"id":3484,"nodeType":"StructuredDocumentation","src":"16514:464:16","text":" @notice Retrieve an open channel at a specific index for a given conduit.\n         Note that the index of a channel can change as a result of other\n         channels being closed on the conduit.\n @param conduit      The conduit for which to retrieve the open channel.\n @param channelIndex The index of the channel in question.\n @return channel The open channel, if any, at the specified channel index."},"functionSelector":"027cc764","id":3525,"implemented":true,"kind":"function","modifiers":[],"name":"getChannel","nameLocation":"16992:10:16","nodeType":"FunctionDefinition","overrides":{"id":3490,"nodeType":"OverrideSpecifier","overrides":[],"src":"17080:8:16"},"parameters":{"id":3489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3486,"mutability":"mutable","name":"conduit","nameLocation":"17011:7:16","nodeType":"VariableDeclaration","scope":3525,"src":"17003:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3485,"name":"address","nodeType":"ElementaryTypeName","src":"17003:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3488,"mutability":"mutable","name":"channelIndex","nameLocation":"17028:12:16","nodeType":"VariableDeclaration","scope":3525,"src":"17020:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3487,"name":"uint256","nodeType":"ElementaryTypeName","src":"17020:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17002:39:16"},"returnParameters":{"id":3493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3492,"mutability":"mutable","name":"channel","nameLocation":"17114:7:16","nodeType":"VariableDeclaration","scope":3525,"src":"17106:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3491,"name":"address","nodeType":"ElementaryTypeName","src":"17106:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17105:17:16"},"scope":3611,"src":"16983:668:16","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3923],"body":{"id":3546,"nodeType":"Block","src":"18159:223:16","statements":[{"expression":{"arguments":[{"id":3536,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"18245:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3535,"name":"_assertConduitExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"18224:20:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18224:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3538,"nodeType":"ExpressionStatement","src":"18224:29:16"},{"expression":{"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3539,"name":"channels","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"18337:8:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":3540,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"18348:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3542,"indexExpression":{"id":3541,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"18358:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18348:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3543,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"channels","nodeType":"MemberAccess","referencedDeclaration":3740,"src":"18348:27:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"src":"18337:38:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3545,"nodeType":"ExpressionStatement","src":"18337:38:16"}]},"documentation":{"id":3526,"nodeType":"StructuredDocumentation","src":"17657:364:16","text":" @notice Retrieve all open channels for a given conduit. Note that calling\n         this function for a conduit with many channels will revert with\n         an out-of-gas error.\n @param conduit The conduit for which to retrieve open channels.\n @return channels An array of open channels on the given conduit."},"functionSelector":"8b9e028b","id":3547,"implemented":true,"kind":"function","modifiers":[],"name":"getChannels","nameLocation":"18035:11:16","nodeType":"FunctionDefinition","overrides":{"id":3530,"nodeType":"OverrideSpecifier","overrides":[],"src":"18102:8:16"},"parameters":{"id":3529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3528,"mutability":"mutable","name":"conduit","nameLocation":"18055:7:16","nodeType":"VariableDeclaration","scope":3547,"src":"18047:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3527,"name":"address","nodeType":"ElementaryTypeName","src":"18047:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18046:17:16"},"returnParameters":{"id":3534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3533,"mutability":"mutable","name":"channels","nameLocation":"18145:8:16","nodeType":"VariableDeclaration","scope":3547,"src":"18128:25:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3531,"name":"address","nodeType":"ElementaryTypeName","src":"18128:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3532,"nodeType":"ArrayTypeName","src":"18128:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"18127:27:16"},"scope":3611,"src":"18026:356:16","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3931],"body":{"id":3564,"nodeType":"Block","src":"18627:247:16","statements":[{"expression":{"id":3558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3556,"name":"creationCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"18702:16:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3557,"name":"_CONDUIT_CREATION_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"18721:27:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"18702:46:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3559,"nodeType":"ExpressionStatement","src":"18702:46:16"},{"expression":{"id":3562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3560,"name":"runtimeCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"18823:15:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3561,"name":"_CONDUIT_RUNTIME_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2873,"src":"18841:26:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"18823:44:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3563,"nodeType":"ExpressionStatement","src":"18823:44:16"}]},"documentation":{"id":3548,"nodeType":"StructuredDocumentation","src":"18388:83:16","text":" @dev Retrieve the conduit creation code and runtime code hashes."},"functionSelector":"0a96ad39","id":3565,"implemented":true,"kind":"function","modifiers":[],"name":"getConduitCodeHashes","nameLocation":"18485:20:16","nodeType":"FunctionDefinition","overrides":{"id":3550,"nodeType":"OverrideSpecifier","overrides":[],"src":"18546:8:16"},"parameters":{"id":3549,"nodeType":"ParameterList","parameters":[],"src":"18505:2:16"},"returnParameters":{"id":3555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3552,"mutability":"mutable","name":"creationCodeHash","nameLocation":"18580:16:16","nodeType":"VariableDeclaration","scope":3565,"src":"18572:24:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3551,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18572:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3554,"mutability":"mutable","name":"runtimeCodeHash","nameLocation":"18606:15:16","nodeType":"VariableDeclaration","scope":3565,"src":"18598:23:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18598:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18571:51:16"},"scope":3611,"src":"18476:398:16","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3588,"nodeType":"Block","src":"19142:356:16","statements":[{"expression":{"arguments":[{"id":3572,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"19228:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3571,"name":"_assertConduitExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"19207:20:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":3573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19207:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3574,"nodeType":"ExpressionStatement","src":"19207:29:16"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3575,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"19327:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"19327:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"baseExpression":{"id":3577,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"19341:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3579,"indexExpression":{"id":3578,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"19351:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19341:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":3735,"src":"19341:24:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19327:38:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3587,"nodeType":"IfStatement","src":"19323:169:16","trueBody":{"id":3586,"nodeType":"Block","src":"19367:125:16","statements":[{"errorCall":{"arguments":[{"id":3583,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"19473:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3582,"name":"CallerIsNotOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"19456:16:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19456:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3585,"nodeType":"RevertStatement","src":"19449:32:16"}]}}]},"documentation":{"id":3566,"nodeType":"StructuredDocumentation","src":"18880:190:16","text":" @dev Private view function to revert if the caller is not the owner of a\n      given conduit.\n @param conduit The conduit for which to assert ownership."},"id":3589,"implemented":true,"kind":"function","modifiers":[],"name":"_assertCallerIsConduitOwner","nameLocation":"19084:27:16","nodeType":"FunctionDefinition","parameters":{"id":3569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3568,"mutability":"mutable","name":"conduit","nameLocation":"19120:7:16","nodeType":"VariableDeclaration","scope":3589,"src":"19112:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3567,"name":"address","nodeType":"ElementaryTypeName","src":"19112:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19111:17:16"},"returnParameters":{"id":3570,"nodeType":"ParameterList","parameters":[],"src":"19142:0:16"},"scope":3611,"src":"19075:423:16","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":3609,"nodeType":"Block","src":"19731:228:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3595,"name":"_conduits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"19819:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_ConduitProperties_$3745_storage_$","typeString":"mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"}},"id":3597,"indexExpression":{"id":3596,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3592,"src":"19829:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19819:18:16","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitProperties_$3745_storage","typeString":"struct ConduitControllerInterface.ConduitProperties storage ref"}},"id":3598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":3733,"src":"19819:22:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19853:1:16","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":3600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19845:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3599,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19845:7:16","typeDescriptions":{}}},"id":3602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19845:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"19819:36:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3608,"nodeType":"IfStatement","src":"19815:138:16","trueBody":{"id":3607,"nodeType":"Block","src":"19857:96:16","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3604,"name":"NoConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3787,"src":"19931:9:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19931:11:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3606,"nodeType":"RevertStatement","src":"19924:18:16"}]}}]},"documentation":{"id":3590,"nodeType":"StructuredDocumentation","src":"19504:162:16","text":" @dev Private view function to revert if a given conduit does not exist.\n @param conduit The conduit for which to assert existence."},"id":3610,"implemented":true,"kind":"function","modifiers":[],"name":"_assertConduitExists","nameLocation":"19680:20:16","nodeType":"FunctionDefinition","parameters":{"id":3593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3592,"mutability":"mutable","name":"conduit","nameLocation":"19709:7:16","nodeType":"VariableDeclaration","scope":3610,"src":"19701:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3591,"name":"address","nodeType":"ElementaryTypeName","src":"19701:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19700:17:16"},"returnParameters":{"id":3594,"nodeType":"ParameterList","parameters":[],"src":"19731:0:16"},"scope":3611,"src":"19671:288:16","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":3612,"src":"539:19422:16","usedErrors":[3769,3772,3779,3784,3787,3792,3797,3802,3807,3812]}],"src":"32:19930:16"},"id":16},"contracts/conduit/lib/ConduitConstants.sol":{"ast":{"absolutePath":"contracts/conduit/lib/ConduitConstants.sol","exportedSymbols":{"ChannelClosed_channel_ptr":[3623],"ChannelClosed_error_length":[3626],"ChannelClosed_error_ptr":[3620],"ChannelClosed_error_signature":[3617],"ChannelKey_channel_ptr":[3629],"ChannelKey_length":[3635],"ChannelKey_slot_ptr":[3632]},"id":3636,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3613,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:17"},{"constant":true,"id":3617,"mutability":"constant","name":"ChannelClosed_error_signature","nameLocation":"114:29:17","nodeType":"VariableDeclaration","scope":3636,"src":"97:123:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3614,"name":"uint256","nodeType":"ElementaryTypeName","src":"97:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307839336461616466323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":3615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"152:66:17","typeDescriptions":{"typeIdentifier":"t_rational_66876361928286935092717866925301290808224162558783313296595378262690056110080_by_1","typeString":"int_const 6687...(69 digits omitted)...0080"},"value":"0x93daadf200000000000000000000000000000000000000000000000000000000"}],"id":3616,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"146:74:17","typeDescriptions":{"typeIdentifier":"t_rational_66876361928286935092717866925301290808224162558783313296595378262690056110080_by_1","typeString":"int_const 6687...(69 digits omitted)...0080"}},"visibility":"internal"},{"constant":true,"id":3620,"mutability":"constant","name":"ChannelClosed_error_ptr","nameLocation":"239:23:17","nodeType":"VariableDeclaration","scope":3636,"src":"222:47:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3618,"name":"uint256","nodeType":"ElementaryTypeName","src":"222:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":3619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"265:4:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"id":3623,"mutability":"constant","name":"ChannelClosed_channel_ptr","nameLocation":"288:25:17","nodeType":"VariableDeclaration","scope":3636,"src":"271:48:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3621,"name":"uint256","nodeType":"ElementaryTypeName","src":"271:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307834","id":3622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"316:3:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"visibility":"internal"},{"constant":true,"id":3626,"mutability":"constant","name":"ChannelClosed_error_length","nameLocation":"338:26:17","nodeType":"VariableDeclaration","scope":3636,"src":"321:50:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3624,"name":"uint256","nodeType":"ElementaryTypeName","src":"321:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":3625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"367:4:17","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":3629,"mutability":"constant","name":"ChannelKey_channel_ptr","nameLocation":"553:22:17","nodeType":"VariableDeclaration","scope":3636,"src":"536:46:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3627,"name":"uint256","nodeType":"ElementaryTypeName","src":"536:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":3628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"578:4:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"id":3632,"mutability":"constant","name":"ChannelKey_slot_ptr","nameLocation":"601:19:17","nodeType":"VariableDeclaration","scope":3636,"src":"584:43:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3630,"name":"uint256","nodeType":"ElementaryTypeName","src":"584:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":3631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"623:4:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":3635,"mutability":"constant","name":"ChannelKey_length","nameLocation":"646:17:17","nodeType":"VariableDeclaration","scope":3636,"src":"629:41:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3633,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":3634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"666:4:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"}],"src":"32:640:17"},"id":17},"contracts/conduit/lib/ConduitEnums.sol":{"ast":{"absolutePath":"contracts/conduit/lib/ConduitEnums.sol","exportedSymbols":{"ConduitItemType":[3642]},"id":3643,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3637,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:18"},{"canonicalName":"ConduitItemType","id":3642,"members":[{"id":3638,"name":"NATIVE","nameLocation":"84:6:18","nodeType":"EnumValue","src":"84:6:18"},{"id":3639,"name":"ERC20","nameLocation":"106:5:18","nodeType":"EnumValue","src":"106:5:18"},{"id":3640,"name":"ERC721","nameLocation":"117:6:18","nodeType":"EnumValue","src":"117:6:18"},{"id":3641,"name":"ERC1155","nameLocation":"129:7:18","nodeType":"EnumValue","src":"129:7:18"}],"name":"ConduitItemType","nameLocation":"62:15:18","nodeType":"EnumDefinition","src":"57:81:18"}],"src":"32:107:18"},"id":18},"contracts/conduit/lib/ConduitStructs.sol":{"ast":{"absolutePath":"contracts/conduit/lib/ConduitStructs.sol","exportedSymbols":{"ConduitBatch1155Transfer":[3673],"ConduitItemType":[3642],"ConduitTransfer":[3660]},"id":3674,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3644,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:19"},{"absolutePath":"contracts/conduit/lib/ConduitEnums.sol","file":"./ConduitEnums.sol","id":3646,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3674,"sourceUnit":3643,"src":"57:53:19","symbolAliases":[{"foreign":{"id":3645,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"66:15:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"ConduitTransfer","id":3660,"members":[{"constant":false,"id":3649,"mutability":"mutable","name":"itemType","nameLocation":"157:8:19","nodeType":"VariableDeclaration","scope":3660,"src":"141:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"},"typeName":{"id":3648,"nodeType":"UserDefinedTypeName","pathNode":{"id":3647,"name":"ConduitItemType","nodeType":"IdentifierPath","referencedDeclaration":3642,"src":"141:15:19"},"referencedDeclaration":3642,"src":"141:15:19","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},"visibility":"internal"},{"constant":false,"id":3651,"mutability":"mutable","name":"token","nameLocation":"179:5:19","nodeType":"VariableDeclaration","scope":3660,"src":"171:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3650,"name":"address","nodeType":"ElementaryTypeName","src":"171:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3653,"mutability":"mutable","name":"from","nameLocation":"198:4:19","nodeType":"VariableDeclaration","scope":3660,"src":"190:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3652,"name":"address","nodeType":"ElementaryTypeName","src":"190:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3655,"mutability":"mutable","name":"to","nameLocation":"216:2:19","nodeType":"VariableDeclaration","scope":3660,"src":"208:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3654,"name":"address","nodeType":"ElementaryTypeName","src":"208:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3657,"mutability":"mutable","name":"identifier","nameLocation":"232:10:19","nodeType":"VariableDeclaration","scope":3660,"src":"224:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3656,"name":"uint256","nodeType":"ElementaryTypeName","src":"224:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3659,"mutability":"mutable","name":"amount","nameLocation":"256:6:19","nodeType":"VariableDeclaration","scope":3660,"src":"248:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3658,"name":"uint256","nodeType":"ElementaryTypeName","src":"248:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ConduitTransfer","nameLocation":"119:15:19","nodeType":"StructDefinition","scope":3674,"src":"112:153:19","visibility":"public"},{"canonicalName":"ConduitBatch1155Transfer","id":3673,"members":[{"constant":false,"id":3662,"mutability":"mutable","name":"token","nameLocation":"313:5:19","nodeType":"VariableDeclaration","scope":3673,"src":"305:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3661,"name":"address","nodeType":"ElementaryTypeName","src":"305:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3664,"mutability":"mutable","name":"from","nameLocation":"332:4:19","nodeType":"VariableDeclaration","scope":3673,"src":"324:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3663,"name":"address","nodeType":"ElementaryTypeName","src":"324:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3666,"mutability":"mutable","name":"to","nameLocation":"350:2:19","nodeType":"VariableDeclaration","scope":3673,"src":"342:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3665,"name":"address","nodeType":"ElementaryTypeName","src":"342:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3669,"mutability":"mutable","name":"ids","nameLocation":"368:3:19","nodeType":"VariableDeclaration","scope":3673,"src":"358:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3667,"name":"uint256","nodeType":"ElementaryTypeName","src":"358:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3668,"nodeType":"ArrayTypeName","src":"358:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3672,"mutability":"mutable","name":"amounts","nameLocation":"387:7:19","nodeType":"VariableDeclaration","scope":3673,"src":"377:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3670,"name":"uint256","nodeType":"ElementaryTypeName","src":"377:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3671,"nodeType":"ArrayTypeName","src":"377:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"name":"ConduitBatch1155Transfer","nameLocation":"274:24:19","nodeType":"StructDefinition","scope":3674,"src":"267:130:19","visibility":"public"}],"src":"32:366:19"},"id":19},"contracts/helper/GenericERC20.sol":{"ast":{"absolutePath":"contracts/helper/GenericERC20.sol","exportedSymbols":{"Context":[2146],"ERC20":[698],"GenericERC20":[3728],"IERC20":[776],"IERC20Metadata":[801],"Ownable":[112]},"id":3729,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3675,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"33:23:20"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":3676,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3729,"sourceUnit":699,"src":"58:55:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":3677,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3729,"sourceUnit":113,"src":"114:52:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3678,"name":"ERC20","nodeType":"IdentifierPath","referencedDeclaration":698,"src":"193:5:20"},"id":3679,"nodeType":"InheritanceSpecifier","src":"193:5:20"},{"baseName":{"id":3680,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"200:7:20"},"id":3681,"nodeType":"InheritanceSpecifier","src":"200:7:20"}],"canonicalName":"GenericERC20","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3728,"linearizedBaseContracts":[3728,112,698,801,776,2146],"name":"GenericERC20","nameLocation":"177:12:20","nodeType":"ContractDefinition","nodes":[{"body":{"id":3692,"nodeType":"Block","src":"315:2:20","statements":[]},"id":3693,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":3688,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3683,"src":"299:5:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":3689,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3685,"src":"306:7:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":3690,"kind":"baseConstructorSpecifier","modifierName":{"id":3687,"name":"ERC20","nodeType":"IdentifierPath","referencedDeclaration":698,"src":"293:5:20"},"nodeType":"ModifierInvocation","src":"293:21:20"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3683,"mutability":"mutable","name":"name_","nameLocation":"250:5:20","nodeType":"VariableDeclaration","scope":3693,"src":"236:19:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3682,"name":"string","nodeType":"ElementaryTypeName","src":"236:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3685,"mutability":"mutable","name":"symbol_","nameLocation":"279:7:20","nodeType":"VariableDeclaration","scope":3693,"src":"265:21:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3684,"name":"string","nodeType":"ElementaryTypeName","src":"265:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"226:66:20"},"returnParameters":{"id":3691,"nodeType":"ParameterList","parameters":[],"src":"315:0:20"},"scope":3728,"src":"215:102:20","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":3714,"nodeType":"Block","src":"391:86:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"409:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"419:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"409:11:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616d6f756e74203d3d2030","id":3706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"422:13:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c","typeString":"literal_string \"amount == 0\""},"value":"amount == 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c","typeString":"literal_string \"amount == 0\""}],"id":3702,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"401:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"401:35:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3708,"nodeType":"ExpressionStatement","src":"401:35:20"},{"expression":{"arguments":[{"id":3710,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3695,"src":"452:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3711,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"463:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3709,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"446:5:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"446:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3713,"nodeType":"ExpressionStatement","src":"446:24:20"}]},"functionSelector":"40c10f19","id":3715,"implemented":true,"kind":"function","modifiers":[{"id":3700,"kind":"modifierInvocation","modifierName":{"id":3699,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"381:9:20"},"nodeType":"ModifierInvocation","src":"381:9:20"}],"name":"mint","nameLocation":"332:4:20","nodeType":"FunctionDefinition","parameters":{"id":3698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3695,"mutability":"mutable","name":"recipient","nameLocation":"345:9:20","nodeType":"VariableDeclaration","scope":3715,"src":"337:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3694,"name":"address","nodeType":"ElementaryTypeName","src":"337:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3697,"mutability":"mutable","name":"amount","nameLocation":"364:6:20","nodeType":"VariableDeclaration","scope":3715,"src":"356:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3696,"name":"uint256","nodeType":"ElementaryTypeName","src":"356:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"336:35:20"},"returnParameters":{"id":3701,"nodeType":"ParameterList","parameters":[],"src":"391:0:20"},"scope":3728,"src":"323:154:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3726,"nodeType":"Block","src":"522:44:20","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3721,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"538:10:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"538:12:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3723,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3717,"src":"552:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3720,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"532:5:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"532:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3725,"nodeType":"ExpressionStatement","src":"532:27:20"}]},"functionSelector":"42966c68","id":3727,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"492:4:20","nodeType":"FunctionDefinition","parameters":{"id":3718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3717,"mutability":"mutable","name":"amount","nameLocation":"505:6:20","nodeType":"VariableDeclaration","scope":3727,"src":"497:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3716,"name":"uint256","nodeType":"ElementaryTypeName","src":"497:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"496:16:20"},"returnParameters":{"id":3719,"nodeType":"ParameterList","parameters":[],"src":"522:0:20"},"scope":3728,"src":"483:83:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3729,"src":"168:400:20","usedErrors":[]}],"src":"33:535:20"},"id":20},"contracts/interfaces/ConduitControllerInterface.sol":{"ast":{"absolutePath":"contracts/interfaces/ConduitControllerInterface.sol","exportedSymbols":{"ConduitControllerInterface":[3932]},"id":3933,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3730,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:21"},{"abstract":false,"baseContracts":[],"canonicalName":"ConduitControllerInterface","contractDependencies":[],"contractKind":"interface","documentation":{"id":3731,"nodeType":"StructuredDocumentation","src":"57:208:21","text":" @title ConduitControllerInterface\n @author 0age\n @notice ConduitControllerInterface contains all external function interfaces,\n         structs, events, and errors for the conduit controller."},"fullyImplemented":false,"id":3932,"linearizedBaseContracts":[3932],"name":"ConduitControllerInterface","nameLocation":"276:26:21","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ConduitControllerInterface.ConduitProperties","id":3745,"members":[{"constant":false,"id":3733,"mutability":"mutable","name":"key","nameLocation":"496:3:21","nodeType":"VariableDeclaration","scope":3745,"src":"488:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"488:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3735,"mutability":"mutable","name":"owner","nameLocation":"517:5:21","nodeType":"VariableDeclaration","scope":3745,"src":"509:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3734,"name":"address","nodeType":"ElementaryTypeName","src":"509:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3737,"mutability":"mutable","name":"potentialOwner","nameLocation":"540:14:21","nodeType":"VariableDeclaration","scope":3745,"src":"532:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3736,"name":"address","nodeType":"ElementaryTypeName","src":"532:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3740,"mutability":"mutable","name":"channels","nameLocation":"574:8:21","nodeType":"VariableDeclaration","scope":3745,"src":"564:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3738,"name":"address","nodeType":"ElementaryTypeName","src":"564:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3739,"nodeType":"ArrayTypeName","src":"564:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3744,"mutability":"mutable","name":"channelIndexesPlusOne","nameLocation":"620:21:21","nodeType":"VariableDeclaration","scope":3745,"src":"592:49:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3743,"keyType":{"id":3741,"name":"address","nodeType":"ElementaryTypeName","src":"600:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"592:27:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":3742,"name":"uint256","nodeType":"ElementaryTypeName","src":"611:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"ConduitProperties","nameLocation":"460:17:21","nodeType":"StructDefinition","scope":3932,"src":"453:195:21","visibility":"public"},{"anonymous":false,"documentation":{"id":3746,"nodeType":"StructuredDocumentation","src":"654:204:21","text":" @dev Emit an event whenever a new conduit is created.\n @param conduit    The newly created conduit.\n @param conduitKey The conduit key used to create the new conduit."},"eventSelector":"4397af6128d529b8ae0442f99db1296d5136062597a15bbc61c1b2a6431a7d15","id":3752,"name":"NewConduit","nameLocation":"869:10:21","nodeType":"EventDefinition","parameters":{"id":3751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3748,"indexed":false,"mutability":"mutable","name":"conduit","nameLocation":"888:7:21","nodeType":"VariableDeclaration","scope":3752,"src":"880:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3747,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3750,"indexed":false,"mutability":"mutable","name":"conduitKey","nameLocation":"905:10:21","nodeType":"VariableDeclaration","scope":3752,"src":"897:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"897:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"879:37:21"},"src":"863:54:21"},{"anonymous":false,"documentation":{"id":3753,"nodeType":"StructuredDocumentation","src":"923:318:21","text":" @dev Emit an event whenever conduit ownership is transferred.\n @param conduit       The conduit for which ownership has been\n                      transferred.\n @param previousOwner The previous owner of the conduit.\n @param newOwner      The new owner of the conduit."},"eventSelector":"c8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec","id":3761,"name":"OwnershipTransferred","nameLocation":"1252:20:21","nodeType":"EventDefinition","parameters":{"id":3760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3755,"indexed":true,"mutability":"mutable","name":"conduit","nameLocation":"1298:7:21","nodeType":"VariableDeclaration","scope":3761,"src":"1282:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3754,"name":"address","nodeType":"ElementaryTypeName","src":"1282:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3757,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1331:13:21","nodeType":"VariableDeclaration","scope":3761,"src":"1315:29:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3756,"name":"address","nodeType":"ElementaryTypeName","src":"1315:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3759,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1370:8:21","nodeType":"VariableDeclaration","scope":3761,"src":"1354:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3758,"name":"address","nodeType":"ElementaryTypeName","src":"1354:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1272:112:21"},"src":"1246:139:21"},{"anonymous":false,"documentation":{"id":3762,"nodeType":"StructuredDocumentation","src":"1391:203:21","text":" @dev Emit an event whenever a conduit owner registers a new potential\n      owner for that conduit.\n @param newPotentialOwner The new potential owner of the conduit."},"eventSelector":"11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da","id":3766,"name":"PotentialOwnerUpdated","nameLocation":"1605:21:21","nodeType":"EventDefinition","parameters":{"id":3765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3764,"indexed":true,"mutability":"mutable","name":"newPotentialOwner","nameLocation":"1643:17:21","nodeType":"VariableDeclaration","scope":3766,"src":"1627:33:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3763,"name":"address","nodeType":"ElementaryTypeName","src":"1627:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1626:35:21"},"src":"1599:63:21"},{"documentation":{"id":3767,"nodeType":"StructuredDocumentation","src":"1668:208:21","text":" @dev Revert with an error when attempting to create a new conduit using a\n      conduit key where the first twenty bytes of the key do not match the\n      address of the caller."},"errorSelector":"cb6e5344","id":3769,"name":"InvalidCreator","nameLocation":"1887:14:21","nodeType":"ErrorDefinition","parameters":{"id":3768,"nodeType":"ParameterList","parameters":[],"src":"1901:2:21"},"src":"1881:23:21"},{"documentation":{"id":3770,"nodeType":"StructuredDocumentation","src":"1910:139:21","text":" @dev Revert with an error when attempting to create a new conduit when no\n      initial owner address is supplied."},"errorSelector":"99faaa04","id":3772,"name":"InvalidInitialOwner","nameLocation":"2060:19:21","nodeType":"ErrorDefinition","parameters":{"id":3771,"nodeType":"ParameterList","parameters":[],"src":"2079:2:21"},"src":"2054:28:21"},{"documentation":{"id":3773,"nodeType":"StructuredDocumentation","src":"2088:122:21","text":" @dev Revert with an error when attempting to set a new potential owner\n      that is already set."},"errorSelector":"cbc080ca","id":3779,"name":"NewPotentialOwnerAlreadySet","nameLocation":"2221:27:21","nodeType":"ErrorDefinition","parameters":{"id":3778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3775,"mutability":"mutable","name":"conduit","nameLocation":"2266:7:21","nodeType":"VariableDeclaration","scope":3779,"src":"2258:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3774,"name":"address","nodeType":"ElementaryTypeName","src":"2258:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3777,"mutability":"mutable","name":"newPotentialOwner","nameLocation":"2291:17:21","nodeType":"VariableDeclaration","scope":3779,"src":"2283:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3776,"name":"address","nodeType":"ElementaryTypeName","src":"2283:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2248:66:21"},"src":"2215:100:21"},{"documentation":{"id":3780,"nodeType":"StructuredDocumentation","src":"2321:147:21","text":" @dev Revert with an error when attempting to cancel ownership transfer\n      when no new potential owner is currently set."},"errorSelector":"6b013616","id":3784,"name":"NoPotentialOwnerCurrentlySet","nameLocation":"2479:28:21","nodeType":"ErrorDefinition","parameters":{"id":3783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3782,"mutability":"mutable","name":"conduit","nameLocation":"2516:7:21","nodeType":"VariableDeclaration","scope":3784,"src":"2508:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3781,"name":"address","nodeType":"ElementaryTypeName","src":"2508:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2507:17:21"},"src":"2473:52:21"},{"documentation":{"id":3785,"nodeType":"StructuredDocumentation","src":"2531:124:21","text":" @dev Revert with an error when attempting to interact with a conduit that\n      does not yet exist."},"errorSelector":"4ca82090","id":3787,"name":"NoConduit","nameLocation":"2666:9:21","nodeType":"ErrorDefinition","parameters":{"id":3786,"nodeType":"ParameterList","parameters":[],"src":"2675:2:21"},"src":"2660:18:21"},{"documentation":{"id":3788,"nodeType":"StructuredDocumentation","src":"2684:113:21","text":" @dev Revert with an error when attempting to create a conduit that\n      already exists."},"errorSelector":"6328ccb2","id":3792,"name":"ConduitAlreadyExists","nameLocation":"2808:20:21","nodeType":"ErrorDefinition","parameters":{"id":3791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3790,"mutability":"mutable","name":"conduit","nameLocation":"2837:7:21","nodeType":"VariableDeclaration","scope":3792,"src":"2829:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3789,"name":"address","nodeType":"ElementaryTypeName","src":"2829:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2828:17:21"},"src":"2802:44:21"},{"documentation":{"id":3793,"nodeType":"StructuredDocumentation","src":"2852:199:21","text":" @dev Revert with an error when attempting to update channels or transfer\n      ownership of a conduit when the caller is not the owner of the\n      conduit in question."},"errorSelector":"d4ed9a17","id":3797,"name":"CallerIsNotOwner","nameLocation":"3062:16:21","nodeType":"ErrorDefinition","parameters":{"id":3796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3795,"mutability":"mutable","name":"conduit","nameLocation":"3087:7:21","nodeType":"VariableDeclaration","scope":3797,"src":"3079:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3794,"name":"address","nodeType":"ElementaryTypeName","src":"3079:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3078:17:21"},"src":"3056:40:21"},{"documentation":{"id":3798,"nodeType":"StructuredDocumentation","src":"3102:138:21","text":" @dev Revert with an error when attempting to register a new potential\n      owner and supplying the null address."},"errorSelector":"a388d263","id":3802,"name":"NewPotentialOwnerIsZeroAddress","nameLocation":"3251:30:21","nodeType":"ErrorDefinition","parameters":{"id":3801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3800,"mutability":"mutable","name":"conduit","nameLocation":"3290:7:21","nodeType":"VariableDeclaration","scope":3802,"src":"3282:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3799,"name":"address","nodeType":"ElementaryTypeName","src":"3282:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3281:17:21"},"src":"3245:54:21"},{"documentation":{"id":3803,"nodeType":"StructuredDocumentation","src":"3305:199:21","text":" @dev Revert with an error when attempting to claim ownership of a conduit\n      with a caller that is not the current potential owner for the\n      conduit in question."},"errorSelector":"88c3a115","id":3807,"name":"CallerIsNotNewPotentialOwner","nameLocation":"3515:28:21","nodeType":"ErrorDefinition","parameters":{"id":3806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3805,"mutability":"mutable","name":"conduit","nameLocation":"3552:7:21","nodeType":"VariableDeclaration","scope":3807,"src":"3544:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3804,"name":"address","nodeType":"ElementaryTypeName","src":"3544:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3543:17:21"},"src":"3509:52:21"},{"documentation":{"id":3808,"nodeType":"StructuredDocumentation","src":"3567:131:21","text":" @dev Revert with an error when attempting to retrieve a channel using an\n      index that is out of range."},"errorSelector":"6ceb340b","id":3812,"name":"ChannelOutOfRange","nameLocation":"3709:17:21","nodeType":"ErrorDefinition","parameters":{"id":3811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3810,"mutability":"mutable","name":"conduit","nameLocation":"3735:7:21","nodeType":"VariableDeclaration","scope":3812,"src":"3727:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3809,"name":"address","nodeType":"ElementaryTypeName","src":"3727:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3726:17:21"},"src":"3703:41:21"},{"documentation":{"id":3813,"nodeType":"StructuredDocumentation","src":"3750:748:21","text":" @notice Deploy a new conduit using a supplied conduit key and assigning\n         an initial owner for the deployed conduit. Note that the first\n         twenty bytes of the supplied conduit key must match the caller\n         and that a new conduit cannot be created if one has already been\n         deployed using the same conduit key.\n @param conduitKey   The conduit key used to deploy the conduit. Note that\n                     the first twenty bytes of the conduit key must match\n                     the caller of this contract.\n @param initialOwner The initial owner to set for the new conduit.\n @return conduit The address of the newly deployed conduit."},"functionSelector":"794593bc","id":3822,"implemented":false,"kind":"function","modifiers":[],"name":"createConduit","nameLocation":"4512:13:21","nodeType":"FunctionDefinition","parameters":{"id":3818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3815,"mutability":"mutable","name":"conduitKey","nameLocation":"4534:10:21","nodeType":"VariableDeclaration","scope":3822,"src":"4526:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3814,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4526:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3817,"mutability":"mutable","name":"initialOwner","nameLocation":"4554:12:21","nodeType":"VariableDeclaration","scope":3822,"src":"4546:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3816,"name":"address","nodeType":"ElementaryTypeName","src":"4546:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4525:42:21"},"returnParameters":{"id":3821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3820,"mutability":"mutable","name":"conduit","nameLocation":"4610:7:21","nodeType":"VariableDeclaration","scope":3822,"src":"4602:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3819,"name":"address","nodeType":"ElementaryTypeName","src":"4602:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4601:17:21"},"scope":3932,"src":"4503:116:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3823,"nodeType":"StructuredDocumentation","src":"4625:716:21","text":" @notice Open or close a channel on a given conduit, thereby allowing the\n         specified account to execute transfers against that conduit.\n         Extreme care must be taken when updating channels, as malicious\n         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\n         tokens where the token holder has granted the conduit approval.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to open or close the channel.\n @param channel The channel to open or close on the conduit.\n @param isOpen  A boolean indicating whether to open or close the channel."},"functionSelector":"13ad9cab","id":3832,"implemented":false,"kind":"function","modifiers":[],"name":"updateChannel","nameLocation":"5355:13:21","nodeType":"FunctionDefinition","parameters":{"id":3830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3825,"mutability":"mutable","name":"conduit","nameLocation":"5386:7:21","nodeType":"VariableDeclaration","scope":3832,"src":"5378:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3824,"name":"address","nodeType":"ElementaryTypeName","src":"5378:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3827,"mutability":"mutable","name":"channel","nameLocation":"5411:7:21","nodeType":"VariableDeclaration","scope":3832,"src":"5403:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3826,"name":"address","nodeType":"ElementaryTypeName","src":"5403:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3829,"mutability":"mutable","name":"isOpen","nameLocation":"5433:6:21","nodeType":"VariableDeclaration","scope":3832,"src":"5428:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3828,"name":"bool","nodeType":"ElementaryTypeName","src":"5428:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5368:77:21"},"returnParameters":{"id":3831,"nodeType":"ParameterList","parameters":[],"src":"5454:0:21"},"scope":3932,"src":"5346:109:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3833,"nodeType":"StructuredDocumentation","src":"5461:482:21","text":" @notice Initiate conduit ownership transfer by assigning a new potential\n         owner for the given conduit. Once set, the new potential owner\n         may call `acceptOwnership` to claim ownership of the conduit.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to initiate ownership transfer.\n @param newPotentialOwner The new potential owner of the conduit."},"functionSelector":"6d435421","id":3840,"implemented":false,"kind":"function","modifiers":[],"name":"transferOwnership","nameLocation":"5957:17:21","nodeType":"FunctionDefinition","parameters":{"id":3838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3835,"mutability":"mutable","name":"conduit","nameLocation":"5983:7:21","nodeType":"VariableDeclaration","scope":3840,"src":"5975:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3834,"name":"address","nodeType":"ElementaryTypeName","src":"5975:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3837,"mutability":"mutable","name":"newPotentialOwner","nameLocation":"6000:17:21","nodeType":"VariableDeclaration","scope":3840,"src":"5992:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3836,"name":"address","nodeType":"ElementaryTypeName","src":"5992:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5974:44:21"},"returnParameters":{"id":3839,"nodeType":"ParameterList","parameters":[],"src":"6035:0:21"},"scope":3932,"src":"5948:88:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3841,"nodeType":"StructuredDocumentation","src":"6042:253:21","text":" @notice Clear the currently set potential owner, if any, from a conduit.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to cancel ownership transfer."},"functionSelector":"7b37e561","id":3846,"implemented":false,"kind":"function","modifiers":[],"name":"cancelOwnershipTransfer","nameLocation":"6309:23:21","nodeType":"FunctionDefinition","parameters":{"id":3844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3843,"mutability":"mutable","name":"conduit","nameLocation":"6341:7:21","nodeType":"VariableDeclaration","scope":3846,"src":"6333:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3842,"name":"address","nodeType":"ElementaryTypeName","src":"6333:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6332:17:21"},"returnParameters":{"id":3845,"nodeType":"ParameterList","parameters":[],"src":"6358:0:21"},"scope":3932,"src":"6300:59:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3847,"nodeType":"StructuredDocumentation","src":"6365:264:21","text":" @notice Accept ownership of a supplied conduit. Only accounts that the\n         current owner has set as the new potential owner may call this\n         function.\n @param conduit The conduit for which to accept ownership."},"functionSelector":"51710e45","id":3852,"implemented":false,"kind":"function","modifiers":[],"name":"acceptOwnership","nameLocation":"6643:15:21","nodeType":"FunctionDefinition","parameters":{"id":3850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3849,"mutability":"mutable","name":"conduit","nameLocation":"6667:7:21","nodeType":"VariableDeclaration","scope":3852,"src":"6659:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3848,"name":"address","nodeType":"ElementaryTypeName","src":"6659:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6658:17:21"},"returnParameters":{"id":3851,"nodeType":"ParameterList","parameters":[],"src":"6684:0:21"},"scope":3932,"src":"6634:51:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3853,"nodeType":"StructuredDocumentation","src":"6691:224:21","text":" @notice Retrieve the current owner of a deployed conduit.\n @param conduit The conduit for which to retrieve the associated owner.\n @return owner The owner of the supplied conduit."},"functionSelector":"14afd79e","id":3860,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"6929:7:21","nodeType":"FunctionDefinition","parameters":{"id":3856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3855,"mutability":"mutable","name":"conduit","nameLocation":"6945:7:21","nodeType":"VariableDeclaration","scope":3860,"src":"6937:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3854,"name":"address","nodeType":"ElementaryTypeName","src":"6937:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6936:17:21"},"returnParameters":{"id":3859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3858,"mutability":"mutable","name":"owner","nameLocation":"6985:5:21","nodeType":"VariableDeclaration","scope":3860,"src":"6977:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3857,"name":"address","nodeType":"ElementaryTypeName","src":"6977:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6976:15:21"},"scope":3932,"src":"6920:72:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3861,"nodeType":"StructuredDocumentation","src":"6998:308:21","text":" @notice Retrieve the conduit key for a deployed conduit via reverse\n         lookup.\n @param conduit The conduit for which to retrieve the associated conduit\n                key.\n @return conduitKey The conduit key used to deploy the supplied conduit."},"functionSelector":"93790f44","id":3868,"implemented":false,"kind":"function","modifiers":[],"name":"getKey","nameLocation":"7320:6:21","nodeType":"FunctionDefinition","parameters":{"id":3864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3863,"mutability":"mutable","name":"conduit","nameLocation":"7335:7:21","nodeType":"VariableDeclaration","scope":3868,"src":"7327:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3862,"name":"address","nodeType":"ElementaryTypeName","src":"7327:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7326:17:21"},"returnParameters":{"id":3867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3866,"mutability":"mutable","name":"conduitKey","nameLocation":"7375:10:21","nodeType":"VariableDeclaration","scope":3868,"src":"7367:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3865,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7367:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7366:20:21"},"scope":3932,"src":"7311:76:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3869,"nodeType":"StructuredDocumentation","src":"7393:453:21","text":" @notice Derive the conduit associated with a given conduit key and\n         determine whether that conduit exists (i.e. whether it has been\n         deployed).\n @param conduitKey The conduit key used to derive the conduit.\n @return conduit The derived address of the conduit.\n @return exists  A boolean indicating whether the derived conduit has been\n                 deployed or not."},"functionSelector":"6e9bfd9f","id":3878,"implemented":false,"kind":"function","modifiers":[],"name":"getConduit","nameLocation":"7860:10:21","nodeType":"FunctionDefinition","parameters":{"id":3872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3871,"mutability":"mutable","name":"conduitKey","nameLocation":"7879:10:21","nodeType":"VariableDeclaration","scope":3878,"src":"7871:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3870,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7871:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7870:20:21"},"returnParameters":{"id":3877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3874,"mutability":"mutable","name":"conduit","nameLocation":"7946:7:21","nodeType":"VariableDeclaration","scope":3878,"src":"7938:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3873,"name":"address","nodeType":"ElementaryTypeName","src":"7938:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3876,"mutability":"mutable","name":"exists","nameLocation":"7960:6:21","nodeType":"VariableDeclaration","scope":3878,"src":"7955:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3875,"name":"bool","nodeType":"ElementaryTypeName","src":"7955:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7937:30:21"},"scope":3932,"src":"7851:117:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3879,"nodeType":"StructuredDocumentation","src":"7974:460:21","text":" @notice Retrieve the potential owner, if any, for a given conduit. The\n         current owner may set a new potential owner via\n         `transferOwnership` and that owner may then accept ownership of\n         the conduit in question via `acceptOwnership`.\n @param conduit The conduit for which to retrieve the potential owner.\n @return potentialOwner The potential owner, if any, for the conduit."},"functionSelector":"906c87cc","id":3886,"implemented":false,"kind":"function","modifiers":[],"name":"getPotentialOwner","nameLocation":"8448:17:21","nodeType":"FunctionDefinition","parameters":{"id":3882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3881,"mutability":"mutable","name":"conduit","nameLocation":"8474:7:21","nodeType":"VariableDeclaration","scope":3886,"src":"8466:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3880,"name":"address","nodeType":"ElementaryTypeName","src":"8466:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8465:17:21"},"returnParameters":{"id":3885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3884,"mutability":"mutable","name":"potentialOwner","nameLocation":"8538:14:21","nodeType":"VariableDeclaration","scope":3886,"src":"8530:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3883,"name":"address","nodeType":"ElementaryTypeName","src":"8530:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8529:24:21"},"scope":3932,"src":"8439:115:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3887,"nodeType":"StructuredDocumentation","src":"8560:346:21","text":" @notice Retrieve the status (either open or closed) of a given channel on\n         a conduit.\n @param conduit The conduit for which to retrieve the channel status.\n @param channel The channel for which to retrieve the status.\n @return isOpen The status of the channel on the given conduit."},"functionSelector":"33bc8572","id":3896,"implemented":false,"kind":"function","modifiers":[],"name":"getChannelStatus","nameLocation":"8920:16:21","nodeType":"FunctionDefinition","parameters":{"id":3892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3889,"mutability":"mutable","name":"conduit","nameLocation":"8945:7:21","nodeType":"VariableDeclaration","scope":3896,"src":"8937:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3888,"name":"address","nodeType":"ElementaryTypeName","src":"8937:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3891,"mutability":"mutable","name":"channel","nameLocation":"8962:7:21","nodeType":"VariableDeclaration","scope":3896,"src":"8954:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3890,"name":"address","nodeType":"ElementaryTypeName","src":"8954:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8936:34:21"},"returnParameters":{"id":3895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3894,"mutability":"mutable","name":"isOpen","nameLocation":"9023:6:21","nodeType":"VariableDeclaration","scope":3896,"src":"9018:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3893,"name":"bool","nodeType":"ElementaryTypeName","src":"9018:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9017:13:21"},"scope":3932,"src":"8911:120:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3897,"nodeType":"StructuredDocumentation","src":"9037:265:21","text":" @notice Retrieve the total number of open channels for a given conduit.\n @param conduit The conduit for which to retrieve the total channel count.\n @return totalChannels The total number of open channels for the conduit."},"functionSelector":"4e3f9580","id":3904,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalChannels","nameLocation":"9316:16:21","nodeType":"FunctionDefinition","parameters":{"id":3900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3899,"mutability":"mutable","name":"conduit","nameLocation":"9341:7:21","nodeType":"VariableDeclaration","scope":3904,"src":"9333:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3898,"name":"address","nodeType":"ElementaryTypeName","src":"9333:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9332:17:21"},"returnParameters":{"id":3903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3902,"mutability":"mutable","name":"totalChannels","nameLocation":"9405:13:21","nodeType":"VariableDeclaration","scope":3904,"src":"9397:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3901,"name":"uint256","nodeType":"ElementaryTypeName","src":"9397:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9396:23:21"},"scope":3932,"src":"9307:113:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3905,"nodeType":"StructuredDocumentation","src":"9426:464:21","text":" @notice Retrieve an open channel at a specific index for a given conduit.\n         Note that the index of a channel can change as a result of other\n         channels being closed on the conduit.\n @param conduit      The conduit for which to retrieve the open channel.\n @param channelIndex The index of the channel in question.\n @return channel The open channel, if any, at the specified channel index."},"functionSelector":"027cc764","id":3914,"implemented":false,"kind":"function","modifiers":[],"name":"getChannel","nameLocation":"9904:10:21","nodeType":"FunctionDefinition","parameters":{"id":3910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3907,"mutability":"mutable","name":"conduit","nameLocation":"9923:7:21","nodeType":"VariableDeclaration","scope":3914,"src":"9915:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3906,"name":"address","nodeType":"ElementaryTypeName","src":"9915:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3909,"mutability":"mutable","name":"channelIndex","nameLocation":"9940:12:21","nodeType":"VariableDeclaration","scope":3914,"src":"9932:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3908,"name":"uint256","nodeType":"ElementaryTypeName","src":"9932:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9914:39:21"},"returnParameters":{"id":3913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3912,"mutability":"mutable","name":"channel","nameLocation":"10009:7:21","nodeType":"VariableDeclaration","scope":3914,"src":"10001:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3911,"name":"address","nodeType":"ElementaryTypeName","src":"10001:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10000:17:21"},"scope":3932,"src":"9895:123:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3915,"nodeType":"StructuredDocumentation","src":"10024:364:21","text":" @notice Retrieve all open channels for a given conduit. Note that calling\n         this function for a conduit with many channels will revert with\n         an out-of-gas error.\n @param conduit The conduit for which to retrieve open channels.\n @return channels An array of open channels on the given conduit."},"functionSelector":"8b9e028b","id":3923,"implemented":false,"kind":"function","modifiers":[],"name":"getChannels","nameLocation":"10402:11:21","nodeType":"FunctionDefinition","parameters":{"id":3918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3917,"mutability":"mutable","name":"conduit","nameLocation":"10422:7:21","nodeType":"VariableDeclaration","scope":3923,"src":"10414:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3916,"name":"address","nodeType":"ElementaryTypeName","src":"10414:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10413:17:21"},"returnParameters":{"id":3922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3921,"mutability":"mutable","name":"channels","nameLocation":"10495:8:21","nodeType":"VariableDeclaration","scope":3923,"src":"10478:25:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3919,"name":"address","nodeType":"ElementaryTypeName","src":"10478:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3920,"nodeType":"ArrayTypeName","src":"10478:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"10477:27:21"},"scope":3932,"src":"10393:112:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3924,"nodeType":"StructuredDocumentation","src":"10511:83:21","text":" @dev Retrieve the conduit creation code and runtime code hashes."},"functionSelector":"0a96ad39","id":3931,"implemented":false,"kind":"function","modifiers":[],"name":"getConduitCodeHashes","nameLocation":"10608:20:21","nodeType":"FunctionDefinition","parameters":{"id":3925,"nodeType":"ParameterList","parameters":[],"src":"10628:2:21"},"returnParameters":{"id":3930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3927,"mutability":"mutable","name":"creationCodeHash","nameLocation":"10686:16:21","nodeType":"VariableDeclaration","scope":3931,"src":"10678:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3926,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10678:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3929,"mutability":"mutable","name":"runtimeCodeHash","nameLocation":"10712:15:21","nodeType":"VariableDeclaration","scope":3931,"src":"10704:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3928,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10704:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10677:51:21"},"scope":3932,"src":"10599:130:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3933,"src":"266:10465:21","usedErrors":[3769,3772,3779,3784,3787,3792,3797,3802,3807,3812]}],"src":"32:10700:21"},"id":21},"contracts/interfaces/ConduitInterface.sol":{"ast":{"absolutePath":"contracts/interfaces/ConduitInterface.sol","exportedSymbols":{"ConduitBatch1155Transfer":[3673],"ConduitInterface":[4006],"ConduitTransfer":[3660]},"id":4007,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3934,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:22"},{"absolutePath":"contracts/conduit/lib/ConduitStructs.sol","file":"../conduit/lib/ConduitStructs.sol","id":3937,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4007,"sourceUnit":3674,"src":"57:102:22","symbolAliases":[{"foreign":{"id":3935,"name":"ConduitTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"70:15:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3936,"name":"ConduitBatch1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"91:24:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ConduitInterface","contractDependencies":[],"contractKind":"interface","documentation":{"id":3938,"nodeType":"StructuredDocumentation","src":"161:174:22","text":" @title ConduitInterface\n @author 0age\n @notice ConduitInterface contains all external function interfaces, events,\n         and errors for conduit contracts."},"fullyImplemented":false,"id":4006,"linearizedBaseContracts":[4006],"name":"ConduitInterface","nameLocation":"346:16:22","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3939,"nodeType":"StructuredDocumentation","src":"369:144:22","text":" @dev Revert with an error when attempting to execute transfers using a\n      caller that does not have an open channel."},"errorSelector":"93daadf2","id":3943,"name":"ChannelClosed","nameLocation":"524:13:22","nodeType":"ErrorDefinition","parameters":{"id":3942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3941,"mutability":"mutable","name":"channel","nameLocation":"546:7:22","nodeType":"VariableDeclaration","scope":3943,"src":"538:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3940,"name":"address","nodeType":"ElementaryTypeName","src":"538:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"537:17:22"},"src":"518:37:22"},{"documentation":{"id":3944,"nodeType":"StructuredDocumentation","src":"561:131:22","text":" @dev Revert with an error when attempting to update a channel to the\n      current status of that channel."},"errorSelector":"924e341e","id":3950,"name":"ChannelStatusAlreadySet","nameLocation":"703:23:22","nodeType":"ErrorDefinition","parameters":{"id":3949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3946,"mutability":"mutable","name":"channel","nameLocation":"735:7:22","nodeType":"VariableDeclaration","scope":3950,"src":"727:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3945,"name":"address","nodeType":"ElementaryTypeName","src":"727:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3948,"mutability":"mutable","name":"isOpen","nameLocation":"749:6:22","nodeType":"VariableDeclaration","scope":3950,"src":"744:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3947,"name":"bool","nodeType":"ElementaryTypeName","src":"744:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"726:30:22"},"src":"697:60:22"},{"documentation":{"id":3951,"nodeType":"StructuredDocumentation","src":"763:154:22","text":" @dev Revert with an error when attempting to execute a transfer for an\n      item that does not have an ERC20/721/1155 item type."},"errorSelector":"7932f1fc","id":3953,"name":"InvalidItemType","nameLocation":"928:15:22","nodeType":"ErrorDefinition","parameters":{"id":3952,"nodeType":"ParameterList","parameters":[],"src":"943:2:22"},"src":"922:24:22"},{"documentation":{"id":3954,"nodeType":"StructuredDocumentation","src":"952:156:22","text":" @dev Revert with an error when attempting to update the status of a\n      channel from a caller that is not the conduit controller."},"errorSelector":"6d5769be","id":3956,"name":"InvalidController","nameLocation":"1119:17:22","nodeType":"ErrorDefinition","parameters":{"id":3955,"nodeType":"ParameterList","parameters":[],"src":"1136:2:22"},"src":"1113:26:22"},{"anonymous":false,"documentation":{"id":3957,"nodeType":"StructuredDocumentation","src":"1145:220:22","text":" @dev Emit an event whenever a channel is opened or closed.\n @param channel The channel that has been updated.\n @param open    A boolean indicating whether the conduit is open or not."},"eventSelector":"ae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2","id":3963,"name":"ChannelUpdated","nameLocation":"1376:14:22","nodeType":"EventDefinition","parameters":{"id":3962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3959,"indexed":true,"mutability":"mutable","name":"channel","nameLocation":"1407:7:22","nodeType":"VariableDeclaration","scope":3963,"src":"1391:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3958,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3961,"indexed":false,"mutability":"mutable","name":"open","nameLocation":"1421:4:22","nodeType":"VariableDeclaration","scope":3963,"src":"1416:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3960,"name":"bool","nodeType":"ElementaryTypeName","src":"1416:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1390:36:22"},"src":"1370:57:22"},{"documentation":{"id":3964,"nodeType":"StructuredDocumentation","src":"1433:352:22","text":" @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\n         with an open channel can call this function.\n @param transfers The ERC20/721/1155 transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."},"functionSelector":"4ce34aa2","id":3973,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"1799:7:22","nodeType":"FunctionDefinition","parameters":{"id":3969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3968,"mutability":"mutable","name":"transfers","nameLocation":"1834:9:22","nodeType":"VariableDeclaration","scope":3973,"src":"1807:36:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer[]"},"typeName":{"baseType":{"id":3966,"nodeType":"UserDefinedTypeName","pathNode":{"id":3965,"name":"ConduitTransfer","nodeType":"IdentifierPath","referencedDeclaration":3660,"src":"1807:15:22"},"referencedDeclaration":3660,"src":"1807:15:22","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_storage_ptr","typeString":"struct ConduitTransfer"}},"id":3967,"nodeType":"ArrayTypeName","src":"1807:17:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_storage_$dyn_storage_ptr","typeString":"struct ConduitTransfer[]"}},"visibility":"internal"}],"src":"1806:38:22"},"returnParameters":{"id":3972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3971,"mutability":"mutable","name":"magicValue","nameLocation":"1886:10:22","nodeType":"VariableDeclaration","scope":3973,"src":"1879:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3970,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1879:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1878:19:22"},"scope":4006,"src":"1790:108:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3974,"nodeType":"StructuredDocumentation","src":"1904:353:22","text":" @notice Execute a sequence of batch 1155 transfers. Only a caller with an\n         open channel can call this function.\n @param batch1155Transfers The 1155 batch transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."},"functionSelector":"8df25d92","id":3983,"implemented":false,"kind":"function","modifiers":[],"name":"executeBatch1155","nameLocation":"2271:16:22","nodeType":"FunctionDefinition","parameters":{"id":3979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3978,"mutability":"mutable","name":"batch1155Transfers","nameLocation":"2333:18:22","nodeType":"VariableDeclaration","scope":3983,"src":"2297:54:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer[]"},"typeName":{"baseType":{"id":3976,"nodeType":"UserDefinedTypeName","pathNode":{"id":3975,"name":"ConduitBatch1155Transfer","nodeType":"IdentifierPath","referencedDeclaration":3673,"src":"2297:24:22"},"referencedDeclaration":3673,"src":"2297:24:22","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitBatch1155Transfer_$3673_storage_ptr","typeString":"struct ConduitBatch1155Transfer"}},"id":3977,"nodeType":"ArrayTypeName","src":"2297:26:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_storage_$dyn_storage_ptr","typeString":"struct ConduitBatch1155Transfer[]"}},"visibility":"internal"}],"src":"2287:70:22"},"returnParameters":{"id":3982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3981,"mutability":"mutable","name":"magicValue","nameLocation":"2383:10:22","nodeType":"VariableDeclaration","scope":3983,"src":"2376:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3980,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2376:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2375:19:22"},"scope":4006,"src":"2262:133:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3984,"nodeType":"StructuredDocumentation","src":"2401:444:22","text":" @notice Execute a sequence of transfers, both single and batch 1155. Only\n         a caller with an open channel can call this function.\n @param standardTransfers  The ERC20/721/1155 transfers to perform.\n @param batch1155Transfers The 1155 batch transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."},"functionSelector":"899e104c","id":3997,"implemented":false,"kind":"function","modifiers":[],"name":"executeWithBatch1155","nameLocation":"2859:20:22","nodeType":"FunctionDefinition","parameters":{"id":3993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3988,"mutability":"mutable","name":"standardTransfers","nameLocation":"2916:17:22","nodeType":"VariableDeclaration","scope":3997,"src":"2889:44:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer[]"},"typeName":{"baseType":{"id":3986,"nodeType":"UserDefinedTypeName","pathNode":{"id":3985,"name":"ConduitTransfer","nodeType":"IdentifierPath","referencedDeclaration":3660,"src":"2889:15:22"},"referencedDeclaration":3660,"src":"2889:15:22","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$3660_storage_ptr","typeString":"struct ConduitTransfer"}},"id":3987,"nodeType":"ArrayTypeName","src":"2889:17:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$3660_storage_$dyn_storage_ptr","typeString":"struct ConduitTransfer[]"}},"visibility":"internal"},{"constant":false,"id":3992,"mutability":"mutable","name":"batch1155Transfers","nameLocation":"2979:18:22","nodeType":"VariableDeclaration","scope":3997,"src":"2943:54:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer[]"},"typeName":{"baseType":{"id":3990,"nodeType":"UserDefinedTypeName","pathNode":{"id":3989,"name":"ConduitBatch1155Transfer","nodeType":"IdentifierPath","referencedDeclaration":3673,"src":"2943:24:22"},"referencedDeclaration":3673,"src":"2943:24:22","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitBatch1155Transfer_$3673_storage_ptr","typeString":"struct ConduitBatch1155Transfer"}},"id":3991,"nodeType":"ArrayTypeName","src":"2943:26:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_storage_$dyn_storage_ptr","typeString":"struct ConduitBatch1155Transfer[]"}},"visibility":"internal"}],"src":"2879:124:22"},"returnParameters":{"id":3996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3995,"mutability":"mutable","name":"magicValue","nameLocation":"3029:10:22","nodeType":"VariableDeclaration","scope":3997,"src":"3022:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3994,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3022:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3021:19:22"},"scope":4006,"src":"2850:191:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3998,"nodeType":"StructuredDocumentation","src":"3047:222:22","text":" @notice Open or close a given channel. Only callable by the controller.\n @param channel The channel to open or close.\n @param isOpen  The status of the channel (either open or closed)."},"functionSelector":"c4e8fcb5","id":4005,"implemented":false,"kind":"function","modifiers":[],"name":"updateChannel","nameLocation":"3283:13:22","nodeType":"FunctionDefinition","parameters":{"id":4003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4000,"mutability":"mutable","name":"channel","nameLocation":"3305:7:22","nodeType":"VariableDeclaration","scope":4005,"src":"3297:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3999,"name":"address","nodeType":"ElementaryTypeName","src":"3297:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4002,"mutability":"mutable","name":"isOpen","nameLocation":"3319:6:22","nodeType":"VariableDeclaration","scope":4005,"src":"3314:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4001,"name":"bool","nodeType":"ElementaryTypeName","src":"3314:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3296:30:22"},"returnParameters":{"id":4004,"nodeType":"ParameterList","parameters":[],"src":"3335:0:22"},"scope":4006,"src":"3274:62:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4007,"src":"336:3002:22","usedErrors":[3943,3950,3953,3956]}],"src":"32:3307:22"},"id":22},"contracts/interfaces/ConsiderationEventsAndErrors.sol":{"ast":{"absolutePath":"contracts/interfaces/ConsiderationEventsAndErrors.sol","exportedSymbols":{"ConsiderationEventsAndErrors":[4158]},"id":4159,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4008,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:23"},{"abstract":false,"baseContracts":[],"canonicalName":"ConsiderationEventsAndErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4009,"nodeType":"StructuredDocumentation","src":"57:134:23","text":" @title ConsiderationEventsAndErrors\n @author 0age\n @notice ConsiderationEventsAndErrors contains all events and errors."},"fullyImplemented":true,"id":4158,"linearizedBaseContracts":[4158],"name":"ConsiderationEventsAndErrors","nameLocation":"202:28:23","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"8fb2c26b66af59de39b1b2f4e1fba157f4408a9b52495599333e37e3191b0869","id":4017,"name":"OrderFulfilled","nameLocation":"244:14:23","nodeType":"EventDefinition","parameters":{"id":4016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4011,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"276:9:23","nodeType":"VariableDeclaration","scope":4017,"src":"268:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4010,"name":"bytes32","nodeType":"ElementaryTypeName","src":"268:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4013,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"311:7:23","nodeType":"VariableDeclaration","scope":4017,"src":"295:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4012,"name":"address","nodeType":"ElementaryTypeName","src":"295:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4015,"indexed":false,"mutability":"mutable","name":"shadowId","nameLocation":"336:8:23","nodeType":"VariableDeclaration","scope":4017,"src":"328:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4014,"name":"uint256","nodeType":"ElementaryTypeName","src":"328:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"258:92:23"},"src":"238:113:23"},{"anonymous":false,"eventSelector":"6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d38","id":4025,"name":"OrderRepaid","nameLocation":"363:11:23","nodeType":"EventDefinition","parameters":{"id":4024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4019,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"392:9:23","nodeType":"VariableDeclaration","scope":4025,"src":"384:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4018,"name":"bytes32","nodeType":"ElementaryTypeName","src":"384:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4021,"indexed":false,"mutability":"mutable","name":"payTimes","nameLocation":"419:8:23","nodeType":"VariableDeclaration","scope":4025,"src":"411:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4020,"name":"uint256","nodeType":"ElementaryTypeName","src":"411:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4023,"indexed":false,"mutability":"mutable","name":"finalized","nameLocation":"442:9:23","nodeType":"VariableDeclaration","scope":4025,"src":"437:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4022,"name":"bool","nodeType":"ElementaryTypeName","src":"437:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"374:83:23"},"src":"357:101:23"},{"anonymous":false,"eventSelector":"e68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada","id":4031,"name":"OrderBroken","nameLocation":"470:11:23","nodeType":"EventDefinition","parameters":{"id":4030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4027,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"499:9:23","nodeType":"VariableDeclaration","scope":4031,"src":"491:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4026,"name":"bytes32","nodeType":"ElementaryTypeName","src":"491:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4029,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"534:7:23","nodeType":"VariableDeclaration","scope":4031,"src":"518:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4028,"name":"address","nodeType":"ElementaryTypeName","src":"518:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:66:23"},"src":"464:84:23"},{"anonymous":false,"documentation":{"id":4032,"nodeType":"StructuredDocumentation","src":"554:206:23","text":" @dev Emit an event whenever an order is successfully cancelled.\n @param orderHash The hash of the cancelled order.\n @param offerer   The offerer of the cancelled order."},"eventSelector":"a6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba52753","id":4038,"name":"OrderCancelled","nameLocation":"771:14:23","nodeType":"EventDefinition","parameters":{"id":4037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4034,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"803:9:23","nodeType":"VariableDeclaration","scope":4038,"src":"795:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4033,"name":"bytes32","nodeType":"ElementaryTypeName","src":"795:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4036,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"838:7:23","nodeType":"VariableDeclaration","scope":4038,"src":"822:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4035,"name":"address","nodeType":"ElementaryTypeName","src":"822:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"785:66:23"},"src":"765:87:23"},{"anonymous":false,"documentation":{"id":4039,"nodeType":"StructuredDocumentation","src":"858:357:23","text":" @dev Emit an event whenever an order is explicitly validated. Note that\n      this event will not be emitted on partial fills even though they do\n      validate the order as part of partial fulfillment.\n @param orderHash The hash of the validated order.\n @param offerer   The offerer of the validated order."},"eventSelector":"09e126c208c7c6b8de91fb519ff46ef1f6eb471f6376862ca4de42ea000026d6","id":4045,"name":"OrderValidated","nameLocation":"1226:14:23","nodeType":"EventDefinition","parameters":{"id":4044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4041,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"1258:9:23","nodeType":"VariableDeclaration","scope":4045,"src":"1250:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4040,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1250:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4043,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"1293:7:23","nodeType":"VariableDeclaration","scope":4045,"src":"1277:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4042,"name":"address","nodeType":"ElementaryTypeName","src":"1277:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1240:66:23"},"src":"1220:87:23"},{"anonymous":false,"documentation":{"id":4046,"nodeType":"StructuredDocumentation","src":"1313:205:23","text":" @dev Emit an event whenever a counter for a given offerer is incremented.\n @param newCounter The new counter for the offerer.\n @param offerer  The offerer in question."},"eventSelector":"721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f","id":4052,"name":"CounterIncremented","nameLocation":"1529:18:23","nodeType":"EventDefinition","parameters":{"id":4051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4048,"indexed":false,"mutability":"mutable","name":"newCounter","nameLocation":"1556:10:23","nodeType":"VariableDeclaration","scope":4052,"src":"1548:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4047,"name":"uint256","nodeType":"ElementaryTypeName","src":"1548:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4050,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"1584:7:23","nodeType":"VariableDeclaration","scope":4052,"src":"1568:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4049,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1547:45:23"},"src":"1523:70:23"},{"documentation":{"id":4053,"nodeType":"StructuredDocumentation","src":"1599:202:23","text":" @dev Revert with an error when attempting to fill an order that has\n      already been fully filled.\n @param orderHash The order hash on which a fill was attempted."},"errorSelector":"10fda3e1","id":4057,"name":"OrderAlreadyFilled","nameLocation":"1812:18:23","nodeType":"ErrorDefinition","parameters":{"id":4056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4055,"mutability":"mutable","name":"orderHash","nameLocation":"1839:9:23","nodeType":"VariableDeclaration","scope":4057,"src":"1831:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4054,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1831:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1830:19:23"},"src":"1806:44:23"},{"errorSelector":"836f8ef9","id":4061,"name":"OrderAlreadyFinalized","nameLocation":"1862:21:23","nodeType":"ErrorDefinition","parameters":{"id":4060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4059,"mutability":"mutable","name":"orderHash","nameLocation":"1892:9:23","nodeType":"VariableDeclaration","scope":4061,"src":"1884:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4058,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1884:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1883:19:23"},"src":"1856:47:23"},{"errorSelector":"9633f278","id":4065,"name":"OrderAlreadyStarted","nameLocation":"1915:19:23","nodeType":"ErrorDefinition","parameters":{"id":4064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4063,"mutability":"mutable","name":"orderHash","nameLocation":"1943:9:23","nodeType":"VariableDeclaration","scope":4065,"src":"1935:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1935:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1934:19:23"},"src":"1909:45:23"},{"errorSelector":"e567c93e","id":4069,"name":"OrderNotStarted","nameLocation":"1966:15:23","nodeType":"ErrorDefinition","parameters":{"id":4068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4067,"mutability":"mutable","name":"orderHash","nameLocation":"1990:9:23","nodeType":"VariableDeclaration","scope":4069,"src":"1982:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4066,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1982:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1981:19:23"},"src":"1960:41:23"},{"documentation":{"id":4070,"nodeType":"StructuredDocumentation","src":"2007:136:23","text":" @dev Revert with an error when attempting to fill an order outside the\n      specified start time and end time."},"errorSelector":"6f7eac26","id":4072,"name":"InvalidTime","nameLocation":"2154:11:23","nodeType":"ErrorDefinition","parameters":{"id":4071,"nodeType":"ParameterList","parameters":[],"src":"2165:2:23"},"src":"2148:20:23"},{"documentation":{"id":4073,"nodeType":"StructuredDocumentation","src":"2174:159:23","text":" @dev Revert with an error when attempting to fill an order referencing an\n      invalid conduit (i.e. one that has not been deployed)."},"errorSelector":"1cf99b26","id":4079,"name":"InvalidConduit","nameLocation":"2344:14:23","nodeType":"ErrorDefinition","parameters":{"id":4078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4075,"mutability":"mutable","name":"conduitKey","nameLocation":"2367:10:23","nodeType":"VariableDeclaration","scope":4079,"src":"2359:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4074,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2359:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4077,"mutability":"mutable","name":"conduit","nameLocation":"2387:7:23","nodeType":"VariableDeclaration","scope":4079,"src":"2379:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4076,"name":"address","nodeType":"ElementaryTypeName","src":"2379:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2358:37:23"},"src":"2338:58:23"},{"documentation":{"id":4080,"nodeType":"StructuredDocumentation","src":"2402:166:23","text":" @dev Revert with an error when an order is supplied for fulfillment with\n      a consideration array that is shorter than the original array."},"errorSelector":"466aa616","id":4082,"name":"MissingOriginalConsiderationItems","nameLocation":"2579:33:23","nodeType":"ErrorDefinition","parameters":{"id":4081,"nodeType":"ParameterList","parameters":[],"src":"2612:2:23"},"src":"2573:42:23"},{"documentation":{"id":4083,"nodeType":"StructuredDocumentation","src":"2621:137:23","text":" @dev Revert with an error when a call to a conduit fails with revert data\n      that is too expensive to return."},"errorSelector":"d13d53d4","id":4087,"name":"InvalidCallToConduit","nameLocation":"2769:20:23","nodeType":"ErrorDefinition","parameters":{"id":4086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4085,"mutability":"mutable","name":"conduit","nameLocation":"2798:7:23","nodeType":"VariableDeclaration","scope":4087,"src":"2790:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4084,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2789:17:23"},"src":"2763:44:23"},{"documentation":{"id":4088,"nodeType":"StructuredDocumentation","src":"2813:474:23","text":" @dev Revert with an error if a consideration amount has not been fully\n      zeroed out after applying all fulfillments.\n @param orderIndex         The index of the order with the consideration\n                           item with a shortfall.\n @param considerationIndex The index of the consideration item on the\n                           order.\n @param shortfallAmount    The unfulfilled consideration amount."},"errorSelector":"a5f54208","id":4096,"name":"ConsiderationNotMet","nameLocation":"3298:19:23","nodeType":"ErrorDefinition","parameters":{"id":4095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4090,"mutability":"mutable","name":"orderIndex","nameLocation":"3335:10:23","nodeType":"VariableDeclaration","scope":4096,"src":"3327:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4089,"name":"uint256","nodeType":"ElementaryTypeName","src":"3327:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4092,"mutability":"mutable","name":"considerationIndex","nameLocation":"3363:18:23","nodeType":"VariableDeclaration","scope":4096,"src":"3355:26:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4091,"name":"uint256","nodeType":"ElementaryTypeName","src":"3355:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4094,"mutability":"mutable","name":"shortfallAmount","nameLocation":"3399:15:23","nodeType":"VariableDeclaration","scope":4096,"src":"3391:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4093,"name":"uint256","nodeType":"ElementaryTypeName","src":"3391:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3317:103:23"},"src":"3292:129:23"},{"documentation":{"id":4097,"nodeType":"StructuredDocumentation","src":"3427:137:23","text":" @dev Revert with an error when insufficient ether is supplied as part of\n      msg.value when fulfilling orders."},"errorSelector":"1a783b8d","id":4099,"name":"InsufficientEtherSupplied","nameLocation":"3575:25:23","nodeType":"ErrorDefinition","parameters":{"id":4098,"nodeType":"ParameterList","parameters":[],"src":"3600:2:23"},"src":"3569:34:23"},{"documentation":{"id":4100,"nodeType":"StructuredDocumentation","src":"3609:76:23","text":" @dev Revert with an error when an ether transfer reverts."},"errorSelector":"470c7c1d","id":4106,"name":"EtherTransferGenericFailure","nameLocation":"3696:27:23","nodeType":"ErrorDefinition","parameters":{"id":4105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4102,"mutability":"mutable","name":"account","nameLocation":"3732:7:23","nodeType":"VariableDeclaration","scope":4106,"src":"3724:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4101,"name":"address","nodeType":"ElementaryTypeName","src":"3724:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4104,"mutability":"mutable","name":"amount","nameLocation":"3749:6:23","nodeType":"VariableDeclaration","scope":4106,"src":"3741:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4103,"name":"uint256","nodeType":"ElementaryTypeName","src":"3741:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3723:33:23"},"src":"3690:67:23"},{"documentation":{"id":4107,"nodeType":"StructuredDocumentation","src":"3763:163:23","text":" @dev Revert with an error when a partial fill is attempted on an order\n      that does not specify partial fill support in its order type."},"errorSelector":"a11b63ff","id":4109,"name":"PartialFillsNotEnabledForOrder","nameLocation":"3937:30:23","nodeType":"ErrorDefinition","parameters":{"id":4108,"nodeType":"ParameterList","parameters":[],"src":"3967:2:23"},"src":"3931:39:23"},{"documentation":{"id":4110,"nodeType":"StructuredDocumentation","src":"3976:178:23","text":" @dev Revert with an error when attempting to fill an order that has been\n      cancelled.\n @param orderHash The hash of the cancelled order."},"errorSelector":"1a515574","id":4114,"name":"OrderIsCancelled","nameLocation":"4165:16:23","nodeType":"ErrorDefinition","parameters":{"id":4113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4112,"mutability":"mutable","name":"orderHash","nameLocation":"4190:9:23","nodeType":"VariableDeclaration","scope":4114,"src":"4182:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4111,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4182:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4181:19:23"},"src":"4159:42:23"},{"documentation":{"id":4115,"nodeType":"StructuredDocumentation","src":"4207:195:23","text":" @dev Revert with an error when attempting to fill a basic order that has\n      been partially filled.\n @param orderHash The hash of the partially used order."},"errorSelector":"ee9e0e63","id":4119,"name":"OrderPartiallyFilled","nameLocation":"4413:20:23","nodeType":"ErrorDefinition","parameters":{"id":4118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4117,"mutability":"mutable","name":"orderHash","nameLocation":"4442:9:23","nodeType":"VariableDeclaration","scope":4119,"src":"4434:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4116,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4434:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4433:19:23"},"src":"4407:46:23"},{"documentation":{"id":4120,"nodeType":"StructuredDocumentation","src":"4459:145:23","text":" @dev Revert with an error when attempting to cancel an order as a caller\n      other than the indicated offerer or zone."},"errorSelector":"80ec7374","id":4122,"name":"InvalidCanceller","nameLocation":"4615:16:23","nodeType":"ErrorDefinition","parameters":{"id":4121,"nodeType":"ParameterList","parameters":[],"src":"4631:2:23"},"src":"4609:25:23"},{"documentation":{"id":4123,"nodeType":"StructuredDocumentation","src":"4640:201:23","text":" @dev Revert with an error when supplying a fraction with a value of zero\n      for the numerator or denominator, or one where the numerator exceeds\n      the denominator."},"errorSelector":"5a052b32","id":4125,"name":"BadFraction","nameLocation":"4852:11:23","nodeType":"ErrorDefinition","parameters":{"id":4124,"nodeType":"ParameterList","parameters":[],"src":"4863:2:23"},"src":"4846:20:23"},{"documentation":{"id":4126,"nodeType":"StructuredDocumentation","src":"4872:211:23","text":" @dev Revert with an error when a caller attempts to supply callvalue to a\n      non-payable basic order route or does not supply any callvalue to a\n      payable basic order route."},"errorSelector":"a61be9f0","id":4130,"name":"InvalidMsgValue","nameLocation":"5094:15:23","nodeType":"ErrorDefinition","parameters":{"id":4129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4128,"mutability":"mutable","name":"value","nameLocation":"5118:5:23","nodeType":"VariableDeclaration","scope":4130,"src":"5110:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4127,"name":"uint256","nodeType":"ElementaryTypeName","src":"5110:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5109:15:23"},"src":"5088:37:23"},{"documentation":{"id":4131,"nodeType":"StructuredDocumentation","src":"5131:147:23","text":" @dev Revert with an error when attempting to fill a basic order using\n      calldata not produced by default ABI encoding."},"errorSelector":"39f3e3fd","id":4133,"name":"InvalidBasicOrderParameterEncoding","nameLocation":"5289:34:23","nodeType":"ErrorDefinition","parameters":{"id":4132,"nodeType":"ParameterList","parameters":[],"src":"5323:2:23"},"src":"5283:43:23"},{"documentation":{"id":4134,"nodeType":"StructuredDocumentation","src":"5332:141:23","text":" @dev Revert with an error when attempting to fulfill any number of\n      available orders when none are fulfillable."},"errorSelector":"d5da9a1b","id":4136,"name":"NoSpecifiedOrdersAvailable","nameLocation":"5484:26:23","nodeType":"ErrorDefinition","parameters":{"id":4135,"nodeType":"ParameterList","parameters":[],"src":"5510:2:23"},"src":"5478:35:23"},{"documentation":{"id":4137,"nodeType":"StructuredDocumentation","src":"5519:142:23","text":" @dev Revert with an error when attempting to fulfill an order with an\n      offer for ETH outside of matching orders."},"errorSelector":"12d3f5a3","id":4139,"name":"InvalidNativeOfferItem","nameLocation":"5672:22:23","nodeType":"ErrorDefinition","parameters":{"id":4138,"nodeType":"ParameterList","parameters":[],"src":"5694:2:23"},"src":"5666:31:23"},{"errorSelector":"a4c58ff6","id":4143,"name":"OrderNotValidated","nameLocation":"5709:17:23","nodeType":"ErrorDefinition","parameters":{"id":4142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4141,"mutability":"mutable","name":"orderHash","nameLocation":"5735:9:23","nodeType":"VariableDeclaration","scope":4143,"src":"5727:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4140,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5727:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5726:19:23"},"src":"5703:43:23"},{"errorSelector":"2e775cae","id":4147,"name":"OrderExpired","nameLocation":"5758:12:23","nodeType":"ErrorDefinition","parameters":{"id":4146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4145,"mutability":"mutable","name":"orderHash","nameLocation":"5779:9:23","nodeType":"VariableDeclaration","scope":4147,"src":"5771:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4144,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5771:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5770:19:23"},"src":"5752:38:23"},{"errorSelector":"031ea4cb","id":4151,"name":"OrderNotExpired","nameLocation":"5802:15:23","nodeType":"ErrorDefinition","parameters":{"id":4150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4149,"mutability":"mutable","name":"orderHash","nameLocation":"5826:9:23","nodeType":"VariableDeclaration","scope":4151,"src":"5818:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4148,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5818:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5817:19:23"},"src":"5796:41:23"},{"errorSelector":"c8910ec0","id":4155,"name":"OrderInvalidRepayParameters","nameLocation":"5849:27:23","nodeType":"ErrorDefinition","parameters":{"id":4154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4153,"mutability":"mutable","name":"orderHash","nameLocation":"5885:9:23","nodeType":"VariableDeclaration","scope":4155,"src":"5877:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4152,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5877:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5876:19:23"},"src":"5843:53:23"},{"errorSelector":"0a199cb5","id":4157,"name":"InvalidOrderParameters","nameLocation":"5908:22:23","nodeType":"ErrorDefinition","parameters":{"id":4156,"nodeType":"ParameterList","parameters":[],"src":"5930:2:23"},"src":"5902:31:23"}],"scope":4159,"src":"192:5743:23","usedErrors":[4057,4061,4065,4069,4072,4079,4082,4087,4096,4099,4106,4109,4114,4119,4122,4125,4130,4133,4136,4139,4143,4147,4151,4155,4157]}],"src":"32:5904:23"},"id":23},"contracts/interfaces/EIP1271Interface.sol":{"ast":{"absolutePath":"contracts/interfaces/EIP1271Interface.sol","exportedSymbols":{"EIP1271Interface":[4170]},"id":4171,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4160,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:24"},{"abstract":false,"baseContracts":[],"canonicalName":"EIP1271Interface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4170,"linearizedBaseContracts":[4170],"name":"EIP1271Interface","nameLocation":"67:16:24","nodeType":"ContractDefinition","nodes":[{"functionSelector":"1626ba7e","id":4169,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"99:16:24","nodeType":"FunctionDefinition","parameters":{"id":4165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4162,"mutability":"mutable","name":"digest","nameLocation":"124:6:24","nodeType":"VariableDeclaration","scope":4169,"src":"116:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"116:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4164,"mutability":"mutable","name":"signature","nameLocation":"147:9:24","nodeType":"VariableDeclaration","scope":4169,"src":"132:24:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4163,"name":"bytes","nodeType":"ElementaryTypeName","src":"132:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"115:42:24"},"returnParameters":{"id":4168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4169,"src":"205:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4166,"name":"bytes4","nodeType":"ElementaryTypeName","src":"205:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"204:8:24"},"scope":4170,"src":"90:123:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4171,"src":"57:158:24","usedErrors":[]}],"src":"32:183:24"},"id":24},"contracts/interfaces/IERC4907.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC4907.sol","exportedSymbols":{"IERC4907":[4220]},"id":4221,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4172,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:25"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC4907","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4220,"linearizedBaseContracts":[4220],"name":"IERC4907","nameLocation":"67:8:25","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"d0d4d2465fbaaa658444f22a71af0576dc66d910f58504ac3091a8f2e7e0462d","id":4180,"name":"UpdateUser","nameLocation":"89:10:25","nodeType":"EventDefinition","parameters":{"id":4179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4174,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"116:7:25","nodeType":"VariableDeclaration","scope":4180,"src":"100:23:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4173,"name":"uint256","nodeType":"ElementaryTypeName","src":"100:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4176,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"141:4:25","nodeType":"VariableDeclaration","scope":4180,"src":"125:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4175,"name":"address","nodeType":"ElementaryTypeName","src":"125:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4178,"indexed":false,"mutability":"mutable","name":"expires","nameLocation":"155:7:25","nodeType":"VariableDeclaration","scope":4180,"src":"147:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4177,"name":"uint256","nodeType":"ElementaryTypeName","src":"147:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"99:64:25"},"src":"83:81:25"},{"functionSelector":"c6c3bbe6","id":4191,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"179:4:25","nodeType":"FunctionDefinition","parameters":{"id":4187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4182,"mutability":"mutable","name":"to","nameLocation":"192:2:25","nodeType":"VariableDeclaration","scope":4191,"src":"184:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4181,"name":"address","nodeType":"ElementaryTypeName","src":"184:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4184,"mutability":"mutable","name":"tokenAddress","nameLocation":"204:12:25","nodeType":"VariableDeclaration","scope":4191,"src":"196:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4183,"name":"address","nodeType":"ElementaryTypeName","src":"196:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4186,"mutability":"mutable","name":"tokenId","nameLocation":"226:7:25","nodeType":"VariableDeclaration","scope":4191,"src":"218:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4185,"name":"uint256","nodeType":"ElementaryTypeName","src":"218:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"183:51:25"},"returnParameters":{"id":4190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4191,"src":"253:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4188,"name":"uint256","nodeType":"ElementaryTypeName","src":"253:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"252:9:25"},"scope":4220,"src":"170:92:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"42966c68","id":4196,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"277:4:25","nodeType":"FunctionDefinition","parameters":{"id":4194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4193,"mutability":"mutable","name":"tokenId","nameLocation":"290:7:25","nodeType":"VariableDeclaration","scope":4196,"src":"282:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4192,"name":"uint256","nodeType":"ElementaryTypeName","src":"282:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"281:17:25"},"returnParameters":{"id":4195,"nodeType":"ParameterList","parameters":[],"src":"307:0:25"},"scope":4220,"src":"268:40:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1b8a910d","id":4205,"implemented":false,"kind":"function","modifiers":[],"name":"setUser","nameLocation":"323:7:25","nodeType":"FunctionDefinition","parameters":{"id":4203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4198,"mutability":"mutable","name":"tokenId","nameLocation":"339:7:25","nodeType":"VariableDeclaration","scope":4205,"src":"331:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4197,"name":"uint256","nodeType":"ElementaryTypeName","src":"331:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4200,"mutability":"mutable","name":"user","nameLocation":"356:4:25","nodeType":"VariableDeclaration","scope":4205,"src":"348:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4199,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4202,"mutability":"mutable","name":"expires","nameLocation":"370:7:25","nodeType":"VariableDeclaration","scope":4205,"src":"362:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4201,"name":"uint256","nodeType":"ElementaryTypeName","src":"362:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"330:48:25"},"returnParameters":{"id":4204,"nodeType":"ParameterList","parameters":[],"src":"387:0:25"},"scope":4220,"src":"314:74:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c2f1f14a","id":4212,"implemented":false,"kind":"function","modifiers":[],"name":"userOf","nameLocation":"403:6:25","nodeType":"FunctionDefinition","parameters":{"id":4208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4207,"mutability":"mutable","name":"tokenId","nameLocation":"418:7:25","nodeType":"VariableDeclaration","scope":4212,"src":"410:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4206,"name":"uint256","nodeType":"ElementaryTypeName","src":"410:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"409:17:25"},"returnParameters":{"id":4211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4212,"src":"450:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4209,"name":"address","nodeType":"ElementaryTypeName","src":"450:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"449:9:25"},"scope":4220,"src":"394:65:25","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8fc88c48","id":4219,"implemented":false,"kind":"function","modifiers":[],"name":"userExpires","nameLocation":"474:11:25","nodeType":"FunctionDefinition","parameters":{"id":4215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4214,"mutability":"mutable","name":"tokenId","nameLocation":"494:7:25","nodeType":"VariableDeclaration","scope":4219,"src":"486:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4213,"name":"uint256","nodeType":"ElementaryTypeName","src":"486:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"485:17:25"},"returnParameters":{"id":4218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4219,"src":"526:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4216,"name":"uint256","nodeType":"ElementaryTypeName","src":"526:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"525:9:25"},"scope":4220,"src":"465:70:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4221,"src":"57:480:25","usedErrors":[]}],"src":"32:505:25"},"id":25},"contracts/interfaces/MathUtil.sol":{"ast":{"absolutePath":"contracts/interfaces/MathUtil.sol","exportedSymbols":{"MathUtil":[4240]},"id":4241,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4222,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"33:23:26"},{"abstract":false,"baseContracts":[],"canonicalName":"MathUtil","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4240,"linearizedBaseContracts":[4240],"name":"MathUtil","nameLocation":"66:8:26","nodeType":"ContractDefinition","nodes":[{"body":{"id":4238,"nodeType":"Block","src":"148:37:26","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4231,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4224,"src":"165:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4232,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4226,"src":"169:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"165:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4235,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4226,"src":"177:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"165:13:26","trueExpression":{"id":4234,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4224,"src":"173:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4230,"id":4237,"nodeType":"Return","src":"158:20:26"}]},"id":4239,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"90:3:26","nodeType":"FunctionDefinition","parameters":{"id":4227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4224,"mutability":"mutable","name":"a","nameLocation":"102:1:26","nodeType":"VariableDeclaration","scope":4239,"src":"94:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4223,"name":"uint256","nodeType":"ElementaryTypeName","src":"94:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4226,"mutability":"mutable","name":"b","nameLocation":"113:1:26","nodeType":"VariableDeclaration","scope":4239,"src":"105:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4225,"name":"uint256","nodeType":"ElementaryTypeName","src":"105:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"93:22:26"},"returnParameters":{"id":4230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4239,"src":"139:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4228,"name":"uint256","nodeType":"ElementaryTypeName","src":"139:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"138:9:26"},"scope":4240,"src":"81:104:26","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4241,"src":"58:129:26","usedErrors":[]}],"src":"33:154:26"},"id":26},"contracts/interfaces/ReentrancyErrors.sol":{"ast":{"absolutePath":"contracts/interfaces/ReentrancyErrors.sol","exportedSymbols":{"ReentrancyErrors":[4247]},"id":4248,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4242,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:27"},{"abstract":false,"baseContracts":[],"canonicalName":"ReentrancyErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4243,"nodeType":"StructuredDocumentation","src":"57:117:27","text":" @title ReentrancyErrors\n @author 0age\n @notice ReentrancyErrors contains errors related to reentrancy."},"fullyImplemented":true,"id":4247,"linearizedBaseContracts":[4247],"name":"ReentrancyErrors","nameLocation":"185:16:27","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4244,"nodeType":"StructuredDocumentation","src":"208:112:27","text":" @dev Revert with an error when a caller attempts to reenter a protected\n      function."},"errorSelector":"7fa8a987","id":4246,"name":"NoReentrantCalls","nameLocation":"331:16:27","nodeType":"ErrorDefinition","parameters":{"id":4245,"nodeType":"ParameterList","parameters":[],"src":"347:2:27"},"src":"325:25:27"}],"scope":4248,"src":"175:177:27","usedErrors":[4246]}],"src":"32:321:27"},"id":27},"contracts/interfaces/SignatureVerificationErrors.sol":{"ast":{"absolutePath":"contracts/interfaces/SignatureVerificationErrors.sol","exportedSymbols":{"SignatureVerificationErrors":[4265]},"id":4266,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4249,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:28"},{"abstract":false,"baseContracts":[],"canonicalName":"SignatureVerificationErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4250,"nodeType":"StructuredDocumentation","src":"57:166:28","text":" @title SignatureVerificationErrors\n @author 0age\n @notice SignatureVerificationErrors contains all errors related to signature\n         verification."},"fullyImplemented":true,"id":4265,"linearizedBaseContracts":[4265],"name":"SignatureVerificationErrors","nameLocation":"234:27:28","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4251,"nodeType":"StructuredDocumentation","src":"268:180:28","text":" @dev Revert with an error when a signature that does not contain a v\n      value of 27 or 28 has been supplied.\n @param v The invalid v value."},"errorSelector":"1f003d0a","id":4255,"name":"BadSignatureV","nameLocation":"459:13:28","nodeType":"ErrorDefinition","parameters":{"id":4254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4253,"mutability":"mutable","name":"v","nameLocation":"479:1:28","nodeType":"VariableDeclaration","scope":4255,"src":"473:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4252,"name":"uint8","nodeType":"ElementaryTypeName","src":"473:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"472:9:28"},"src":"453:29:28"},{"documentation":{"id":4256,"nodeType":"StructuredDocumentation","src":"488:239:28","text":" @dev Revert with an error when the signer recovered by the supplied\n      signature does not match the offerer or an allowed EIP-1271 signer\n      as specified by the offerer in the event they are a contract."},"errorSelector":"815e1d64","id":4258,"name":"InvalidSigner","nameLocation":"738:13:28","nodeType":"ErrorDefinition","parameters":{"id":4257,"nodeType":"ParameterList","parameters":[],"src":"751:2:28"},"src":"732:22:28"},{"documentation":{"id":4259,"nodeType":"StructuredDocumentation","src":"760:119:28","text":" @dev Revert with an error when a signer cannot be recovered from the\n      supplied signature."},"errorSelector":"8baa579f","id":4261,"name":"InvalidSignature","nameLocation":"890:16:28","nodeType":"ErrorDefinition","parameters":{"id":4260,"nodeType":"ParameterList","parameters":[],"src":"906:2:28"},"src":"884:25:28"},{"documentation":{"id":4262,"nodeType":"StructuredDocumentation","src":"915:87:28","text":" @dev Revert with an error when an EIP-1271 call to an account fails."},"errorSelector":"4f7fb80d","id":4264,"name":"BadContractSignature","nameLocation":"1013:20:28","nodeType":"ErrorDefinition","parameters":{"id":4263,"nodeType":"ParameterList","parameters":[],"src":"1033:2:28"},"src":"1007:29:28"}],"scope":4266,"src":"224:814:28","usedErrors":[4255,4258,4261,4264]}],"src":"32:1007:28"},"id":28},"contracts/interfaces/TokenTransferrerErrors.sol":{"ast":{"absolutePath":"contracts/interfaces/TokenTransferrerErrors.sol","exportedSymbols":{"TokenTransferrerErrors":[4325]},"id":4326,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4267,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:29"},{"abstract":false,"baseContracts":[],"canonicalName":"TokenTransferrerErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4268,"nodeType":"StructuredDocumentation","src":"57:40:29","text":" @title TokenTransferrerErrors"},"fullyImplemented":true,"id":4325,"linearizedBaseContracts":[4325],"name":"TokenTransferrerErrors","nameLocation":"108:22:29","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4269,"nodeType":"StructuredDocumentation","src":"137:121:29","text":" @dev Revert with an error when an ERC721 transfer with amount other than\n      one is attempted."},"errorSelector":"efcc00b1","id":4271,"name":"InvalidERC721TransferAmount","nameLocation":"269:27:29","nodeType":"ErrorDefinition","parameters":{"id":4270,"nodeType":"ParameterList","parameters":[],"src":"296:2:29"},"src":"263:36:29"},{"documentation":{"id":4272,"nodeType":"StructuredDocumentation","src":"305:129:29","text":" @dev Revert with an error when attempting to fulfill an order where an\n      item has an amount of zero."},"errorSelector":"91b3e514","id":4274,"name":"MissingItemAmount","nameLocation":"445:17:29","nodeType":"ErrorDefinition","parameters":{"id":4273,"nodeType":"ParameterList","parameters":[],"src":"462:2:29"},"src":"439:26:29"},{"documentation":{"id":4275,"nodeType":"StructuredDocumentation","src":"471:427:29","text":" @dev Revert with an error when attempting to fulfill an order where an\n      item has unused parameters. This includes both the token and the\n      identifier parameters for native transfers as well as the identifier\n      parameter for ERC20 transfers. Note that the conduit does not\n      perform this check, leaving it up to the calling channel to enforce\n      when desired."},"errorSelector":"6ab37ce7","id":4277,"name":"UnusedItemParameters","nameLocation":"909:20:29","nodeType":"ErrorDefinition","parameters":{"id":4276,"nodeType":"ParameterList","parameters":[],"src":"929:2:29"},"src":"903:29:29"},{"documentation":{"id":4278,"nodeType":"StructuredDocumentation","src":"938:455:29","text":" @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\n      transfer reverts.\n @param token      The token for which the transfer was attempted.\n @param from       The source of the attempted transfer.\n @param to         The recipient of the attempted transfer.\n @param identifier The identifier for the attempted transfer.\n @param amount     The amount for the attempted transfer."},"errorSelector":"f486bc87","id":4290,"name":"TokenTransferGenericFailure","nameLocation":"1404:27:29","nodeType":"ErrorDefinition","parameters":{"id":4289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4280,"mutability":"mutable","name":"token","nameLocation":"1449:5:29","nodeType":"VariableDeclaration","scope":4290,"src":"1441:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4279,"name":"address","nodeType":"ElementaryTypeName","src":"1441:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4282,"mutability":"mutable","name":"from","nameLocation":"1472:4:29","nodeType":"VariableDeclaration","scope":4290,"src":"1464:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4281,"name":"address","nodeType":"ElementaryTypeName","src":"1464:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4284,"mutability":"mutable","name":"to","nameLocation":"1494:2:29","nodeType":"VariableDeclaration","scope":4290,"src":"1486:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4283,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4286,"mutability":"mutable","name":"identifier","nameLocation":"1514:10:29","nodeType":"VariableDeclaration","scope":4290,"src":"1506:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4285,"name":"uint256","nodeType":"ElementaryTypeName","src":"1506:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4288,"mutability":"mutable","name":"amount","nameLocation":"1542:6:29","nodeType":"VariableDeclaration","scope":4290,"src":"1534:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4287,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1431:123:29"},"src":"1398:157:29"},{"documentation":{"id":4291,"nodeType":"StructuredDocumentation","src":"1561:437:29","text":" @dev Revert with an error when a batch ERC1155 token transfer reverts.\n @param token       The token for which the transfer was attempted.\n @param from        The source of the attempted transfer.\n @param to          The recipient of the attempted transfer.\n @param identifiers The identifiers for the attempted transfer.\n @param amounts     The amounts for the attempted transfer."},"errorSelector":"afc445e2","id":4305,"name":"ERC1155BatchTransferGenericFailure","nameLocation":"2009:34:29","nodeType":"ErrorDefinition","parameters":{"id":4304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4293,"mutability":"mutable","name":"token","nameLocation":"2061:5:29","nodeType":"VariableDeclaration","scope":4305,"src":"2053:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4292,"name":"address","nodeType":"ElementaryTypeName","src":"2053:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4295,"mutability":"mutable","name":"from","nameLocation":"2084:4:29","nodeType":"VariableDeclaration","scope":4305,"src":"2076:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4294,"name":"address","nodeType":"ElementaryTypeName","src":"2076:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4297,"mutability":"mutable","name":"to","nameLocation":"2106:2:29","nodeType":"VariableDeclaration","scope":4305,"src":"2098:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4296,"name":"address","nodeType":"ElementaryTypeName","src":"2098:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4300,"mutability":"mutable","name":"identifiers","nameLocation":"2128:11:29","nodeType":"VariableDeclaration","scope":4305,"src":"2118:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4298,"name":"uint256","nodeType":"ElementaryTypeName","src":"2118:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4299,"nodeType":"ArrayTypeName","src":"2118:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4303,"mutability":"mutable","name":"amounts","nameLocation":"2159:7:29","nodeType":"VariableDeclaration","scope":4305,"src":"2149:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4301,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4302,"nodeType":"ArrayTypeName","src":"2149:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2043:129:29"},"src":"2003:170:29"},{"documentation":{"id":4306,"nodeType":"StructuredDocumentation","src":"2179:406:29","text":" @dev Revert with an error when an ERC20 token transfer returns a falsey\n      value.\n @param token      The token for which the ERC20 transfer was attempted.\n @param from       The source of the attempted ERC20 transfer.\n @param to         The recipient of the attempted ERC20 transfer.\n @param amount     The amount for the attempted ERC20 transfer."},"errorSelector":"98891923","id":4316,"name":"BadReturnValueFromERC20OnTransfer","nameLocation":"2596:33:29","nodeType":"ErrorDefinition","parameters":{"id":4315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4308,"mutability":"mutable","name":"token","nameLocation":"2647:5:29","nodeType":"VariableDeclaration","scope":4316,"src":"2639:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4307,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4310,"mutability":"mutable","name":"from","nameLocation":"2670:4:29","nodeType":"VariableDeclaration","scope":4316,"src":"2662:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4309,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4312,"mutability":"mutable","name":"to","nameLocation":"2692:2:29","nodeType":"VariableDeclaration","scope":4316,"src":"2684:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4311,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4314,"mutability":"mutable","name":"amount","nameLocation":"2712:6:29","nodeType":"VariableDeclaration","scope":4316,"src":"2704:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4313,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2629:95:29"},"src":"2590:135:29"},{"documentation":{"id":4317,"nodeType":"StructuredDocumentation","src":"2731:215:29","text":" @dev Revert with an error when an account being called as an assumed\n      contract does not have code and returns no data.\n @param account The account that should contain code."},"errorSelector":"5f15d672","id":4321,"name":"NoContract","nameLocation":"2957:10:29","nodeType":"ErrorDefinition","parameters":{"id":4320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4319,"mutability":"mutable","name":"account","nameLocation":"2976:7:29","nodeType":"VariableDeclaration","scope":4321,"src":"2968:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4318,"name":"address","nodeType":"ElementaryTypeName","src":"2968:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2967:17:29"},"src":"2951:34:29"},{"documentation":{"id":4322,"nodeType":"StructuredDocumentation","src":"2991:224:29","text":" @dev Revert with an error when attempting to execute an 1155 batch\n      transfer using calldata not produced by default ABI encoding or with\n      different lengths for ids and amounts arrays."},"errorSelector":"eba2084c","id":4324,"name":"Invalid1155BatchTransferEncoding","nameLocation":"3226:32:29","nodeType":"ErrorDefinition","parameters":{"id":4323,"nodeType":"ParameterList","parameters":[],"src":"3258:2:29"},"src":"3220:41:29"}],"scope":4326,"src":"98:3165:29","usedErrors":[4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"32:3232:29"},"id":29},"contracts/lib/Assertions.sol":{"ast":{"absolutePath":"contracts/lib/Assertions.sol","exportedSymbols":{"Assertions":[4363],"CounterManager":[5442],"GettersAndDerivers":[6031],"TokenTransferrerErrors":[4325]},"id":4364,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4327,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:30"},{"absolutePath":"contracts/lib/GettersAndDerivers.sol","file":"./GettersAndDerivers.sol","id":4329,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4364,"sourceUnit":6032,"src":"58:62:30","symbolAliases":[{"foreign":{"id":4328,"name":"GettersAndDerivers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6031,"src":"67:18:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/TokenTransferrerErrors.sol","file":"../interfaces/TokenTransferrerErrors.sol","id":4331,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4364,"sourceUnit":4326,"src":"122:86:30","symbolAliases":[{"foreign":{"id":4330,"name":"TokenTransferrerErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"135:22:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/CounterManager.sol","file":"./CounterManager.sol","id":4333,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4364,"sourceUnit":5443,"src":"210:54:30","symbolAliases":[{"foreign":{"id":4332,"name":"CounterManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5442,"src":"219:14:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4334,"name":"GettersAndDerivers","nodeType":"IdentifierPath","referencedDeclaration":6031,"src":"293:18:30"},"id":4335,"nodeType":"InheritanceSpecifier","src":"293:18:30"},{"baseName":{"id":4336,"name":"CounterManager","nodeType":"IdentifierPath","referencedDeclaration":5442,"src":"317:14:30"},"id":4337,"nodeType":"InheritanceSpecifier","src":"317:14:30"},{"baseName":{"id":4338,"name":"TokenTransferrerErrors","nodeType":"IdentifierPath","referencedDeclaration":4325,"src":"337:22:30"},"id":4339,"nodeType":"InheritanceSpecifier","src":"337:22:30"}],"canonicalName":"Assertions","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4363,"linearizedBaseContracts":[4363,4325,5442,7767,4247,4158,6031,4761],"name":"Assertions","nameLocation":"275:10:30","nodeType":"ContractDefinition","nodes":[{"body":{"id":4347,"nodeType":"Block","src":"455:2:30","statements":[]},"id":4348,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":4344,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4341,"src":"432:17:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4345,"kind":"baseConstructorSpecifier","modifierName":{"id":4343,"name":"GettersAndDerivers","nodeType":"IdentifierPath","referencedDeclaration":6031,"src":"413:18:30"},"nodeType":"ModifierInvocation","src":"413:37:30"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4341,"mutability":"mutable","name":"conduitController","nameLocation":"386:17:30","nodeType":"VariableDeclaration","scope":4348,"src":"378:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4340,"name":"address","nodeType":"ElementaryTypeName","src":"378:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"377:27:30"},"returnParameters":{"id":4346,"nodeType":"ParameterList","parameters":[],"src":"455:0:30"},"scope":4363,"src":"366:91:30","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4361,"nodeType":"Block","src":"523:143:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4353,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"596:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"606:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"596:11:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4360,"nodeType":"IfStatement","src":"592:68:30","trueBody":{"id":4359,"nodeType":"Block","src":"609:51:30","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4356,"name":"MissingItemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4274,"src":"630:17:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"630:19:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4358,"nodeType":"RevertStatement","src":"623:26:30"}]}}]},"id":4362,"implemented":true,"kind":"function","modifiers":[],"name":"_assertNonZeroAmount","nameLocation":"472:20:30","nodeType":"FunctionDefinition","parameters":{"id":4351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4350,"mutability":"mutable","name":"amount","nameLocation":"501:6:30","nodeType":"VariableDeclaration","scope":4362,"src":"493:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4349,"name":"uint256","nodeType":"ElementaryTypeName","src":"493:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"492:16:30"},"returnParameters":{"id":4352,"nodeType":"ParameterList","parameters":[],"src":"523:0:30"},"scope":4363,"src":"463:203:30","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4364,"src":"266:402:30","usedErrors":[4057,4061,4065,4069,4072,4079,4082,4087,4096,4099,4106,4109,4114,4119,4122,4125,4130,4133,4136,4139,4143,4147,4151,4155,4157,4246,4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"32:637:30"},"id":30},"contracts/lib/Consideration.sol":{"ast":{"absolutePath":"contracts/lib/Consideration.sol","exportedSymbols":{"Consideration":[4594],"Order":[5372],"OrderComponents":[5331],"OrderFulfiller":[6886],"OrderParameters":[5366],"OrderStatus":[5389]},"id":4595,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4365,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:31"},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":4370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4595,"sourceUnit":5390,"src":"58:114:31","symbolAliases":[{"foreign":{"id":4366,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"71:15:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":4367,"name":"OrderComponents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5331,"src":"92:15:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":4368,"name":"OrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5389,"src":"113:11:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":4369,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5372,"src":"130:5:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/OrderFulfiller.sol","file":"./OrderFulfiller.sol","id":4372,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4595,"sourceUnit":6887,"src":"174:58:31","symbolAliases":[{"foreign":{"id":4371,"name":"OrderFulfiller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6886,"src":"187:14:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4373,"name":"OrderFulfiller","nodeType":"IdentifierPath","referencedDeclaration":6886,"src":"260:14:31"},"id":4374,"nodeType":"InheritanceSpecifier","src":"260:14:31"}],"canonicalName":"Consideration","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4594,"linearizedBaseContracts":[4594,6886,7713,7881,5917,7995,8438,7919,6071,4265,4363,4325,5442,7767,4247,4158,6031,4761],"name":"Consideration","nameLocation":"243:13:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4379,"mutability":"mutable","name":"_orderStatus","nameLocation":"322:12:31","nodeType":"VariableDeclaration","scope":4594,"src":"282:52:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus)"},"typeName":{"id":4378,"keyType":{"id":4375,"name":"bytes32","nodeType":"ElementaryTypeName","src":"290:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"282:31:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus)"},"valueType":{"id":4377,"nodeType":"UserDefinedTypeName","pathNode":{"id":4376,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"301:11:31"},"referencedDeclaration":5389,"src":"301:11:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"}}},"visibility":"private"},{"body":{"id":4390,"nodeType":"Block","src":"448:2:31","statements":[]},"id":4391,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":4386,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4381,"src":"416:17:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4387,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4383,"src":"435:11:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4388,"kind":"baseConstructorSpecifier","modifierName":{"id":4385,"name":"OrderFulfiller","nodeType":"IdentifierPath","referencedDeclaration":6886,"src":"401:14:31"},"nodeType":"ModifierInvocation","src":"401:46:31"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4381,"mutability":"mutable","name":"conduitController","nameLocation":"361:17:31","nodeType":"VariableDeclaration","scope":4391,"src":"353:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4380,"name":"address","nodeType":"ElementaryTypeName","src":"353:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4383,"mutability":"mutable","name":"shadowToken","nameLocation":"388:11:31","nodeType":"VariableDeclaration","scope":4391,"src":"380:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4382,"name":"address","nodeType":"ElementaryTypeName","src":"380:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"352:48:31"},"returnParameters":{"id":4389,"nodeType":"ParameterList","parameters":[],"src":"448:0:31"},"scope":4594,"src":"341:109:31","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4408,"nodeType":"Block","src":"599:81:31","statements":[{"expression":{"id":4406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4401,"name":"fulfilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4399,"src":"609:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4403,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4394,"src":"646:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"}},{"id":4404,"name":"fulfillerConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"653:19:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4402,"name":"_validateAndFulfillOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6381,"src":"621:24:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Order_$5372_calldata_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct Order calldata,bytes32) returns (bool)"}},"id":4405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"621:52:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"609:64:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4407,"nodeType":"ExpressionStatement","src":"609:64:31"}]},"functionSelector":"be92d18e","id":4409,"implemented":true,"kind":"function","modifiers":[],"name":"fulfillOrder","nameLocation":"465:12:31","nodeType":"FunctionDefinition","parameters":{"id":4397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4394,"mutability":"mutable","name":"order","nameLocation":"493:5:31","nodeType":"VariableDeclaration","scope":4409,"src":"478:20:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order"},"typeName":{"id":4393,"nodeType":"UserDefinedTypeName","pathNode":{"id":4392,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":5372,"src":"478:5:31"},"referencedDeclaration":5372,"src":"478:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_storage_ptr","typeString":"struct Order"}},"visibility":"internal"},{"constant":false,"id":4396,"mutability":"mutable","name":"fulfillerConduitKey","nameLocation":"508:19:31","nodeType":"VariableDeclaration","scope":4409,"src":"500:27:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"500:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"477:51:31"},"returnParameters":{"id":4400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4399,"mutability":"mutable","name":"fulfilled","nameLocation":"584:9:31","nodeType":"VariableDeclaration","scope":4409,"src":"579:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4398,"name":"bool","nodeType":"ElementaryTypeName","src":"579:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"578:16:31"},"scope":4594,"src":"456:224:31","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":4429,"nodeType":"Block","src":"857:91:31","statements":[{"expression":{"id":4427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4421,"name":"repaid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4419,"src":"867:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4423,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4412,"src":"899:10:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":4424,"name":"fulfillerConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4414,"src":"911:19:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4425,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"932:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4422,"name":"_validateAndRepayOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6494,"src":"876:22:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_bytes32_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct OrderParameters calldata,bytes32,uint256) returns (bool)"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"876:65:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"867:74:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4428,"nodeType":"ExpressionStatement","src":"867:74:31"}]},"functionSelector":"d9e53411","id":4430,"implemented":true,"kind":"function","modifiers":[],"name":"repayOrder","nameLocation":"695:10:31","nodeType":"FunctionDefinition","parameters":{"id":4417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4412,"mutability":"mutable","name":"parameters","nameLocation":"731:10:31","nodeType":"VariableDeclaration","scope":4430,"src":"706:35:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":4411,"nodeType":"UserDefinedTypeName","pathNode":{"id":4410,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"706:15:31"},"referencedDeclaration":5366,"src":"706:15:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":4414,"mutability":"mutable","name":"fulfillerConduitKey","nameLocation":"751:19:31","nodeType":"VariableDeclaration","scope":4430,"src":"743:27:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4413,"name":"bytes32","nodeType":"ElementaryTypeName","src":"743:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4416,"mutability":"mutable","name":"payTimes","nameLocation":"780:8:31","nodeType":"VariableDeclaration","scope":4430,"src":"772:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4415,"name":"uint256","nodeType":"ElementaryTypeName","src":"772:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"705:84:31"},"returnParameters":{"id":4420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4419,"mutability":"mutable","name":"repaid","nameLocation":"845:6:31","nodeType":"VariableDeclaration","scope":4430,"src":"840:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4418,"name":"bool","nodeType":"ElementaryTypeName","src":"840:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"839:13:31"},"scope":4594,"src":"686:262:31","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":4444,"nodeType":"Block","src":"1062:60:31","statements":[{"expression":{"id":4442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4438,"name":"broken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4436,"src":"1072:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4440,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"1104:10:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}],"id":4439,"name":"_validateAndBreakOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6568,"src":"1081:22:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct OrderParameters calldata) returns (bool)"}},"id":4441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1081:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1072:43:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4443,"nodeType":"ExpressionStatement","src":"1072:43:31"}]},"functionSelector":"a3210e7c","id":4445,"implemented":true,"kind":"function","modifiers":[],"name":"breakOrder","nameLocation":"963:10:31","nodeType":"FunctionDefinition","parameters":{"id":4434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4433,"mutability":"mutable","name":"parameters","nameLocation":"999:10:31","nodeType":"VariableDeclaration","scope":4445,"src":"974:35:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":4432,"nodeType":"UserDefinedTypeName","pathNode":{"id":4431,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"974:15:31"},"referencedDeclaration":5366,"src":"974:15:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"src":"973:37:31"},"returnParameters":{"id":4437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4436,"mutability":"mutable","name":"broken","nameLocation":"1050:6:31","nodeType":"VariableDeclaration","scope":4445,"src":"1045:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4435,"name":"bool","nodeType":"ElementaryTypeName","src":"1045:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1044:13:31"},"scope":4594,"src":"954:168:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4460,"nodeType":"Block","src":"1233:44:31","statements":[{"expression":{"id":4458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4454,"name":"cancelled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"1243:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4456,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4449,"src":"1263:6:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents calldata[] calldata"}],"id":4455,"name":"_cancel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7522,"src":"1255:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct OrderComponents calldata[] calldata) returns (bool)"}},"id":4457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1255:15:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1243:27:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4459,"nodeType":"ExpressionStatement","src":"1243:27:31"}]},"functionSelector":"9432cc1d","id":4461,"implemented":true,"kind":"function","modifiers":[],"name":"cancel","nameLocation":"1137:6:31","nodeType":"FunctionDefinition","parameters":{"id":4450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4449,"mutability":"mutable","name":"orders","nameLocation":"1171:6:31","nodeType":"VariableDeclaration","scope":4461,"src":"1144:33:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents[]"},"typeName":{"baseType":{"id":4447,"nodeType":"UserDefinedTypeName","pathNode":{"id":4446,"name":"OrderComponents","nodeType":"IdentifierPath","referencedDeclaration":5331,"src":"1144:15:31"},"referencedDeclaration":5331,"src":"1144:15:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_storage_ptr","typeString":"struct OrderComponents"}},"id":4448,"nodeType":"ArrayTypeName","src":"1144:17:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$5331_storage_$dyn_storage_ptr","typeString":"struct OrderComponents[]"}},"visibility":"internal"}],"src":"1143:35:31"},"returnParameters":{"id":4453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4452,"mutability":"mutable","name":"cancelled","nameLocation":"1218:9:31","nodeType":"VariableDeclaration","scope":4461,"src":"1213:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4451,"name":"bool","nodeType":"ElementaryTypeName","src":"1213:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1212:16:31"},"scope":4594,"src":"1128:149:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4476,"nodeType":"Block","src":"1380:46:31","statements":[{"expression":{"id":4474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4470,"name":"validated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4468,"src":"1390:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4472,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4465,"src":"1412:6:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order calldata[] calldata"}],"id":4471,"name":"_validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7665,"src":"1402:9:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct Order calldata[] calldata) returns (bool)"}},"id":4473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1402:17:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1390:29:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4475,"nodeType":"ExpressionStatement","src":"1390:29:31"}]},"functionSelector":"22378003","id":4477,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"1292:8:31","nodeType":"FunctionDefinition","parameters":{"id":4466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4465,"mutability":"mutable","name":"orders","nameLocation":"1318:6:31","nodeType":"VariableDeclaration","scope":4477,"src":"1301:23:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order[]"},"typeName":{"baseType":{"id":4463,"nodeType":"UserDefinedTypeName","pathNode":{"id":4462,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":5372,"src":"1301:5:31"},"referencedDeclaration":5372,"src":"1301:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_storage_ptr","typeString":"struct Order"}},"id":4464,"nodeType":"ArrayTypeName","src":"1301:7:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$5372_storage_$dyn_storage_ptr","typeString":"struct Order[]"}},"visibility":"internal"}],"src":"1300:25:31"},"returnParameters":{"id":4469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4468,"mutability":"mutable","name":"validated","nameLocation":"1365:9:31","nodeType":"VariableDeclaration","scope":4477,"src":"1360:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4467,"name":"bool","nodeType":"ElementaryTypeName","src":"1360:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1359:16:31"},"scope":4594,"src":"1283:143:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4487,"nodeType":"Block","src":"1498:49:31","statements":[{"expression":{"id":4485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4482,"name":"newCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4480,"src":"1508:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":4483,"name":"_incrementCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5427,"src":"1521:17:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":4484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1521:19:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1508:32:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4486,"nodeType":"ExpressionStatement","src":"1508:32:31"}]},"functionSelector":"5b34b966","id":4488,"implemented":true,"kind":"function","modifiers":[],"name":"incrementCounter","nameLocation":"1441:16:31","nodeType":"FunctionDefinition","parameters":{"id":4478,"nodeType":"ParameterList","parameters":[],"src":"1457:2:31"},"returnParameters":{"id":4481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4480,"mutability":"mutable","name":"newCounter","nameLocation":"1486:10:31","nodeType":"VariableDeclaration","scope":4488,"src":"1478:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4479,"name":"uint256","nodeType":"ElementaryTypeName","src":"1478:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1477:20:31"},"scope":4594,"src":"1432:115:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4539,"nodeType":"Block","src":"1677:654:31","statements":[{"expression":{"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4496,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4494,"src":"1687:9:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":4499,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"1762:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5296,"src":"1762:13:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4501,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"1793:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":5298,"src":"1793:11:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4503,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"1822:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":5300,"src":"1822:16:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4505,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"1856:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":5302,"src":"1856:14:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4507,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"1888:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":5304,"src":"1888:12:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4509,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"1918:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":5306,"src":"1918:14:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4511,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"1950:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":5308,"src":"1950:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4513,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"1983:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"endTime","nodeType":"MemberAccess","referencedDeclaration":5310,"src":"1983:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4515,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2014:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":5312,"src":"2014:14:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4517,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2046:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5314,"src":"2046:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4519,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2077:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5316,"src":"2077:12:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4521,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2107:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":5318,"src":"2107:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4523,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2136:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":5320,"src":"2136:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4525,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2167:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":5322,"src":"2167:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4527,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2194:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawFee","nodeType":"MemberAccess","referencedDeclaration":5324,"src":"2194:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4529,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2229:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":5326,"src":"2229:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4531,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2257:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":5328,"src":"2257:16:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"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"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4498,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"1729:15:31","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OrderParameters_$5366_storage_ptr_$","typeString":"type(struct OrderParameters storage pointer)"}},"id":4533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1729:558:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_memory_ptr","typeString":"struct OrderParameters memory"}},{"expression":{"id":4534,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"2301:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":4535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"counter","nodeType":"MemberAccess","referencedDeclaration":5330,"src":"2301:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_memory_ptr","typeString":"struct OrderParameters memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4497,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"1699:16:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$5366_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":4536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1699:625:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1687:637:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4538,"nodeType":"ExpressionStatement","src":"1687:637:31"}]},"functionSelector":"b86ae9e1","id":4540,"implemented":true,"kind":"function","modifiers":[],"name":"getOrderHash","nameLocation":"1562:12:31","nodeType":"FunctionDefinition","parameters":{"id":4492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4491,"mutability":"mutable","name":"order","nameLocation":"1600:5:31","nodeType":"VariableDeclaration","scope":4540,"src":"1575:30:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents"},"typeName":{"id":4490,"nodeType":"UserDefinedTypeName","pathNode":{"id":4489,"name":"OrderComponents","nodeType":"IdentifierPath","referencedDeclaration":5331,"src":"1575:15:31"},"referencedDeclaration":5331,"src":"1575:15:31","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_storage_ptr","typeString":"struct OrderComponents"}},"visibility":"internal"}],"src":"1574:32:31"},"returnParameters":{"id":4495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4494,"mutability":"mutable","name":"orderHash","nameLocation":"1662:9:31","nodeType":"VariableDeclaration","scope":4540,"src":"1654:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4493,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1654:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1653:19:31"},"scope":4594,"src":"1553:778:31","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":4565,"nodeType":"Block","src":"2681:50:31","statements":[{"expression":{"arguments":[{"id":4562,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4542,"src":"2714:9:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4561,"name":"_getOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7712,"src":"2698:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (bytes32) view returns (bool,bool,bool,bool,address,uint256,uint256,uint256)"}},"id":4563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2698:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,bool,bool,bool,address,uint256,uint256,uint256)"}},"functionReturnParameters":4560,"id":4564,"nodeType":"Return","src":"2691:33:31"}]},"functionSelector":"46423aa7","id":4566,"implemented":true,"kind":"function","modifiers":[],"name":"getOrderStatus","nameLocation":"2346:14:31","nodeType":"FunctionDefinition","parameters":{"id":4543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4542,"mutability":"mutable","name":"orderHash","nameLocation":"2369:9:31","nodeType":"VariableDeclaration","scope":4566,"src":"2361:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4541,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2361:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2360:19:31"},"returnParameters":{"id":4560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4545,"mutability":"mutable","name":"isValidated","nameLocation":"2445:11:31","nodeType":"VariableDeclaration","scope":4566,"src":"2440:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4544,"name":"bool","nodeType":"ElementaryTypeName","src":"2440:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4547,"mutability":"mutable","name":"isCancelled","nameLocation":"2475:11:31","nodeType":"VariableDeclaration","scope":4566,"src":"2470:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4546,"name":"bool","nodeType":"ElementaryTypeName","src":"2470:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4549,"mutability":"mutable","name":"isFinalized","nameLocation":"2505:11:31","nodeType":"VariableDeclaration","scope":4566,"src":"2500:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4548,"name":"bool","nodeType":"ElementaryTypeName","src":"2500:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4551,"mutability":"mutable","name":"isBroken","nameLocation":"2535:8:31","nodeType":"VariableDeclaration","scope":4566,"src":"2530:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4550,"name":"bool","nodeType":"ElementaryTypeName","src":"2530:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4553,"mutability":"mutable","name":"fulfiller","nameLocation":"2565:9:31","nodeType":"VariableDeclaration","scope":4566,"src":"2557:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4552,"name":"address","nodeType":"ElementaryTypeName","src":"2557:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4555,"mutability":"mutable","name":"startedAt","nameLocation":"2596:9:31","nodeType":"VariableDeclaration","scope":4566,"src":"2588:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4554,"name":"uint256","nodeType":"ElementaryTypeName","src":"2588:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4557,"mutability":"mutable","name":"shadowId","nameLocation":"2627:8:31","nodeType":"VariableDeclaration","scope":4566,"src":"2619:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4556,"name":"uint256","nodeType":"ElementaryTypeName","src":"2619:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4559,"mutability":"mutable","name":"paidTimes","nameLocation":"2657:9:31","nodeType":"VariableDeclaration","scope":4566,"src":"2649:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4558,"name":"uint256","nodeType":"ElementaryTypeName","src":"2649:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2426:250:31"},"scope":4594,"src":"2337:394:31","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":4579,"nodeType":"Block","src":"2842:47:31","statements":[{"expression":{"id":4577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4573,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4571,"src":"2852:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4575,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"2874:7:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4574,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5441,"src":"2862:11:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2862:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2852:30:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4578,"nodeType":"ExpressionStatement","src":"2852:30:31"}]},"functionSelector":"f07ec373","id":4580,"implemented":true,"kind":"function","modifiers":[],"name":"getCounter","nameLocation":"2746:10:31","nodeType":"FunctionDefinition","parameters":{"id":4569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4568,"mutability":"mutable","name":"offerer","nameLocation":"2765:7:31","nodeType":"VariableDeclaration","scope":4580,"src":"2757:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4567,"name":"address","nodeType":"ElementaryTypeName","src":"2757:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2756:17:31"},"returnParameters":{"id":4572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4571,"mutability":"mutable","name":"counter","nameLocation":"2829:7:31","nodeType":"VariableDeclaration","scope":4580,"src":"2821:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4570,"name":"uint256","nodeType":"ElementaryTypeName","src":"2821:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2820:17:31"},"scope":4594,"src":"2737:152:31","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":4592,"nodeType":"Block","src":"3090:38:31","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4589,"name":"_information","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6018,"src":"3107:12:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_bytes32_$_t_address_$","typeString":"function () view returns (string memory,bytes32,address)"}},"id":4590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3107:14:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_bytes32_$_t_address_$","typeString":"tuple(string memory,bytes32,address)"}},"functionReturnParameters":4588,"id":4591,"nodeType":"Return","src":"3100:21:31"}]},"functionSelector":"f47b7740","id":4593,"implemented":true,"kind":"function","modifiers":[],"name":"information","nameLocation":"2904:11:31","nodeType":"FunctionDefinition","parameters":{"id":4581,"nodeType":"ParameterList","parameters":[],"src":"2915:2:31"},"returnParameters":{"id":4588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4583,"mutability":"mutable","name":"version","nameLocation":"2992:7:31","nodeType":"VariableDeclaration","scope":4593,"src":"2978:21:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4582,"name":"string","nodeType":"ElementaryTypeName","src":"2978:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4585,"mutability":"mutable","name":"domainSeparator","nameLocation":"3021:15:31","nodeType":"VariableDeclaration","scope":4593,"src":"3013:23:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4584,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3013:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4587,"mutability":"mutable","name":"conduitController","nameLocation":"3058:17:31","nodeType":"VariableDeclaration","scope":4593,"src":"3050:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4586,"name":"address","nodeType":"ElementaryTypeName","src":"3050:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2964:121:31"},"scope":4594,"src":"2895:233:31","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4595,"src":"234:2896:31","usedErrors":[4057,4061,4065,4069,4072,4079,4082,4087,4096,4099,4106,4109,4114,4119,4122,4125,4130,4133,4136,4139,4143,4147,4151,4155,4157,4246,4255,4258,4261,4264,4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"32:3098:31"},"id":31},"contracts/lib/ConsiderationBase.sol":{"ast":{"absolutePath":"contracts/lib/ConsiderationBase.sol","exportedSymbols":{"ConduitControllerInterface":[3932],"ConsiderationBase":[4761]},"id":4762,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4596,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:32"},{"absolutePath":"contracts/interfaces/ConduitControllerInterface.sol","file":"../interfaces/ConduitControllerInterface.sol","id":4598,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4762,"sourceUnit":3933,"src":"58:94:32","symbolAliases":[{"foreign":{"id":4597,"name":"ConduitControllerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3932,"src":"71:26:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ConsiderationBase","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4761,"linearizedBaseContracts":[4761],"name":"ConsiderationBase","nameLocation":"163:17:32","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4600,"mutability":"immutable","name":"_NAME_HASH","nameLocation":"214:10:32","nodeType":"VariableDeclaration","scope":4761,"src":"187:37:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4599,"name":"bytes32","nodeType":"ElementaryTypeName","src":"187:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4602,"mutability":"immutable","name":"_VERSION_HASH","nameLocation":"257:13:32","nodeType":"VariableDeclaration","scope":4761,"src":"230:40:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"230:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4604,"mutability":"immutable","name":"_EIP_712_DOMAIN_TYPEHASH","nameLocation":"303:24:32","nodeType":"VariableDeclaration","scope":4761,"src":"276:51:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"276:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4606,"mutability":"immutable","name":"_ORDER_TYPEHASH","nameLocation":"360:15:32","nodeType":"VariableDeclaration","scope":4761,"src":"333:42:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4605,"name":"bytes32","nodeType":"ElementaryTypeName","src":"333:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4608,"mutability":"immutable","name":"_CHAIN_ID","nameLocation":"408:9:32","nodeType":"VariableDeclaration","scope":4761,"src":"381:36:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4607,"name":"uint256","nodeType":"ElementaryTypeName","src":"381:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4610,"mutability":"immutable","name":"_DOMAIN_SEPARATOR","nameLocation":"450:17:32","nodeType":"VariableDeclaration","scope":4761,"src":"423:44:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"423:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4613,"mutability":"immutable","name":"_CONDUIT_CONTROLLER","nameLocation":"520:19:32","nodeType":"VariableDeclaration","scope":4761,"src":"474:65:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"},"typeName":{"id":4612,"nodeType":"UserDefinedTypeName","pathNode":{"id":4611,"name":"ConduitControllerInterface","nodeType":"IdentifierPath","referencedDeclaration":3932,"src":"474:26:32"},"referencedDeclaration":3932,"src":"474:26:32","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"}},"visibility":"internal"},{"constant":false,"id":4615,"mutability":"immutable","name":"_CONDUIT_CREATION_CODE_HASH","nameLocation":"572:27:32","nodeType":"VariableDeclaration","scope":4761,"src":"545:54:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4614,"name":"bytes32","nodeType":"ElementaryTypeName","src":"545:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"body":{"id":4653,"nodeType":"Block","src":"645:446:32","statements":[{"expression":{"id":4627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4620,"name":"_NAME_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4600,"src":"669:10:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4621,"name":"_VERSION_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"693:13:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4622,"name":"_EIP_712_DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"720:24:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4623,"name":"_ORDER_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"758:15:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4624,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"655:128:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32,bytes32,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":4625,"name":"_deriveTypehashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4760,"src":"786:17:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$","typeString":"function () pure returns (bytes32,bytes32,bytes32,bytes32)"}},"id":4626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"786:19:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32,bytes32,bytes32)"}},"src":"655:150:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4628,"nodeType":"ExpressionStatement","src":"655:150:32"},{"expression":{"id":4632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4629,"name":"_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"816:9:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4630,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"828:5:32","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"chainid","nodeType":"MemberAccess","src":"828:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"816:25:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4633,"nodeType":"ExpressionStatement","src":"816:25:32"},{"expression":{"id":4637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4634,"name":"_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"851:17:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":4635,"name":"_deriveDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4675,"src":"871:22:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":4636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"871:24:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"851:44:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4638,"nodeType":"ExpressionStatement","src":"851:44:32"},{"expression":{"id":4643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4639,"name":"_CONDUIT_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4613,"src":"906:19:32","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4641,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4617,"src":"955:17:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4640,"name":"ConduitControllerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3932,"src":"928:26:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ConduitControllerInterface_$3932_$","typeString":"type(contract ConduitControllerInterface)"}},"id":4642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"928:45:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"}},"src":"906:67:32","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"}},"id":4644,"nodeType":"ExpressionStatement","src":"906:67:32"},{"expression":{"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4645,"name":"_CONDUIT_CREATION_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"985:27:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},null],"id":4646,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"984:31:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$__$","typeString":"tuple(bytes32,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4647,"name":"_CONDUIT_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4613,"src":"1032:19:32","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"}},"id":4648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getConduitCodeHashes","nodeType":"MemberAccess","referencedDeclaration":3931,"src":"1032:40:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$_t_bytes32_$","typeString":"function () view external returns (bytes32,bytes32)"}},"id":4649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1032:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}}],"id":4650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1018:66:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"src":"984:100:32","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4652,"nodeType":"ExpressionStatement","src":"984:100:32"}]},"id":4654,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4617,"mutability":"mutable","name":"conduitController","nameLocation":"626:17:32","nodeType":"VariableDeclaration","scope":4654,"src":"618:25:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4616,"name":"address","nodeType":"ElementaryTypeName","src":"618:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"617:27:32"},"returnParameters":{"id":4619,"nodeType":"ParameterList","parameters":[],"src":"645:0:32"},"scope":4761,"src":"606:485:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4674,"nodeType":"Block","src":"1163:244:32","statements":[{"expression":{"arguments":[{"arguments":[{"id":4662,"name":"_EIP_712_DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"1231:24:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4663,"name":"_NAME_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4600,"src":"1273:10:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4664,"name":"_VERSION_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"1301:13:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":4665,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1332:5:32","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"chainid","nodeType":"MemberAccess","src":"1332:13:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":4669,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1371:4:32","typeDescriptions":{"typeIdentifier":"t_contract$_ConsiderationBase_$4761","typeString":"contract ConsiderationBase"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ConsiderationBase_$4761","typeString":"contract ConsiderationBase"}],"id":4668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1363:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4667,"name":"address","nodeType":"ElementaryTypeName","src":"1363:7:32","typeDescriptions":{}}},"id":4670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1363:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4660,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1203:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1203:10:32","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1203:187:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4659,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1180:9:32","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1180:220:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4658,"id":4673,"nodeType":"Return","src":"1173:227:32"}]},"id":4675,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveDomainSeparator","nameLocation":"1106:22:32","nodeType":"FunctionDefinition","parameters":{"id":4655,"nodeType":"ParameterList","parameters":[],"src":"1128:2:32"},"returnParameters":{"id":4658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4657,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4675,"src":"1154:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4656,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1154:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1153:9:32"},"scope":4761,"src":"1097:310:32","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4682,"nodeType":"Block","src":"1482:39:32","statements":[{"expression":{"hexValue":"436f6e73696465726174696f6e","id":4680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1499:15:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_64987f6373075400d7cbff689f2b7bc23753c7e6ce20688196489b8f5d9d7e6c","typeString":"literal_string \"Consideration\""},"value":"Consideration"},"functionReturnParameters":4679,"id":4681,"nodeType":"Return","src":"1492:22:32"}]},"id":4683,"implemented":true,"kind":"function","modifiers":[],"name":"_nameString","nameLocation":"1422:11:32","nodeType":"FunctionDefinition","parameters":{"id":4676,"nodeType":"ParameterList","parameters":[],"src":"1433:2:32"},"returnParameters":{"id":4679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4683,"src":"1467:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4677,"name":"string","nodeType":"ElementaryTypeName","src":"1467:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1466:15:32"},"scope":4761,"src":"1413:108:32","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":4759,"nodeType":"Block","src":"1757:1261:32","statements":[{"expression":{"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4694,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4686,"src":"1767:8:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4698,"name":"_nameString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4683,"src":"1794:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1794:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1788:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4696,"name":"bytes","nodeType":"ElementaryTypeName","src":"1788:5:32","typeDescriptions":{}}},"id":4700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1788:20:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4695,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1778:9:32","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1778:31:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1767:42:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4703,"nodeType":"ExpressionStatement","src":"1767:42:32"},{"expression":{"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4704,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4688,"src":"1820:11:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"312e30","id":4708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1850:5:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3","typeString":"literal_string \"1.0\""},"value":"1.0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3","typeString":"literal_string \"1.0\""}],"id":4707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1844:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4706,"name":"bytes","nodeType":"ElementaryTypeName","src":"1844:5:32","typeDescriptions":{}}},"id":4709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1844:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4705,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1834:9:32","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1834:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1820:37:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4712,"nodeType":"ExpressionStatement","src":"1820:37:32"},{"assignments":[4714],"declarations":[{"constant":false,"id":4714,"mutability":"mutable","name":"orderComponentsTypeString","nameLocation":"1881:25:32","nodeType":"VariableDeclaration","scope":4759,"src":"1868:38:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4713,"name":"bytes","nodeType":"ElementaryTypeName","src":"1868:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4738,"initialValue":{"arguments":[{"hexValue":"4f72646572436f6d706f6e656e747328","id":4717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1939:18:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573","typeString":"literal_string \"OrderComponents(\""},"value":"OrderComponents("},{"hexValue":"61646472657373206f6666657265722c","id":4718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1975:18:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d","typeString":"literal_string \"address offerer,\""},"value":"address offerer,"},{"hexValue":"6164647265737320746f6b656e2c","id":4719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2011:16:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e","typeString":"literal_string \"address token,\""},"value":"address token,"},{"hexValue":"75696e74323536206964656e7469666965722c","id":4720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2045:21:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01","typeString":"literal_string \"uint256 identifier,\""},"value":"uint256 identifier,"},{"hexValue":"616464726573732063757272656e63792c","id":4721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2084:19:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703","typeString":"literal_string \"address currency,\""},"value":"address currency,"},{"hexValue":"61646472657373206172746973742c","id":4722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2121:17:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2","typeString":"literal_string \"address artist,\""},"value":"address artist,"},{"hexValue":"6164647265737320706c6174666f726d2c","id":4723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2156:19:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322","typeString":"literal_string \"address platform,\""},"value":"address platform,"},{"hexValue":"75696e7432353620737461727454696d652c","id":4724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2193:20:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54","typeString":"literal_string \"uint256 startTime,\""},"value":"uint256 startTime,"},{"hexValue":"75696e7432353620656e6454696d652c","id":4725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2231:18:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51","typeString":"literal_string \"uint256 endTime,\""},"value":"uint256 endTime,"},{"hexValue":"75696e74323536206475726174696f6e2c","id":4726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2267:19:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489","typeString":"literal_string \"uint256 duration,\""},"value":"uint256 duration,"},{"hexValue":"75696e7432353620706572696f64732c","id":4727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2304:18:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38","typeString":"literal_string \"uint256 periods,\""},"value":"uint256 periods,"},{"hexValue":"75696e7432353620616d6f756e742c","id":4728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2340:17:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3","typeString":"literal_string \"uint256 amount,\""},"value":"uint256 amount,"},{"hexValue":"75696e7432353620726174696f2c","id":4729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2375:16:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b","typeString":"literal_string \"uint256 ratio,\""},"value":"uint256 ratio,"},{"hexValue":"75696e7432353620726f79616c74792c","id":4730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2409:18:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0","typeString":"literal_string \"uint256 royalty,\""},"value":"uint256 royalty,"},{"hexValue":"75696e74323536206665652c","id":4731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2445:14:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21","typeString":"literal_string \"uint256 fee,\""},"value":"uint256 fee,"},{"hexValue":"75696e743235362077697468647261774665652c","id":4732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2477:22:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59","typeString":"literal_string \"uint256 withdrawFee,\""},"value":"uint256 withdrawFee,"},{"hexValue":"75696e743235362073616c742c","id":4733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2517:15:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9","typeString":"literal_string \"uint256 salt,\""},"value":"uint256 salt,"},{"hexValue":"6279746573333220636f6e647569744b65792c","id":4734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2550:21:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83","typeString":"literal_string \"bytes32 conduitKey,\""},"value":"bytes32 conduitKey,"},{"hexValue":"75696e7432353620636f756e746572","id":4735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2589:17:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b","typeString":"literal_string \"uint256 counter\""},"value":"uint256 counter"},{"hexValue":"29","id":4736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2620:3:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed","typeString":"literal_string \")\""},"value":")"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573","typeString":"literal_string \"OrderComponents(\""},{"typeIdentifier":"t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d","typeString":"literal_string \"address offerer,\""},{"typeIdentifier":"t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e","typeString":"literal_string \"address token,\""},{"typeIdentifier":"t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01","typeString":"literal_string \"uint256 identifier,\""},{"typeIdentifier":"t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703","typeString":"literal_string \"address currency,\""},{"typeIdentifier":"t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2","typeString":"literal_string \"address artist,\""},{"typeIdentifier":"t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322","typeString":"literal_string \"address platform,\""},{"typeIdentifier":"t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54","typeString":"literal_string \"uint256 startTime,\""},{"typeIdentifier":"t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51","typeString":"literal_string \"uint256 endTime,\""},{"typeIdentifier":"t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489","typeString":"literal_string \"uint256 duration,\""},{"typeIdentifier":"t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38","typeString":"literal_string \"uint256 periods,\""},{"typeIdentifier":"t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3","typeString":"literal_string \"uint256 amount,\""},{"typeIdentifier":"t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b","typeString":"literal_string \"uint256 ratio,\""},{"typeIdentifier":"t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0","typeString":"literal_string \"uint256 royalty,\""},{"typeIdentifier":"t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21","typeString":"literal_string \"uint256 fee,\""},{"typeIdentifier":"t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59","typeString":"literal_string \"uint256 withdrawFee,\""},{"typeIdentifier":"t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9","typeString":"literal_string \"uint256 salt,\""},{"typeIdentifier":"t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83","typeString":"literal_string \"bytes32 conduitKey,\""},{"typeIdentifier":"t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b","typeString":"literal_string \"uint256 counter\""},{"typeIdentifier":"t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed","typeString":"literal_string \")\""}],"expression":{"id":4715,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1909:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1909:16:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1909:724:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1868:765:32"},{"expression":{"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4739,"name":"eip712DomainTypehash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4690,"src":"2644:20:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"454950373132446f6d61696e28","id":4743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2724:15:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a","typeString":"literal_string \"EIP712Domain(\""},"value":"EIP712Domain("},{"hexValue":"737472696e67206e616d652c","id":4744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2761:14:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597","typeString":"literal_string \"string name,\""},"value":"string name,"},{"hexValue":"737472696e672076657273696f6e2c","id":4745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2797:17:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c","typeString":"literal_string \"string version,\""},"value":"string version,"},{"hexValue":"75696e7432353620636861696e49642c","id":4746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2836:18:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b","typeString":"literal_string \"uint256 chainId,\""},"value":"uint256 chainId,"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","id":4747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2876:27:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b","typeString":"literal_string \"address verifyingContract\""},"value":"address verifyingContract"},{"hexValue":"29","id":4748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2921:3:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed","typeString":"literal_string \")\""},"value":")"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a","typeString":"literal_string \"EIP712Domain(\""},{"typeIdentifier":"t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597","typeString":"literal_string \"string name,\""},{"typeIdentifier":"t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c","typeString":"literal_string \"string version,\""},{"typeIdentifier":"t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b","typeString":"literal_string \"uint256 chainId,\""},{"typeIdentifier":"t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b","typeString":"literal_string \"address verifyingContract\""},{"typeIdentifier":"t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed","typeString":"literal_string \")\""}],"expression":{"id":4741,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2690:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2690:16:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2690:248:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4740,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2667:9:32","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2667:281:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2644:304:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4752,"nodeType":"ExpressionStatement","src":"2644:304:32"},{"expression":{"id":4757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4753,"name":"orderTypehash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"2959:13:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4755,"name":"orderComponentsTypeString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4714,"src":"2985:25:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4754,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2975:9:32","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2975:36:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2959:52:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4758,"nodeType":"ExpressionStatement","src":"2959:52:32"}]},"id":4760,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveTypehashes","nameLocation":"1536:17:32","nodeType":"FunctionDefinition","parameters":{"id":4684,"nodeType":"ParameterList","parameters":[],"src":"1553:2:32"},"returnParameters":{"id":4693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4686,"mutability":"mutable","name":"nameHash","nameLocation":"1624:8:32","nodeType":"VariableDeclaration","scope":4760,"src":"1616:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1616:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4688,"mutability":"mutable","name":"versionHash","nameLocation":"1654:11:32","nodeType":"VariableDeclaration","scope":4760,"src":"1646:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4687,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1646:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4690,"mutability":"mutable","name":"eip712DomainTypehash","nameLocation":"1687:20:32","nodeType":"VariableDeclaration","scope":4760,"src":"1679:28:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4689,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1679:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4692,"mutability":"mutable","name":"orderTypehash","nameLocation":"1729:13:32","nodeType":"VariableDeclaration","scope":4760,"src":"1721:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4691,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1721:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1602:150:32"},"scope":4761,"src":"1527:1491:32","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4762,"src":"154:2866:32","usedErrors":[]}],"src":"32:2988:32"},"id":32},"contracts/lib/ConsiderationConstants.sol":{"ast":{"absolutePath":"contracts/lib/ConsiderationConstants.sol","exportedSymbols":{"AccumulatorArmed":[5193],"AccumulatorDisarmed":[5190],"Accumulator_array_length_ptr":[5205],"Accumulator_array_offset":[5211],"Accumulator_array_offset_ptr":[5202],"Accumulator_conduitKey_ptr":[5196],"Accumulator_itemSizeOffsetDifference":[5208],"Accumulator_selector_ptr":[5199],"AdditionalRecipients_size":[4910],"AdvancedOrder_numerator_offset":[4862],"AlmostOneWord":[4865],"BadContractSignature_error_length":[5276],"BadContractSignature_error_signature":[5273],"BadSignatureV_error_length":[5255],"BadSignatureV_error_offset":[5252],"BadSignatureV_error_signature":[5249],"BasicOrder_additionalRecipients_data_cdPtr":[5001],"BasicOrder_additionalRecipients_head_cdPtr":[4992],"BasicOrder_additionalRecipients_head_ptr":[5061],"BasicOrder_additionalRecipients_length_cdPtr":[4998],"BasicOrder_basicOrderType_cdPtr":[4977],"BasicOrder_basicOrderType_range":[5007],"BasicOrder_common_params_size":[4901],"BasicOrder_considerationAmount_cdPtr":[4962],"BasicOrder_considerationHashesArray_ptr":[4904],"BasicOrder_considerationItem_endAmount_ptr":[5025],"BasicOrder_considerationItem_identifier_ptr":[5019],"BasicOrder_considerationItem_itemType_ptr":[5013],"BasicOrder_considerationItem_startAmount_ptr":[5022],"BasicOrder_considerationItem_token_ptr":[5016],"BasicOrder_considerationItem_typeHash_ptr":[5010],"BasicOrder_considerationToken_cdPtr":[4959],"BasicOrder_endAmount_cdPtr":[4898],"BasicOrder_fulfillerConduit_cdPtr":[4986],"BasicOrder_offerAmount_cdPtr":[4974],"BasicOrder_offerItem_endAmount_ptr":[5037],"BasicOrder_offerItem_itemType_ptr":[5031],"BasicOrder_offerItem_token_ptr":[5034],"BasicOrder_offerItem_typeHash_ptr":[5028],"BasicOrder_offerToken_cdPtr":[4971],"BasicOrder_offererConduit_cdPtr":[4983],"BasicOrder_offerer_cdPtr":[4965],"BasicOrder_order_considerationHashes_ptr":[5049],"BasicOrder_order_counter_ptr":[5058],"BasicOrder_order_offerHashes_ptr":[5046],"BasicOrder_order_offerer_ptr":[5043],"BasicOrder_order_orderType_ptr":[5052],"BasicOrder_order_startTime_ptr":[5055],"BasicOrder_order_typeHash_ptr":[5040],"BasicOrder_parameters_cdPtr":[4956],"BasicOrder_parameters_ptr":[5004],"BasicOrder_signature_cdPtr":[4995],"BasicOrder_signature_ptr":[5064],"BasicOrder_startTime_cdPtr":[4980],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[4989],"BasicOrder_zone_cdPtr":[4968],"Common_amount_offset":[4793],"Common_identifier_offset":[4790],"Common_token_offset":[4787],"Conduit_execute_ConduitTransfer_length":[5160],"Conduit_execute_ConduitTransfer_length_ptr":[5166],"Conduit_execute_ConduitTransfer_offset_ptr":[5163],"Conduit_execute_ConduitTransfer_ptr":[5157],"Conduit_execute_signature":[5148],"Conduit_execute_transferAmount_ptr":[5184],"Conduit_execute_transferFrom_ptr":[5175],"Conduit_execute_transferIdentifier_ptr":[5181],"Conduit_execute_transferItemType_ptr":[5169],"Conduit_execute_transferTo_ptr":[5178],"Conduit_execute_transferToken_ptr":[5172],"Conduit_transferItem_amount_ptr":[5229],"Conduit_transferItem_from_ptr":[5220],"Conduit_transferItem_identifier_ptr":[5226],"Conduit_transferItem_size":[5214],"Conduit_transferItem_to_ptr":[5223],"Conduit_transferItem_token_ptr":[5217],"ConsiderItem_recipient_offset":[4811],"ConsiderationItem_recipient_offset":[4808],"CostPerWord":[5123],"Create2AddressDerivation_length":[5132],"Create2AddressDerivation_ptr":[5129],"DefaultFreeMemoryPointer":[4889],"ECDSA_MaxLength":[5075],"ECDSA_signature_s_offset":[5078],"ECDSA_signature_v_offset":[5081],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[5072],"EIP1271_isValidSignature_calldata_baseLength":[5097],"EIP1271_isValidSignature_digest_negativeOffset":[5091],"EIP1271_isValidSignature_selector":[5085],"EIP1271_isValidSignature_selector_negativeOffset":[5094],"EIP1271_isValidSignature_signatureHead_negativeOffset":[5088],"EIP1271_isValidSignature_signature_head_offset":[5100],"EIP2098_allButHighestBitMask":[5068],"EIP712_DigestPayload_size":[4919],"EIP712_DomainSeparator_offset":[4913],"EIP712_OrderHash_offset":[4916],"EIP712_Order_size":[4907],"EIP_712_PREFIX":[5117],"Ecrecover_args_size":[5242],"Ecrecover_precompile":[5239],"Execution_conduit_offset":[4817],"Execution_offerer_offset":[4814],"ExtraGasBuffer":[5120],"FiveWords":[4880],"FourWords":[4877],"FreeMemoryPointerSlot":[4883],"Fulfillment_itemIndex_offset":[4859],"InexactFraction_error_len":[5236],"InexactFraction_error_signature":[5233],"InvalidFulfillmentComponentData_error_len":[4824],"InvalidFulfillmentComponentData_error_signature":[4821],"InvalidSignature_error_length":[5269],"InvalidSignature_error_signature":[5266],"InvalidSigner_error_length":[5262],"InvalidSigner_error_signature":[5259],"MaskOverByteTwelve":[5136],"MaskOverFirstFourBytes":[5144],"MaskOverLastTwentyBytes":[5140],"MaxUint120":[5154],"MaxUint8":[5151],"MemoryExpansionCoefficient":[5126],"MissingItemAmount_error_len":[4844],"MissingItemAmount_error_signature":[4841],"NameLengthPtr":[4766],"NameWithLength":[4769],"NoContract_error_length":[5113],"NoContract_error_sig_ptr":[5107],"NoContract_error_signature":[5104],"NoContract_error_token_ptr":[5110],"NonMatchSelector_MagicModulus":[5282],"NonMatchSelector_MagicRemainder":[5285],"NumBitsAfterSelector":[5279],"OneConduitExecute_size":[5187],"OneWord":[4868],"OrderFulfilled_baseOffset":[4932],"OrderFulfilled_baseSize":[4925],"OrderFulfilled_consideration_body_offset":[4953],"OrderFulfilled_consideration_head_offset":[4950],"OrderFulfilled_consideration_length_baseOffset":[4935],"OrderFulfilled_fulfiller_offset":[4941],"OrderFulfilled_offer_body_offset":[4947],"OrderFulfilled_offer_head_offset":[4944],"OrderFulfilled_offer_length_baseOffset":[4938],"OrderFulfilled_selector":[4929],"OrderParameters_conduit_offset":[4853],"OrderParameters_consideration_head_offset":[4850],"OrderParameters_counter_offset":[4856],"OrderParameters_offer_head_offset":[4847],"Panic_arithmetic":[4837],"Panic_error_length":[4834],"Panic_error_offset":[4831],"Panic_error_signature":[4828],"ReceivedItem_CommonParams_size":[4805],"ReceivedItem_amount_offset":[4799],"ReceivedItem_recipient_offset":[4802],"ReceivedItem_size":[4796],"Signature_lower_v":[5245],"Slot0x80":[4892],"Slot0xA0":[4895],"ThreeWords":[4874],"TwoWords":[4871],"Version":[4772],"Version_length":[4775],"Version_shift":[4778],"ZeroSlot":[4886],"_ENTERED":[4784],"_NOT_ENTERED":[4781],"receivedItemsHash_ptr":[4922]},"id":5286,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4763,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:33"},{"constant":true,"id":4766,"mutability":"constant","name":"NameLengthPtr","nameLocation":"2112:13:33","nodeType":"VariableDeclaration","scope":5286,"src":"2095:35:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4764,"name":"uint256","nodeType":"ElementaryTypeName","src":"2095:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3737","id":4765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2128:2:33","typeDescriptions":{"typeIdentifier":"t_rational_77_by_1","typeString":"int_const 77"},"value":"77"},"visibility":"internal"},{"constant":true,"id":4769,"mutability":"constant","name":"NameWithLength","nameLocation":"2149:14:33","nodeType":"VariableDeclaration","scope":5286,"src":"2132:64:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4767,"name":"uint256","nodeType":"ElementaryTypeName","src":"2132:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830643433364636453733363936343635373236313734363936463645","id":4768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2166:30:33","typeDescriptions":{"typeIdentifier":"t_rational_269014098098874041013807413292910_by_1","typeString":"int_const 2690...(25 digits omitted)...2910"},"value":"0x0d436F6E73696465726174696F6E"},"visibility":"internal"},{"constant":true,"id":4772,"mutability":"constant","name":"Version","nameLocation":"2216:7:33","nodeType":"VariableDeclaration","scope":5286,"src":"2199:35:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4770,"name":"uint256","nodeType":"ElementaryTypeName","src":"2199:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078333132653331","id":4771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2226:8:33","typeDescriptions":{"typeIdentifier":"t_rational_3223089_by_1","typeString":"int_const 3223089"},"value":"0x312e31"},"visibility":"internal"},{"constant":true,"id":4775,"mutability":"constant","name":"Version_length","nameLocation":"2253:14:33","nodeType":"VariableDeclaration","scope":5286,"src":"2236:35:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4773,"name":"uint256","nodeType":"ElementaryTypeName","src":"2236:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":4774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2270:1:33","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":4778,"mutability":"constant","name":"Version_shift","nameLocation":"2290:13:33","nodeType":"VariableDeclaration","scope":5286,"src":"2273:37:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4776,"name":"uint256","nodeType":"ElementaryTypeName","src":"2273:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786538","id":4777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2306:4:33","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"0xe8"},"visibility":"internal"},{"constant":true,"id":4781,"mutability":"constant","name":"_NOT_ENTERED","nameLocation":"2330:12:33","nodeType":"VariableDeclaration","scope":5286,"src":"2313:33:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4779,"name":"uint256","nodeType":"ElementaryTypeName","src":"2313:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":4780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2345:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":4784,"mutability":"constant","name":"_ENTERED","nameLocation":"2365:8:33","nodeType":"VariableDeclaration","scope":5286,"src":"2348:29:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4782,"name":"uint256","nodeType":"ElementaryTypeName","src":"2348:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":4783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2376:1:33","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":4787,"mutability":"constant","name":"Common_token_offset","nameLocation":"2529:19:33","nodeType":"VariableDeclaration","scope":5286,"src":"2512:43:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4785,"name":"uint256","nodeType":"ElementaryTypeName","src":"2512:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2551:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4790,"mutability":"constant","name":"Common_identifier_offset","nameLocation":"2574:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"2557:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4788,"name":"uint256","nodeType":"ElementaryTypeName","src":"2557:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":4789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2601:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":4793,"mutability":"constant","name":"Common_amount_offset","nameLocation":"2624:20:33","nodeType":"VariableDeclaration","scope":5286,"src":"2607:44:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4791,"name":"uint256","nodeType":"ElementaryTypeName","src":"2607:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:4:33","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4796,"mutability":"constant","name":"ReceivedItem_size","nameLocation":"2671:17:33","nodeType":"VariableDeclaration","scope":5286,"src":"2654:41:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4794,"name":"uint256","nodeType":"ElementaryTypeName","src":"2654:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2691:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4799,"mutability":"constant","name":"ReceivedItem_amount_offset","nameLocation":"2714:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"2697:50:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4797,"name":"uint256","nodeType":"ElementaryTypeName","src":"2697:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2743:4:33","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4802,"mutability":"constant","name":"ReceivedItem_recipient_offset","nameLocation":"2766:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"2749:53:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4800,"name":"uint256","nodeType":"ElementaryTypeName","src":"2749:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2798:4:33","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4805,"mutability":"constant","name":"ReceivedItem_CommonParams_size","nameLocation":"2822:30:33","nodeType":"VariableDeclaration","scope":5286,"src":"2805:54:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4803,"name":"uint256","nodeType":"ElementaryTypeName","src":"2805:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2855:4:33","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4808,"mutability":"constant","name":"ConsiderationItem_recipient_offset","nameLocation":"2879:34:33","nodeType":"VariableDeclaration","scope":5286,"src":"2862:58:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4806,"name":"uint256","nodeType":"ElementaryTypeName","src":"2862:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2916:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4811,"mutability":"constant","name":"ConsiderItem_recipient_offset","nameLocation":"3014:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"2997:53:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4809,"name":"uint256","nodeType":"ElementaryTypeName","src":"2997:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3046:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4814,"mutability":"constant","name":"Execution_offerer_offset","nameLocation":"3070:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"3053:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4812,"name":"uint256","nodeType":"ElementaryTypeName","src":"3053:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3097:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4817,"mutability":"constant","name":"Execution_conduit_offset","nameLocation":"3120:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"3103:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4815,"name":"uint256","nodeType":"ElementaryTypeName","src":"3103:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":4816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":4821,"mutability":"constant","name":"InvalidFulfillmentComponentData_error_signature","nameLocation":"3171:47:33","nodeType":"VariableDeclaration","scope":5286,"src":"3154:141:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4818,"name":"uint256","nodeType":"ElementaryTypeName","src":"3154:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307837666461373237393030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3227:66:33","typeDescriptions":{"typeIdentifier":"t_rational_57829694491433599956760509916192848133310438881256311050796729709605798543360_by_1","typeString":"int_const 5782...(69 digits omitted)...3360"},"value":"0x7fda727900000000000000000000000000000000000000000000000000000000"}],"id":4820,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3221:74:33","typeDescriptions":{"typeIdentifier":"t_rational_57829694491433599956760509916192848133310438881256311050796729709605798543360_by_1","typeString":"int_const 5782...(69 digits omitted)...3360"}},"visibility":"internal"},{"constant":true,"id":4824,"mutability":"constant","name":"InvalidFulfillmentComponentData_error_len","nameLocation":"3314:41:33","nodeType":"VariableDeclaration","scope":5286,"src":"3297:65:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4822,"name":"uint256","nodeType":"ElementaryTypeName","src":"3297:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3358:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4828,"mutability":"constant","name":"Panic_error_signature","nameLocation":"3382:21:33","nodeType":"VariableDeclaration","scope":5286,"src":"3365:115:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4825,"name":"uint256","nodeType":"ElementaryTypeName","src":"3365:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307834653438376237313030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3412:66:33","typeDescriptions":{"typeIdentifier":"t_rational_35408467139433450592217433187231851964531694900788300625387963629091585785856_by_1","typeString":"int_const 3540...(69 digits omitted)...5856"},"value":"0x4e487b7100000000000000000000000000000000000000000000000000000000"}],"id":4827,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3406:74:33","typeDescriptions":{"typeIdentifier":"t_rational_35408467139433450592217433187231851964531694900788300625387963629091585785856_by_1","typeString":"int_const 3540...(69 digits omitted)...5856"}},"visibility":"internal"},{"constant":true,"id":4831,"mutability":"constant","name":"Panic_error_offset","nameLocation":"3499:18:33","nodeType":"VariableDeclaration","scope":5286,"src":"3482:42:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4829,"name":"uint256","nodeType":"ElementaryTypeName","src":"3482:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3520:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4834,"mutability":"constant","name":"Panic_error_length","nameLocation":"3543:18:33","nodeType":"VariableDeclaration","scope":5286,"src":"3526:42:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4832,"name":"uint256","nodeType":"ElementaryTypeName","src":"3526:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3564:4:33","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4837,"mutability":"constant","name":"Panic_arithmetic","nameLocation":"3587:16:33","nodeType":"VariableDeclaration","scope":5286,"src":"3570:40:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4835,"name":"uint256","nodeType":"ElementaryTypeName","src":"3570:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":4836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3606:4:33","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"id":4841,"mutability":"constant","name":"MissingItemAmount_error_signature","nameLocation":"3630:33:33","nodeType":"VariableDeclaration","scope":5286,"src":"3613:127:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4838,"name":"uint256","nodeType":"ElementaryTypeName","src":"3613:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307839316233653531343030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3672:66:33","typeDescriptions":{"typeIdentifier":"t_rational_65903209708281305491247531932642880901070546646261226988310371542132880048128_by_1","typeString":"int_const 6590...(69 digits omitted)...8128"},"value":"0x91b3e51400000000000000000000000000000000000000000000000000000000"}],"id":4840,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3666:74:33","typeDescriptions":{"typeIdentifier":"t_rational_65903209708281305491247531932642880901070546646261226988310371542132880048128_by_1","typeString":"int_const 6590...(69 digits omitted)...8128"}},"visibility":"internal"},{"constant":true,"id":4844,"mutability":"constant","name":"MissingItemAmount_error_len","nameLocation":"3759:27:33","nodeType":"VariableDeclaration","scope":5286,"src":"3742:51:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4842,"name":"uint256","nodeType":"ElementaryTypeName","src":"3742:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3789:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4847,"mutability":"constant","name":"OrderParameters_offer_head_offset","nameLocation":"3813:33:33","nodeType":"VariableDeclaration","scope":5286,"src":"3796:57:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4845,"name":"uint256","nodeType":"ElementaryTypeName","src":"3796:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3849:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4850,"mutability":"constant","name":"OrderParameters_consideration_head_offset","nameLocation":"3872:41:33","nodeType":"VariableDeclaration","scope":5286,"src":"3855:65:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4848,"name":"uint256","nodeType":"ElementaryTypeName","src":"3855:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":4849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3916:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":4853,"mutability":"constant","name":"OrderParameters_conduit_offset","nameLocation":"3939:30:33","nodeType":"VariableDeclaration","scope":5286,"src":"3922:55:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4851,"name":"uint256","nodeType":"ElementaryTypeName","src":"3922:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323030","id":4852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3972:5:33","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"visibility":"internal"},{"constant":true,"id":4856,"mutability":"constant","name":"OrderParameters_counter_offset","nameLocation":"3996:30:33","nodeType":"VariableDeclaration","scope":5286,"src":"3979:55:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4854,"name":"uint256","nodeType":"ElementaryTypeName","src":"3979:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323230","id":4855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4029:5:33","typeDescriptions":{"typeIdentifier":"t_rational_544_by_1","typeString":"int_const 544"},"value":"0x220"},"visibility":"internal"},{"constant":true,"id":4859,"mutability":"constant","name":"Fulfillment_itemIndex_offset","nameLocation":"4054:28:33","nodeType":"VariableDeclaration","scope":5286,"src":"4037:52:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4857,"name":"uint256","nodeType":"ElementaryTypeName","src":"4037:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4085:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4862,"mutability":"constant","name":"AdvancedOrder_numerator_offset","nameLocation":"4109:30:33","nodeType":"VariableDeclaration","scope":5286,"src":"4092:54:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4860,"name":"uint256","nodeType":"ElementaryTypeName","src":"4092:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4142:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4865,"mutability":"constant","name":"AlmostOneWord","nameLocation":"4166:13:33","nodeType":"VariableDeclaration","scope":5286,"src":"4149:37:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4863,"name":"uint256","nodeType":"ElementaryTypeName","src":"4149:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783166","id":4864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4182:4:33","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"0x1f"},"visibility":"internal"},{"constant":true,"id":4868,"mutability":"constant","name":"OneWord","nameLocation":"4205:7:33","nodeType":"VariableDeclaration","scope":5286,"src":"4188:31:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4866,"name":"uint256","nodeType":"ElementaryTypeName","src":"4188:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4215:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4871,"mutability":"constant","name":"TwoWords","nameLocation":"4238:8:33","nodeType":"VariableDeclaration","scope":5286,"src":"4221:32:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4869,"name":"uint256","nodeType":"ElementaryTypeName","src":"4221:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":4870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4249:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":4874,"mutability":"constant","name":"ThreeWords","nameLocation":"4272:10:33","nodeType":"VariableDeclaration","scope":5286,"src":"4255:34:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4872,"name":"uint256","nodeType":"ElementaryTypeName","src":"4255:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4285:4:33","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4877,"mutability":"constant","name":"FourWords","nameLocation":"4308:9:33","nodeType":"VariableDeclaration","scope":5286,"src":"4291:33:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4875,"name":"uint256","nodeType":"ElementaryTypeName","src":"4291:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4320:4:33","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4880,"mutability":"constant","name":"FiveWords","nameLocation":"4343:9:33","nodeType":"VariableDeclaration","scope":5286,"src":"4326:33:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4878,"name":"uint256","nodeType":"ElementaryTypeName","src":"4326:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4355:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4883,"mutability":"constant","name":"FreeMemoryPointerSlot","nameLocation":"4379:21:33","nodeType":"VariableDeclaration","scope":5286,"src":"4362:45:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4881,"name":"uint256","nodeType":"ElementaryTypeName","src":"4362:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":4882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4403:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":4886,"mutability":"constant","name":"ZeroSlot","nameLocation":"4426:8:33","nodeType":"VariableDeclaration","scope":5286,"src":"4409:32:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4884,"name":"uint256","nodeType":"ElementaryTypeName","src":"4409:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4437:4:33","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4889,"mutability":"constant","name":"DefaultFreeMemoryPointer","nameLocation":"4460:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"4443:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4887,"name":"uint256","nodeType":"ElementaryTypeName","src":"4443:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4487:4:33","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4892,"mutability":"constant","name":"Slot0x80","nameLocation":"4511:8:33","nodeType":"VariableDeclaration","scope":5286,"src":"4494:32:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4890,"name":"uint256","nodeType":"ElementaryTypeName","src":"4494:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4522:4:33","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4895,"mutability":"constant","name":"Slot0xA0","nameLocation":"4545:8:33","nodeType":"VariableDeclaration","scope":5286,"src":"4528:32:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4893,"name":"uint256","nodeType":"ElementaryTypeName","src":"4528:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4556:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4898,"mutability":"constant","name":"BasicOrder_endAmount_cdPtr","nameLocation":"4580:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"4563:51:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4896,"name":"uint256","nodeType":"ElementaryTypeName","src":"4563:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313034","id":4897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4609:5:33","typeDescriptions":{"typeIdentifier":"t_rational_260_by_1","typeString":"int_const 260"},"value":"0x104"},"visibility":"internal"},{"constant":true,"id":4901,"mutability":"constant","name":"BasicOrder_common_params_size","nameLocation":"4633:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"4616:53:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4899,"name":"uint256","nodeType":"ElementaryTypeName","src":"4616:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4665:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4904,"mutability":"constant","name":"BasicOrder_considerationHashesArray_ptr","nameLocation":"4688:39:33","nodeType":"VariableDeclaration","scope":5286,"src":"4671:64:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4902,"name":"uint256","nodeType":"ElementaryTypeName","src":"4671:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313630","id":4903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4730:5:33","typeDescriptions":{"typeIdentifier":"t_rational_352_by_1","typeString":"int_const 352"},"value":"0x160"},"visibility":"internal"},{"constant":true,"id":4907,"mutability":"constant","name":"EIP712_Order_size","nameLocation":"4755:17:33","nodeType":"VariableDeclaration","scope":5286,"src":"4738:42:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4905,"name":"uint256","nodeType":"ElementaryTypeName","src":"4738:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323630","id":4906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4775:5:33","typeDescriptions":{"typeIdentifier":"t_rational_608_by_1","typeString":"int_const 608"},"value":"0x260"},"visibility":"internal"},{"constant":true,"id":4910,"mutability":"constant","name":"AdditionalRecipients_size","nameLocation":"4799:25:33","nodeType":"VariableDeclaration","scope":5286,"src":"4782:49:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4908,"name":"uint256","nodeType":"ElementaryTypeName","src":"4782:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":4909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4827:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":4913,"mutability":"constant","name":"EIP712_DomainSeparator_offset","nameLocation":"4851:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"4834:53:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4911,"name":"uint256","nodeType":"ElementaryTypeName","src":"4834:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783032","id":4912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4883:4:33","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"visibility":"internal"},{"constant":true,"id":4916,"mutability":"constant","name":"EIP712_OrderHash_offset","nameLocation":"4906:23:33","nodeType":"VariableDeclaration","scope":5286,"src":"4889:47:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4914,"name":"uint256","nodeType":"ElementaryTypeName","src":"4889:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":4915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4932:4:33","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"id":4919,"mutability":"constant","name":"EIP712_DigestPayload_size","nameLocation":"4955:25:33","nodeType":"VariableDeclaration","scope":5286,"src":"4938:49:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4917,"name":"uint256","nodeType":"ElementaryTypeName","src":"4938:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783432","id":4918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4983:4:33","typeDescriptions":{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"},"value":"0x42"},"visibility":"internal"},{"constant":true,"id":4922,"mutability":"constant","name":"receivedItemsHash_ptr","nameLocation":"5007:21:33","nodeType":"VariableDeclaration","scope":5286,"src":"4990:45:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4920,"name":"uint256","nodeType":"ElementaryTypeName","src":"4990:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5031:4:33","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4925,"mutability":"constant","name":"OrderFulfilled_baseSize","nameLocation":"6169:23:33","nodeType":"VariableDeclaration","scope":5286,"src":"6152:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4923,"name":"uint256","nodeType":"ElementaryTypeName","src":"6152:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078316530","id":4924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6195:5:33","typeDescriptions":{"typeIdentifier":"t_rational_480_by_1","typeString":"int_const 480"},"value":"0x1e0"},"visibility":"internal"},{"constant":true,"id":4929,"mutability":"constant","name":"OrderFulfilled_selector","nameLocation":"6219:23:33","nodeType":"VariableDeclaration","scope":5286,"src":"6202:117:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4926,"name":"uint256","nodeType":"ElementaryTypeName","src":"6202:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307839643961663865333864363663363265326331326630323235323439666439643732316335346238336634386439333532633937633663616364636236663331","id":4927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6251:66:33","typeDescriptions":{"typeIdentifier":"t_rational_71286929443441903619420626123257826409604698619988279456855157774814467026737_by_1","typeString":"int_const 7128...(69 digits omitted)...6737"},"value":"0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31"}],"id":4928,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6245:74:33","typeDescriptions":{"typeIdentifier":"t_rational_71286929443441903619420626123257826409604698619988279456855157774814467026737_by_1","typeString":"int_const 7128...(69 digits omitted)...6737"}},"visibility":"internal"},{"constant":true,"id":4932,"mutability":"constant","name":"OrderFulfilled_baseOffset","nameLocation":"6554:25:33","nodeType":"VariableDeclaration","scope":5286,"src":"6537:50:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4930,"name":"uint256","nodeType":"ElementaryTypeName","src":"6537:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313830","id":4931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6582:5:33","typeDescriptions":{"typeIdentifier":"t_rational_384_by_1","typeString":"int_const 384"},"value":"0x180"},"visibility":"internal"},{"constant":true,"id":4935,"mutability":"constant","name":"OrderFulfilled_consideration_length_baseOffset","nameLocation":"6606:46:33","nodeType":"VariableDeclaration","scope":5286,"src":"6589:71:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4933,"name":"uint256","nodeType":"ElementaryTypeName","src":"6589:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078326130","id":4934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6655:5:33","typeDescriptions":{"typeIdentifier":"t_rational_672_by_1","typeString":"int_const 672"},"value":"0x2a0"},"visibility":"internal"},{"constant":true,"id":4938,"mutability":"constant","name":"OrderFulfilled_offer_length_baseOffset","nameLocation":"6679:38:33","nodeType":"VariableDeclaration","scope":5286,"src":"6662:63:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4936,"name":"uint256","nodeType":"ElementaryTypeName","src":"6662:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323030","id":4937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6720:5:33","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"visibility":"internal"},{"constant":true,"id":4941,"mutability":"constant","name":"OrderFulfilled_fulfiller_offset","nameLocation":"6805:31:33","nodeType":"VariableDeclaration","scope":5286,"src":"6788:55:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4939,"name":"uint256","nodeType":"ElementaryTypeName","src":"6788:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6839:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4944,"mutability":"constant","name":"OrderFulfilled_offer_head_offset","nameLocation":"6862:32:33","nodeType":"VariableDeclaration","scope":5286,"src":"6845:56:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4942,"name":"uint256","nodeType":"ElementaryTypeName","src":"6845:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":4943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6897:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":4947,"mutability":"constant","name":"OrderFulfilled_offer_body_offset","nameLocation":"6920:32:33","nodeType":"VariableDeclaration","scope":5286,"src":"6903:56:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4945,"name":"uint256","nodeType":"ElementaryTypeName","src":"6903:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6955:4:33","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4950,"mutability":"constant","name":"OrderFulfilled_consideration_head_offset","nameLocation":"6978:40:33","nodeType":"VariableDeclaration","scope":5286,"src":"6961:64:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4948,"name":"uint256","nodeType":"ElementaryTypeName","src":"6961:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7021:4:33","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4953,"mutability":"constant","name":"OrderFulfilled_consideration_body_offset","nameLocation":"7044:40:33","nodeType":"VariableDeclaration","scope":5286,"src":"7027:65:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4951,"name":"uint256","nodeType":"ElementaryTypeName","src":"7027:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313230","id":4952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7087:5:33","typeDescriptions":{"typeIdentifier":"t_rational_288_by_1","typeString":"int_const 288"},"value":"0x120"},"visibility":"internal"},{"constant":true,"id":4956,"mutability":"constant","name":"BasicOrder_parameters_cdPtr","nameLocation":"7136:27:33","nodeType":"VariableDeclaration","scope":5286,"src":"7119:51:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4954,"name":"uint256","nodeType":"ElementaryTypeName","src":"7119:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7166:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4959,"mutability":"constant","name":"BasicOrder_considerationToken_cdPtr","nameLocation":"7189:35:33","nodeType":"VariableDeclaration","scope":5286,"src":"7172:59:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4957,"name":"uint256","nodeType":"ElementaryTypeName","src":"7172:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7227:4:33","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4962,"mutability":"constant","name":"BasicOrder_considerationAmount_cdPtr","nameLocation":"7319:36:33","nodeType":"VariableDeclaration","scope":5286,"src":"7302:60:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4960,"name":"uint256","nodeType":"ElementaryTypeName","src":"7302:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":4961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7358:4:33","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":4965,"mutability":"constant","name":"BasicOrder_offerer_cdPtr","nameLocation":"7381:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"7364:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4963,"name":"uint256","nodeType":"ElementaryTypeName","src":"7364:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":4964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7408:4:33","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":4968,"mutability":"constant","name":"BasicOrder_zone_cdPtr","nameLocation":"7431:21:33","nodeType":"VariableDeclaration","scope":5286,"src":"7414:45:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4966,"name":"uint256","nodeType":"ElementaryTypeName","src":"7414:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":4967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7455:4:33","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":4971,"mutability":"constant","name":"BasicOrder_offerToken_cdPtr","nameLocation":"7478:27:33","nodeType":"VariableDeclaration","scope":5286,"src":"7461:51:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4969,"name":"uint256","nodeType":"ElementaryTypeName","src":"7461:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":4970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7508:4:33","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":4974,"mutability":"constant","name":"BasicOrder_offerAmount_cdPtr","nameLocation":"7592:28:33","nodeType":"VariableDeclaration","scope":5286,"src":"7575:53:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4972,"name":"uint256","nodeType":"ElementaryTypeName","src":"7575:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313034","id":4973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7623:5:33","typeDescriptions":{"typeIdentifier":"t_rational_260_by_1","typeString":"int_const 260"},"value":"0x104"},"visibility":"internal"},{"constant":true,"id":4977,"mutability":"constant","name":"BasicOrder_basicOrderType_cdPtr","nameLocation":"7647:31:33","nodeType":"VariableDeclaration","scope":5286,"src":"7630:56:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4975,"name":"uint256","nodeType":"ElementaryTypeName","src":"7630:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313234","id":4976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7681:5:33","typeDescriptions":{"typeIdentifier":"t_rational_292_by_1","typeString":"int_const 292"},"value":"0x124"},"visibility":"internal"},{"constant":true,"id":4980,"mutability":"constant","name":"BasicOrder_startTime_cdPtr","nameLocation":"7705:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"7688:51:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4978,"name":"uint256","nodeType":"ElementaryTypeName","src":"7688:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313434","id":4979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7734:5:33","typeDescriptions":{"typeIdentifier":"t_rational_324_by_1","typeString":"int_const 324"},"value":"0x144"},"visibility":"internal"},{"constant":true,"id":4983,"mutability":"constant","name":"BasicOrder_offererConduit_cdPtr","nameLocation":"7918:31:33","nodeType":"VariableDeclaration","scope":5286,"src":"7901:56:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4981,"name":"uint256","nodeType":"ElementaryTypeName","src":"7901:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078316334","id":4982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7952:5:33","typeDescriptions":{"typeIdentifier":"t_rational_452_by_1","typeString":"int_const 452"},"value":"0x1c4"},"visibility":"internal"},{"constant":true,"id":4986,"mutability":"constant","name":"BasicOrder_fulfillerConduit_cdPtr","nameLocation":"7976:33:33","nodeType":"VariableDeclaration","scope":5286,"src":"7959:58:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4984,"name":"uint256","nodeType":"ElementaryTypeName","src":"7959:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078316534","id":4985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8012:5:33","typeDescriptions":{"typeIdentifier":"t_rational_484_by_1","typeString":"int_const 484"},"value":"0x1e4"},"visibility":"internal"},{"constant":true,"id":4989,"mutability":"constant","name":"BasicOrder_totalOriginalAdditionalRecipients_cdPtr","nameLocation":"8036:50:33","nodeType":"VariableDeclaration","scope":5286,"src":"8019:75:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4987,"name":"uint256","nodeType":"ElementaryTypeName","src":"8019:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323034","id":4988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8089:5:33","typeDescriptions":{"typeIdentifier":"t_rational_516_by_1","typeString":"int_const 516"},"value":"0x204"},"visibility":"internal"},{"constant":true,"id":4992,"mutability":"constant","name":"BasicOrder_additionalRecipients_head_cdPtr","nameLocation":"8113:42:33","nodeType":"VariableDeclaration","scope":5286,"src":"8096:67:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4990,"name":"uint256","nodeType":"ElementaryTypeName","src":"8096:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323234","id":4991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8158:5:33","typeDescriptions":{"typeIdentifier":"t_rational_548_by_1","typeString":"int_const 548"},"value":"0x224"},"visibility":"internal"},{"constant":true,"id":4995,"mutability":"constant","name":"BasicOrder_signature_cdPtr","nameLocation":"8182:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"8165:51:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4993,"name":"uint256","nodeType":"ElementaryTypeName","src":"8165:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323434","id":4994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8211:5:33","typeDescriptions":{"typeIdentifier":"t_rational_580_by_1","typeString":"int_const 580"},"value":"0x244"},"visibility":"internal"},{"constant":true,"id":4998,"mutability":"constant","name":"BasicOrder_additionalRecipients_length_cdPtr","nameLocation":"8235:44:33","nodeType":"VariableDeclaration","scope":5286,"src":"8218:69:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4996,"name":"uint256","nodeType":"ElementaryTypeName","src":"8218:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323634","id":4997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8282:5:33","typeDescriptions":{"typeIdentifier":"t_rational_612_by_1","typeString":"int_const 612"},"value":"0x264"},"visibility":"internal"},{"constant":true,"id":5001,"mutability":"constant","name":"BasicOrder_additionalRecipients_data_cdPtr","nameLocation":"8306:42:33","nodeType":"VariableDeclaration","scope":5286,"src":"8289:67:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4999,"name":"uint256","nodeType":"ElementaryTypeName","src":"8289:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323834","id":5000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8351:5:33","typeDescriptions":{"typeIdentifier":"t_rational_644_by_1","typeString":"int_const 644"},"value":"0x284"},"visibility":"internal"},{"constant":true,"id":5004,"mutability":"constant","name":"BasicOrder_parameters_ptr","nameLocation":"8376:25:33","nodeType":"VariableDeclaration","scope":5286,"src":"8359:49:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5002,"name":"uint256","nodeType":"ElementaryTypeName","src":"8359:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":5003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8404:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":5007,"mutability":"constant","name":"BasicOrder_basicOrderType_range","nameLocation":"8428:31:33","nodeType":"VariableDeclaration","scope":5286,"src":"8411:55:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5005,"name":"uint256","nodeType":"ElementaryTypeName","src":"8411:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783138","id":5006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8462:4:33","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"0x18"},"visibility":"internal"},{"constant":true,"id":5010,"mutability":"constant","name":"BasicOrder_considerationItem_typeHash_ptr","nameLocation":"8803:41:33","nodeType":"VariableDeclaration","scope":5286,"src":"8786:65:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5008,"name":"uint256","nodeType":"ElementaryTypeName","src":"8786:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":5009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8847:4:33","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":5013,"mutability":"constant","name":"BasicOrder_considerationItem_itemType_ptr","nameLocation":"8883:41:33","nodeType":"VariableDeclaration","scope":5286,"src":"8866:65:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5011,"name":"uint256","nodeType":"ElementaryTypeName","src":"8866:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":5012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8927:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":5016,"mutability":"constant","name":"BasicOrder_considerationItem_token_ptr","nameLocation":"8950:38:33","nodeType":"VariableDeclaration","scope":5286,"src":"8933:62:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5014,"name":"uint256","nodeType":"ElementaryTypeName","src":"8933:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":5015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8991:4:33","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":5019,"mutability":"constant","name":"BasicOrder_considerationItem_identifier_ptr","nameLocation":"9014:43:33","nodeType":"VariableDeclaration","scope":5286,"src":"8997:67:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5017,"name":"uint256","nodeType":"ElementaryTypeName","src":"8997:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786530","id":5018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9060:4:33","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"0xe0"},"visibility":"internal"},{"constant":true,"id":5022,"mutability":"constant","name":"BasicOrder_considerationItem_startAmount_ptr","nameLocation":"9083:44:33","nodeType":"VariableDeclaration","scope":5286,"src":"9066:69:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5020,"name":"uint256","nodeType":"ElementaryTypeName","src":"9066:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030","id":5021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9130:5:33","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"visibility":"internal"},{"constant":true,"id":5025,"mutability":"constant","name":"BasicOrder_considerationItem_endAmount_ptr","nameLocation":"9154:42:33","nodeType":"VariableDeclaration","scope":5286,"src":"9137:67:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5023,"name":"uint256","nodeType":"ElementaryTypeName","src":"9137:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313230","id":5024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9199:5:33","typeDescriptions":{"typeIdentifier":"t_rational_288_by_1","typeString":"int_const 288"},"value":"0x120"},"visibility":"internal"},{"constant":true,"id":5028,"mutability":"constant","name":"BasicOrder_offerItem_typeHash_ptr","nameLocation":"9594:33:33","nodeType":"VariableDeclaration","scope":5286,"src":"9577:77:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5026,"name":"uint256","nodeType":"ElementaryTypeName","src":"9577:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"id":5027,"name":"DefaultFreeMemoryPointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"9630:24:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":5031,"mutability":"constant","name":"BasicOrder_offerItem_itemType_ptr","nameLocation":"9673:33:33","nodeType":"VariableDeclaration","scope":5286,"src":"9656:57:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5029,"name":"uint256","nodeType":"ElementaryTypeName","src":"9656:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":5030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9709:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":5034,"mutability":"constant","name":"BasicOrder_offerItem_token_ptr","nameLocation":"9732:30:33","nodeType":"VariableDeclaration","scope":5286,"src":"9715:54:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5032,"name":"uint256","nodeType":"ElementaryTypeName","src":"9715:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":5033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9765:4:33","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":5037,"mutability":"constant","name":"BasicOrder_offerItem_endAmount_ptr","nameLocation":"9918:34:33","nodeType":"VariableDeclaration","scope":5286,"src":"9901:59:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5035,"name":"uint256","nodeType":"ElementaryTypeName","src":"9901:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313230","id":5036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9955:5:33","typeDescriptions":{"typeIdentifier":"t_rational_288_by_1","typeString":"int_const 288"},"value":"0x120"},"visibility":"internal"},{"constant":true,"id":5040,"mutability":"constant","name":"BasicOrder_order_typeHash_ptr","nameLocation":"10523:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"10506:53:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5038,"name":"uint256","nodeType":"ElementaryTypeName","src":"10506:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":5039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10555:4:33","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":5043,"mutability":"constant","name":"BasicOrder_order_offerer_ptr","nameLocation":"10578:28:33","nodeType":"VariableDeclaration","scope":5286,"src":"10561:52:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5041,"name":"uint256","nodeType":"ElementaryTypeName","src":"10561:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":5042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10609:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":5046,"mutability":"constant","name":"BasicOrder_order_offerHashes_ptr","nameLocation":"10686:32:33","nodeType":"VariableDeclaration","scope":5286,"src":"10669:56:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5044,"name":"uint256","nodeType":"ElementaryTypeName","src":"10669:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786530","id":5045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10721:4:33","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"0xe0"},"visibility":"internal"},{"constant":true,"id":5049,"mutability":"constant","name":"BasicOrder_order_considerationHashes_ptr","nameLocation":"10744:40:33","nodeType":"VariableDeclaration","scope":5286,"src":"10727:65:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5047,"name":"uint256","nodeType":"ElementaryTypeName","src":"10727:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030","id":5048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:5:33","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"visibility":"internal"},{"constant":true,"id":5052,"mutability":"constant","name":"BasicOrder_order_orderType_ptr","nameLocation":"10811:30:33","nodeType":"VariableDeclaration","scope":5286,"src":"10794:55:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5050,"name":"uint256","nodeType":"ElementaryTypeName","src":"10794:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313230","id":5051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10844:5:33","typeDescriptions":{"typeIdentifier":"t_rational_288_by_1","typeString":"int_const 288"},"value":"0x120"},"visibility":"internal"},{"constant":true,"id":5055,"mutability":"constant","name":"BasicOrder_order_startTime_ptr","nameLocation":"10868:30:33","nodeType":"VariableDeclaration","scope":5286,"src":"10851:55:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5053,"name":"uint256","nodeType":"ElementaryTypeName","src":"10851:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313430","id":5054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10901:5:33","typeDescriptions":{"typeIdentifier":"t_rational_320_by_1","typeString":"int_const 320"},"value":"0x140"},"visibility":"internal"},{"constant":true,"id":5058,"mutability":"constant","name":"BasicOrder_order_counter_ptr","nameLocation":"11158:28:33","nodeType":"VariableDeclaration","scope":5286,"src":"11141:53:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5056,"name":"uint256","nodeType":"ElementaryTypeName","src":"11141:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078316530","id":5057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11189:5:33","typeDescriptions":{"typeIdentifier":"t_rational_480_by_1","typeString":"int_const 480"},"value":"0x1e0"},"visibility":"internal"},{"constant":true,"id":5061,"mutability":"constant","name":"BasicOrder_additionalRecipients_head_ptr","nameLocation":"11213:40:33","nodeType":"VariableDeclaration","scope":5286,"src":"11196:65:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5059,"name":"uint256","nodeType":"ElementaryTypeName","src":"11196:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323430","id":5060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11256:5:33","typeDescriptions":{"typeIdentifier":"t_rational_576_by_1","typeString":"int_const 576"},"value":"0x240"},"visibility":"internal"},{"constant":true,"id":5064,"mutability":"constant","name":"BasicOrder_signature_ptr","nameLocation":"11280:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"11263:49:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5062,"name":"uint256","nodeType":"ElementaryTypeName","src":"11263:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323630","id":5063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11307:5:33","typeDescriptions":{"typeIdentifier":"t_rational_608_by_1","typeString":"int_const 608"},"value":"0x260"},"visibility":"internal"},{"constant":true,"id":5068,"mutability":"constant","name":"EIP2098_allButHighestBitMask","nameLocation":"11353:28:33","nodeType":"VariableDeclaration","scope":5286,"src":"11336:122:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5065,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11336:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"components":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":5066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11390:66:33","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"id":5067,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"11384:74:33","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}},"visibility":"internal"},{"constant":true,"id":5072,"mutability":"constant","name":"ECDSA_twentySeventhAndTwentyEighthBytesSet","nameLocation":"11477:42:33","nodeType":"VariableDeclaration","scope":5286,"src":"11460:136:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5069,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11460:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"components":[{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030313031303030303030","id":5070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11528:66:33","typeDescriptions":{"typeIdentifier":"t_rational_4311744512_by_1","typeString":"int_const 4311744512"},"value":"0x0000000000000000000000000000000000000000000000000000000101000000"}],"id":5071,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"11522:74:33","typeDescriptions":{"typeIdentifier":"t_rational_4311744512_by_1","typeString":"int_const 4311744512"}},"visibility":"internal"},{"constant":true,"id":5075,"mutability":"constant","name":"ECDSA_MaxLength","nameLocation":"11615:15:33","nodeType":"VariableDeclaration","scope":5286,"src":"11598:37:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5073,"name":"uint256","nodeType":"ElementaryTypeName","src":"11598:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635","id":5074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11633:2:33","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"visibility":"internal"},{"constant":true,"id":5078,"mutability":"constant","name":"ECDSA_signature_s_offset","nameLocation":"11654:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"11637:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5076,"name":"uint256","nodeType":"ElementaryTypeName","src":"11637:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":5077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11681:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":5081,"mutability":"constant","name":"ECDSA_signature_v_offset","nameLocation":"11704:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"11687:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5079,"name":"uint256","nodeType":"ElementaryTypeName","src":"11687:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":5080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11731:4:33","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":5085,"mutability":"constant","name":"EIP1271_isValidSignature_selector","nameLocation":"11755:33:33","nodeType":"VariableDeclaration","scope":5286,"src":"11738:127:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5082,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11738:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"components":[{"hexValue":"307831363236626137653030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11797:66:33","typeDescriptions":{"typeIdentifier":"t_rational_10019309979067222254582373821846632475949454479833780424560900009889672200192_by_1","typeString":"int_const 1001...(69 digits omitted)...0192"},"value":"0x1626ba7e00000000000000000000000000000000000000000000000000000000"}],"id":5084,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"11791:74:33","typeDescriptions":{"typeIdentifier":"t_rational_10019309979067222254582373821846632475949454479833780424560900009889672200192_by_1","typeString":"int_const 1001...(69 digits omitted)...0192"}},"visibility":"internal"},{"constant":true,"id":5088,"mutability":"constant","name":"EIP1271_isValidSignature_signatureHead_negativeOffset","nameLocation":"11884:53:33","nodeType":"VariableDeclaration","scope":5286,"src":"11867:77:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5086,"name":"uint256","nodeType":"ElementaryTypeName","src":"11867:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":5087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11940:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":5091,"mutability":"constant","name":"EIP1271_isValidSignature_digest_negativeOffset","nameLocation":"11963:46:33","nodeType":"VariableDeclaration","scope":5286,"src":"11946:70:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5089,"name":"uint256","nodeType":"ElementaryTypeName","src":"11946:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":5090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12012:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":5094,"mutability":"constant","name":"EIP1271_isValidSignature_selector_negativeOffset","nameLocation":"12035:48:33","nodeType":"VariableDeclaration","scope":5286,"src":"12018:72:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5092,"name":"uint256","nodeType":"ElementaryTypeName","src":"12018:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":5093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12086:4:33","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":5097,"mutability":"constant","name":"EIP1271_isValidSignature_calldata_baseLength","nameLocation":"12109:44:33","nodeType":"VariableDeclaration","scope":5286,"src":"12092:68:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5095,"name":"uint256","nodeType":"ElementaryTypeName","src":"12092:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":5096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12156:4:33","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":5100,"mutability":"constant","name":"EIP1271_isValidSignature_signature_head_offset","nameLocation":"12180:46:33","nodeType":"VariableDeclaration","scope":5286,"src":"12163:70:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5098,"name":"uint256","nodeType":"ElementaryTypeName","src":"12163:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":5099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12229:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":5104,"mutability":"constant","name":"NoContract_error_signature","nameLocation":"12303:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"12286:120:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5101,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307835663135643637323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12338:66:33","typeDescriptions":{"typeIdentifier":"t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1","typeString":"int_const 4300...(69 digits omitted)...7584"},"value":"0x5f15d67200000000000000000000000000000000000000000000000000000000"}],"id":5103,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12332:74:33","typeDescriptions":{"typeIdentifier":"t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1","typeString":"int_const 4300...(69 digits omitted)...7584"}},"visibility":"internal"},{"constant":true,"id":5107,"mutability":"constant","name":"NoContract_error_sig_ptr","nameLocation":"12425:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"12408:47:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5105,"name":"uint256","nodeType":"ElementaryTypeName","src":"12408:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":5106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:3:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":5110,"mutability":"constant","name":"NoContract_error_token_ptr","nameLocation":"12474:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"12457:49:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5108,"name":"uint256","nodeType":"ElementaryTypeName","src":"12457:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307834","id":5109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12503:3:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"visibility":"internal"},{"constant":true,"id":5113,"mutability":"constant","name":"NoContract_error_length","nameLocation":"12525:23:33","nodeType":"VariableDeclaration","scope":5286,"src":"12508:47:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5111,"name":"uint256","nodeType":"ElementaryTypeName","src":"12508:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":5112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12551:4:33","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":5117,"mutability":"constant","name":"EIP_712_PREFIX","nameLocation":"12591:14:33","nodeType":"VariableDeclaration","scope":5286,"src":"12574:108:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5114,"name":"uint256","nodeType":"ElementaryTypeName","src":"12574:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307831393031303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12614:66:33","typeDescriptions":{"typeIdentifier":"t_rational_11309588061646438093662687302255421419811724423900836950936401294474059186176_by_1","typeString":"int_const 1130...(69 digits omitted)...6176"},"value":"0x1901000000000000000000000000000000000000000000000000000000000000"}],"id":5116,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12608:74:33","typeDescriptions":{"typeIdentifier":"t_rational_11309588061646438093662687302255421419811724423900836950936401294474059186176_by_1","typeString":"int_const 1130...(69 digits omitted)...6176"}},"visibility":"internal"},{"constant":true,"id":5120,"mutability":"constant","name":"ExtraGasBuffer","nameLocation":"12702:14:33","nodeType":"VariableDeclaration","scope":5286,"src":"12685:38:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5118,"name":"uint256","nodeType":"ElementaryTypeName","src":"12685:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":5119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12719:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":5123,"mutability":"constant","name":"CostPerWord","nameLocation":"12742:11:33","nodeType":"VariableDeclaration","scope":5286,"src":"12725:32:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5121,"name":"uint256","nodeType":"ElementaryTypeName","src":"12725:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":5122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12756:1:33","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":5126,"mutability":"constant","name":"MemoryExpansionCoefficient","nameLocation":"12776:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"12759:51:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5124,"name":"uint256","nodeType":"ElementaryTypeName","src":"12759:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323030","id":5125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12805:5:33","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"visibility":"internal"},{"constant":true,"id":5129,"mutability":"constant","name":"Create2AddressDerivation_ptr","nameLocation":"12837:28:33","nodeType":"VariableDeclaration","scope":5286,"src":"12820:52:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5127,"name":"uint256","nodeType":"ElementaryTypeName","src":"12820:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783062","id":5128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12868:4:33","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"0x0b"},"visibility":"internal"},{"constant":true,"id":5132,"mutability":"constant","name":"Create2AddressDerivation_length","nameLocation":"12891:31:33","nodeType":"VariableDeclaration","scope":5286,"src":"12874:55:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5130,"name":"uint256","nodeType":"ElementaryTypeName","src":"12874:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783535","id":5131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:4:33","typeDescriptions":{"typeIdentifier":"t_rational_85_by_1","typeString":"int_const 85"},"value":"0x55"},"visibility":"internal"},{"constant":true,"id":5136,"mutability":"constant","name":"MaskOverByteTwelve","nameLocation":"12949:18:33","nodeType":"VariableDeclaration","scope":5286,"src":"12932:112:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5133,"name":"uint256","nodeType":"ElementaryTypeName","src":"12932:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307830303030303030303030303030303030303030303030666630303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12976:66:33","typeDescriptions":{"typeIdentifier":"t_rational_372682917519380244141939632342652170012262798458880_by_1","typeString":"int_const 3726...(43 digits omitted)...8880"},"value":"0x0000000000000000000000ff0000000000000000000000000000000000000000"}],"id":5135,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12970:74:33","typeDescriptions":{"typeIdentifier":"t_rational_372682917519380244141939632342652170012262798458880_by_1","typeString":"int_const 3726...(43 digits omitted)...8880"}},"visibility":"internal"},{"constant":true,"id":5140,"mutability":"constant","name":"MaskOverLastTwentyBytes","nameLocation":"13064:23:33","nodeType":"VariableDeclaration","scope":5286,"src":"13047:117:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5137,"name":"uint256","nodeType":"ElementaryTypeName","src":"13047:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307830303030303030303030303030303030303030303030303066666666666666666666666666666666666666666666666666666666666666666666666666666666","id":5138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13096:66:33","typeDescriptions":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542975_by_1","typeString":"int_const 1461...(41 digits omitted)...2975"},"value":"0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff"}],"id":5139,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13090:74:33","typeDescriptions":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542975_by_1","typeString":"int_const 1461...(41 digits omitted)...2975"}},"visibility":"internal"},{"constant":true,"id":5144,"mutability":"constant","name":"MaskOverFirstFourBytes","nameLocation":"13184:22:33","nodeType":"VariableDeclaration","scope":5286,"src":"13167:116:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5141,"name":"uint256","nodeType":"ElementaryTypeName","src":"13167:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307866666666666666663030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13215:66:33","typeDescriptions":{"typeIdentifier":"t_rational_115792089210356248756420345214020892766250353992003419616917011526809519390720_by_1","typeString":"int_const 1157...(70 digits omitted)...0720"},"value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"id":5143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13209:74:33","typeDescriptions":{"typeIdentifier":"t_rational_115792089210356248756420345214020892766250353992003419616917011526809519390720_by_1","typeString":"int_const 1157...(70 digits omitted)...0720"}},"visibility":"internal"},{"constant":true,"id":5148,"mutability":"constant","name":"Conduit_execute_signature","nameLocation":"13303:25:33","nodeType":"VariableDeclaration","scope":5286,"src":"13286:119:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5145,"name":"uint256","nodeType":"ElementaryTypeName","src":"13286:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307834636533346161323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13337:66:33","typeDescriptions":{"typeIdentifier":"t_rational_34777365872773961339311961615113117744096016053484145012885398825620056571904_by_1","typeString":"int_const 3477...(69 digits omitted)...1904"},"value":"0x4ce34aa200000000000000000000000000000000000000000000000000000000"}],"id":5147,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13331:74:33","typeDescriptions":{"typeIdentifier":"t_rational_34777365872773961339311961615113117744096016053484145012885398825620056571904_by_1","typeString":"int_const 3477...(69 digits omitted)...1904"}},"visibility":"internal"},{"constant":true,"id":5151,"mutability":"constant","name":"MaxUint8","nameLocation":"13425:8:33","nodeType":"VariableDeclaration","scope":5286,"src":"13408:32:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5149,"name":"uint256","nodeType":"ElementaryTypeName","src":"13408:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786666","id":5150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13436:4:33","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"visibility":"internal"},{"constant":true,"id":5154,"mutability":"constant","name":"MaxUint120","nameLocation":"13459:10:33","nodeType":"VariableDeclaration","scope":5286,"src":"13442:62:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5152,"name":"uint256","nodeType":"ElementaryTypeName","src":"13442:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078666666666666666666666666666666666666666666666666666666666666","id":5153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13472:32:33","typeDescriptions":{"typeIdentifier":"t_rational_1329227995784915872903807060280344575_by_1","typeString":"int_const 1329...(29 digits omitted)...4575"},"value":"0xffffffffffffffffffffffffffffff"},"visibility":"internal"},{"constant":true,"id":5157,"mutability":"constant","name":"Conduit_execute_ConduitTransfer_ptr","nameLocation":"13524:35:33","nodeType":"VariableDeclaration","scope":5286,"src":"13507:59:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5155,"name":"uint256","nodeType":"ElementaryTypeName","src":"13507:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":5156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13562:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":5160,"mutability":"constant","name":"Conduit_execute_ConduitTransfer_length","nameLocation":"13585:38:33","nodeType":"VariableDeclaration","scope":5286,"src":"13568:62:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5158,"name":"uint256","nodeType":"ElementaryTypeName","src":"13568:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":5159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13626:4:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"id":5163,"mutability":"constant","name":"Conduit_execute_ConduitTransfer_offset_ptr","nameLocation":"13650:42:33","nodeType":"VariableDeclaration","scope":5286,"src":"13633:66:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5161,"name":"uint256","nodeType":"ElementaryTypeName","src":"13633:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":5162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13695:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":5166,"mutability":"constant","name":"Conduit_execute_ConduitTransfer_length_ptr","nameLocation":"13718:42:33","nodeType":"VariableDeclaration","scope":5286,"src":"13701:66:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5164,"name":"uint256","nodeType":"ElementaryTypeName","src":"13701:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":5165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13763:4:33","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":5169,"mutability":"constant","name":"Conduit_execute_transferItemType_ptr","nameLocation":"13786:36:33","nodeType":"VariableDeclaration","scope":5286,"src":"13769:60:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5167,"name":"uint256","nodeType":"ElementaryTypeName","src":"13769:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":5168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13825:4:33","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":5172,"mutability":"constant","name":"Conduit_execute_transferToken_ptr","nameLocation":"13848:33:33","nodeType":"VariableDeclaration","scope":5286,"src":"13831:57:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5170,"name":"uint256","nodeType":"ElementaryTypeName","src":"13831:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":5171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13884:4:33","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":5175,"mutability":"constant","name":"Conduit_execute_transferFrom_ptr","nameLocation":"13907:32:33","nodeType":"VariableDeclaration","scope":5286,"src":"13890:56:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5173,"name":"uint256","nodeType":"ElementaryTypeName","src":"13890:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":5174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13942:4:33","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":5178,"mutability":"constant","name":"Conduit_execute_transferTo_ptr","nameLocation":"13965:30:33","nodeType":"VariableDeclaration","scope":5286,"src":"13948:54:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5176,"name":"uint256","nodeType":"ElementaryTypeName","src":"13948:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":5177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:4:33","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":5181,"mutability":"constant","name":"Conduit_execute_transferIdentifier_ptr","nameLocation":"14021:38:33","nodeType":"VariableDeclaration","scope":5286,"src":"14004:62:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5179,"name":"uint256","nodeType":"ElementaryTypeName","src":"14004:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":5180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14062:4:33","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":5184,"mutability":"constant","name":"Conduit_execute_transferAmount_ptr","nameLocation":"14085:34:33","nodeType":"VariableDeclaration","scope":5286,"src":"14068:58:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5182,"name":"uint256","nodeType":"ElementaryTypeName","src":"14068:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786534","id":5183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14122:4:33","typeDescriptions":{"typeIdentifier":"t_rational_228_by_1","typeString":"int_const 228"},"value":"0xe4"},"visibility":"internal"},{"constant":true,"id":5187,"mutability":"constant","name":"OneConduitExecute_size","nameLocation":"14146:22:33","nodeType":"VariableDeclaration","scope":5286,"src":"14129:47:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5185,"name":"uint256","nodeType":"ElementaryTypeName","src":"14129:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313034","id":5186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14171:5:33","typeDescriptions":{"typeIdentifier":"t_rational_260_by_1","typeString":"int_const 260"},"value":"0x104"},"visibility":"internal"},{"constant":true,"id":5190,"mutability":"constant","name":"AccumulatorDisarmed","nameLocation":"14269:19:33","nodeType":"VariableDeclaration","scope":5286,"src":"14252:43:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5188,"name":"uint256","nodeType":"ElementaryTypeName","src":"14252:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":5189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14291:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":5193,"mutability":"constant","name":"AccumulatorArmed","nameLocation":"14314:16:33","nodeType":"VariableDeclaration","scope":5286,"src":"14297:40:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5191,"name":"uint256","nodeType":"ElementaryTypeName","src":"14297:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":5192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14333:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":5196,"mutability":"constant","name":"Accumulator_conduitKey_ptr","nameLocation":"14356:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"14339:50:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5194,"name":"uint256","nodeType":"ElementaryTypeName","src":"14339:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":5195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14385:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":5199,"mutability":"constant","name":"Accumulator_selector_ptr","nameLocation":"14408:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"14391:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5197,"name":"uint256","nodeType":"ElementaryTypeName","src":"14391:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":5198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14435:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":5202,"mutability":"constant","name":"Accumulator_array_offset_ptr","nameLocation":"14458:28:33","nodeType":"VariableDeclaration","scope":5286,"src":"14441:52:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5200,"name":"uint256","nodeType":"ElementaryTypeName","src":"14441:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":5201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14489:4:33","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":5205,"mutability":"constant","name":"Accumulator_array_length_ptr","nameLocation":"14512:28:33","nodeType":"VariableDeclaration","scope":5286,"src":"14495:52:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5203,"name":"uint256","nodeType":"ElementaryTypeName","src":"14495:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":5204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14543:4:33","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":5208,"mutability":"constant","name":"Accumulator_itemSizeOffsetDifference","nameLocation":"14567:36:33","nodeType":"VariableDeclaration","scope":5286,"src":"14550:60:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5206,"name":"uint256","nodeType":"ElementaryTypeName","src":"14550:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783363","id":5207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14606:4:33","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"0x3c"},"visibility":"internal"},{"constant":true,"id":5211,"mutability":"constant","name":"Accumulator_array_offset","nameLocation":"14630:24:33","nodeType":"VariableDeclaration","scope":5286,"src":"14613:48:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5209,"name":"uint256","nodeType":"ElementaryTypeName","src":"14613:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":5210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14657:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":5214,"mutability":"constant","name":"Conduit_transferItem_size","nameLocation":"14680:25:33","nodeType":"VariableDeclaration","scope":5286,"src":"14663:49:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5212,"name":"uint256","nodeType":"ElementaryTypeName","src":"14663:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":5213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14708:4:33","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":5217,"mutability":"constant","name":"Conduit_transferItem_token_ptr","nameLocation":"14731:30:33","nodeType":"VariableDeclaration","scope":5286,"src":"14714:54:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5215,"name":"uint256","nodeType":"ElementaryTypeName","src":"14714:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":5216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14764:4:33","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":5220,"mutability":"constant","name":"Conduit_transferItem_from_ptr","nameLocation":"14787:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"14770:53:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5218,"name":"uint256","nodeType":"ElementaryTypeName","src":"14770:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":5219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14819:4:33","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":5223,"mutability":"constant","name":"Conduit_transferItem_to_ptr","nameLocation":"14842:27:33","nodeType":"VariableDeclaration","scope":5286,"src":"14825:51:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5221,"name":"uint256","nodeType":"ElementaryTypeName","src":"14825:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":5222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14872:4:33","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":5226,"mutability":"constant","name":"Conduit_transferItem_identifier_ptr","nameLocation":"14895:35:33","nodeType":"VariableDeclaration","scope":5286,"src":"14878:59:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5224,"name":"uint256","nodeType":"ElementaryTypeName","src":"14878:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":5225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14933:4:33","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":5229,"mutability":"constant","name":"Conduit_transferItem_amount_ptr","nameLocation":"14956:31:33","nodeType":"VariableDeclaration","scope":5286,"src":"14939:55:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5227,"name":"uint256","nodeType":"ElementaryTypeName","src":"14939:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":5228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14990:4:33","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":5233,"mutability":"constant","name":"InexactFraction_error_signature","nameLocation":"15131:31:33","nodeType":"VariableDeclaration","scope":5286,"src":"15114:125:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5230,"name":"uint256","nodeType":"ElementaryTypeName","src":"15114:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307863363363663038393030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15171:66:33","typeDescriptions":{"typeIdentifier":"t_rational_89665614956009371092639817778489642249011143353086017667586940420206184366080_by_1","typeString":"int_const 8966...(69 digits omitted)...6080"},"value":"0xc63cf08900000000000000000000000000000000000000000000000000000000"}],"id":5232,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15165:74:33","typeDescriptions":{"typeIdentifier":"t_rational_89665614956009371092639817778489642249011143353086017667586940420206184366080_by_1","typeString":"int_const 8966...(69 digits omitted)...6080"}},"visibility":"internal"},{"constant":true,"id":5236,"mutability":"constant","name":"InexactFraction_error_len","nameLocation":"15258:25:33","nodeType":"VariableDeclaration","scope":5286,"src":"15241:49:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5234,"name":"uint256","nodeType":"ElementaryTypeName","src":"15241:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":5235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15286:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":5239,"mutability":"constant","name":"Ecrecover_precompile","nameLocation":"15376:20:33","nodeType":"VariableDeclaration","scope":5286,"src":"15359:41:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5237,"name":"uint256","nodeType":"ElementaryTypeName","src":"15359:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":5238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15399:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":5242,"mutability":"constant","name":"Ecrecover_args_size","nameLocation":"15419:19:33","nodeType":"VariableDeclaration","scope":5286,"src":"15402:43:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5240,"name":"uint256","nodeType":"ElementaryTypeName","src":"15402:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":5241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15441:4:33","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":5245,"mutability":"constant","name":"Signature_lower_v","nameLocation":"15464:17:33","nodeType":"VariableDeclaration","scope":5286,"src":"15447:39:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5243,"name":"uint256","nodeType":"ElementaryTypeName","src":"15447:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3237","id":5244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15484:2:33","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"visibility":"internal"},{"constant":true,"id":5249,"mutability":"constant","name":"BadSignatureV_error_signature","nameLocation":"15570:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"15553:123:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5246,"name":"uint256","nodeType":"ElementaryTypeName","src":"15553:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307831663030336430613030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15608:66:33","typeDescriptions":{"typeIdentifier":"t_rational_14022119582207878935470480432673551110355818459623658670638656538471984791552_by_1","typeString":"int_const 1402...(69 digits omitted)...1552"},"value":"0x1f003d0a00000000000000000000000000000000000000000000000000000000"}],"id":5248,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15602:74:33","typeDescriptions":{"typeIdentifier":"t_rational_14022119582207878935470480432673551110355818459623658670638656538471984791552_by_1","typeString":"int_const 1402...(69 digits omitted)...1552"}},"visibility":"internal"},{"constant":true,"id":5252,"mutability":"constant","name":"BadSignatureV_error_offset","nameLocation":"15695:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"15678:50:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5250,"name":"uint256","nodeType":"ElementaryTypeName","src":"15678:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":5251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15724:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":5255,"mutability":"constant","name":"BadSignatureV_error_length","nameLocation":"15747:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"15730:50:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5253,"name":"uint256","nodeType":"ElementaryTypeName","src":"15730:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":5254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15776:4:33","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":5259,"mutability":"constant","name":"InvalidSigner_error_signature","nameLocation":"15859:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"15842:123:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5256,"name":"uint256","nodeType":"ElementaryTypeName","src":"15842:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307838313565316436343030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15897:66:33","typeDescriptions":{"typeIdentifier":"t_rational_58514643937969255868553461704225490142875800142601383850338701997972496842752_by_1","typeString":"int_const 5851...(69 digits omitted)...2752"},"value":"0x815e1d6400000000000000000000000000000000000000000000000000000000"}],"id":5258,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15891:74:33","typeDescriptions":{"typeIdentifier":"t_rational_58514643937969255868553461704225490142875800142601383850338701997972496842752_by_1","typeString":"int_const 5851...(69 digits omitted)...2752"}},"visibility":"internal"},{"constant":true,"id":5262,"mutability":"constant","name":"InvalidSigner_error_length","nameLocation":"15984:26:33","nodeType":"VariableDeclaration","scope":5286,"src":"15967:50:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5260,"name":"uint256","nodeType":"ElementaryTypeName","src":"15967:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":5261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16013:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":5266,"mutability":"constant","name":"InvalidSignature_error_signature","nameLocation":"16099:32:33","nodeType":"VariableDeclaration","scope":5286,"src":"16082:126:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5263,"name":"uint256","nodeType":"ElementaryTypeName","src":"16082:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307838626161353739663030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16140:66:33","typeDescriptions":{"typeIdentifier":"t_rational_63172454692650044175922453017377725552231499603677422236261231756097827635200_by_1","typeString":"int_const 6317...(69 digits omitted)...5200"},"value":"0x8baa579f00000000000000000000000000000000000000000000000000000000"}],"id":5265,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16134:74:33","typeDescriptions":{"typeIdentifier":"t_rational_63172454692650044175922453017377725552231499603677422236261231756097827635200_by_1","typeString":"int_const 6317...(69 digits omitted)...5200"}},"visibility":"internal"},{"constant":true,"id":5269,"mutability":"constant","name":"InvalidSignature_error_length","nameLocation":"16227:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"16210:53:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5267,"name":"uint256","nodeType":"ElementaryTypeName","src":"16210:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":5268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16259:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":5273,"mutability":"constant","name":"BadContractSignature_error_signature","nameLocation":"16349:36:33","nodeType":"VariableDeclaration","scope":5286,"src":"16332:130:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5270,"name":"uint256","nodeType":"ElementaryTypeName","src":"16332:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307834663766623830643030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":5271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16394:66:33","typeDescriptions":{"typeIdentifier":"t_rational_35958374887112015628044892763368989819543574546649478260886399961310217371648_by_1","typeString":"int_const 3595...(69 digits omitted)...1648"},"value":"0x4f7fb80d00000000000000000000000000000000000000000000000000000000"}],"id":5272,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16388:74:33","typeDescriptions":{"typeIdentifier":"t_rational_35958374887112015628044892763368989819543574546649478260886399961310217371648_by_1","typeString":"int_const 3595...(69 digits omitted)...1648"}},"visibility":"internal"},{"constant":true,"id":5276,"mutability":"constant","name":"BadContractSignature_error_length","nameLocation":"16481:33:33","nodeType":"VariableDeclaration","scope":5286,"src":"16464:57:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5274,"name":"uint256","nodeType":"ElementaryTypeName","src":"16464:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":5275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16517:4:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":5279,"mutability":"constant","name":"NumBitsAfterSelector","nameLocation":"16541:20:33","nodeType":"VariableDeclaration","scope":5286,"src":"16524:44:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5277,"name":"uint256","nodeType":"ElementaryTypeName","src":"16524:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786530","id":5278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16564:4:33","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"0xe0"},"visibility":"internal"},{"constant":true,"id":5282,"mutability":"constant","name":"NonMatchSelector_MagicModulus","nameLocation":"16745:29:33","nodeType":"VariableDeclaration","scope":5286,"src":"16728:51:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5280,"name":"uint256","nodeType":"ElementaryTypeName","src":"16728:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3639","id":5281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16777:2:33","typeDescriptions":{"typeIdentifier":"t_rational_69_by_1","typeString":"int_const 69"},"value":"69"},"visibility":"internal"},{"constant":true,"id":5285,"mutability":"constant","name":"NonMatchSelector_MagicRemainder","nameLocation":"16880:31:33","nodeType":"VariableDeclaration","scope":5286,"src":"16863:55:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5283,"name":"uint256","nodeType":"ElementaryTypeName","src":"16863:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783164","id":5284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16914:4:33","typeDescriptions":{"typeIdentifier":"t_rational_29_by_1","typeString":"int_const 29"},"value":"0x1d"},"visibility":"internal"}],"src":"32:16888:33"},"id":33},"contracts/lib/ConsiderationEnums.sol":{"ast":{"absolutePath":"contracts/lib/ConsiderationEnums.sol","exportedSymbols":{"ItemType":[5292]},"id":5293,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5287,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:34"},{"canonicalName":"ItemType","id":5292,"members":[{"id":5288,"name":"NATIVE","nameLocation":"77:6:34","nodeType":"EnumValue","src":"77:6:34"},{"id":5289,"name":"ERC20","nameLocation":"89:5:34","nodeType":"EnumValue","src":"89:5:34"},{"id":5290,"name":"ERC721","nameLocation":"100:6:34","nodeType":"EnumValue","src":"100:6:34"},{"id":5291,"name":"ERC1155","nameLocation":"112:7:34","nodeType":"EnumValue","src":"112:7:34"}],"name":"ItemType","nameLocation":"62:8:34","nodeType":"EnumDefinition","src":"57:64:34"}],"src":"32:89:34"},"id":34},"contracts/lib/ConsiderationStructs.sol":{"ast":{"absolutePath":"contracts/lib/ConsiderationStructs.sol","exportedSymbols":{"Order":[5372],"OrderComponents":[5331],"OrderParameters":[5366],"OrderStatus":[5389]},"id":5390,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5294,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:35"},{"canonicalName":"OrderComponents","id":5331,"members":[{"constant":false,"id":5296,"mutability":"mutable","name":"offerer","nameLocation":"94:7:35","nodeType":"VariableDeclaration","scope":5331,"src":"86:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5295,"name":"address","nodeType":"ElementaryTypeName","src":"86:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5298,"mutability":"mutable","name":"token","nameLocation":"115:5:35","nodeType":"VariableDeclaration","scope":5331,"src":"107:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5297,"name":"address","nodeType":"ElementaryTypeName","src":"107:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5300,"mutability":"mutable","name":"identifier","nameLocation":"134:10:35","nodeType":"VariableDeclaration","scope":5331,"src":"126:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5299,"name":"uint256","nodeType":"ElementaryTypeName","src":"126:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5302,"mutability":"mutable","name":"currency","nameLocation":"158:8:35","nodeType":"VariableDeclaration","scope":5331,"src":"150:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5301,"name":"address","nodeType":"ElementaryTypeName","src":"150:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5304,"mutability":"mutable","name":"artist","nameLocation":"180:6:35","nodeType":"VariableDeclaration","scope":5331,"src":"172:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5303,"name":"address","nodeType":"ElementaryTypeName","src":"172:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5306,"mutability":"mutable","name":"platform","nameLocation":"200:8:35","nodeType":"VariableDeclaration","scope":5331,"src":"192:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5305,"name":"address","nodeType":"ElementaryTypeName","src":"192:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5308,"mutability":"mutable","name":"startTime","nameLocation":"222:9:35","nodeType":"VariableDeclaration","scope":5331,"src":"214:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5307,"name":"uint256","nodeType":"ElementaryTypeName","src":"214:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5310,"mutability":"mutable","name":"endTime","nameLocation":"245:7:35","nodeType":"VariableDeclaration","scope":5331,"src":"237:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5309,"name":"uint256","nodeType":"ElementaryTypeName","src":"237:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5312,"mutability":"mutable","name":"duration","nameLocation":"266:8:35","nodeType":"VariableDeclaration","scope":5331,"src":"258:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5311,"name":"uint256","nodeType":"ElementaryTypeName","src":"258:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5314,"mutability":"mutable","name":"periods","nameLocation":"288:7:35","nodeType":"VariableDeclaration","scope":5331,"src":"280:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5313,"name":"uint256","nodeType":"ElementaryTypeName","src":"280:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5316,"mutability":"mutable","name":"amount","nameLocation":"309:6:35","nodeType":"VariableDeclaration","scope":5331,"src":"301:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5315,"name":"uint256","nodeType":"ElementaryTypeName","src":"301:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5318,"mutability":"mutable","name":"ratio","nameLocation":"329:5:35","nodeType":"VariableDeclaration","scope":5331,"src":"321:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5317,"name":"uint256","nodeType":"ElementaryTypeName","src":"321:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5320,"mutability":"mutable","name":"royalty","nameLocation":"348:7:35","nodeType":"VariableDeclaration","scope":5331,"src":"340:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5319,"name":"uint256","nodeType":"ElementaryTypeName","src":"340:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5322,"mutability":"mutable","name":"fee","nameLocation":"369:3:35","nodeType":"VariableDeclaration","scope":5331,"src":"361:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5321,"name":"uint256","nodeType":"ElementaryTypeName","src":"361:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5324,"mutability":"mutable","name":"withdrawFee","nameLocation":"386:11:35","nodeType":"VariableDeclaration","scope":5331,"src":"378:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5323,"name":"uint256","nodeType":"ElementaryTypeName","src":"378:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5326,"mutability":"mutable","name":"salt","nameLocation":"411:4:35","nodeType":"VariableDeclaration","scope":5331,"src":"403:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5325,"name":"uint256","nodeType":"ElementaryTypeName","src":"403:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5328,"mutability":"mutable","name":"conduitKey","nameLocation":"429:10:35","nodeType":"VariableDeclaration","scope":5331,"src":"421:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5327,"name":"bytes32","nodeType":"ElementaryTypeName","src":"421:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5330,"mutability":"mutable","name":"counter","nameLocation":"453:7:35","nodeType":"VariableDeclaration","scope":5331,"src":"445:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5329,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OrderComponents","nameLocation":"64:15:35","nodeType":"StructDefinition","scope":5390,"src":"57:406:35","visibility":"public"},{"canonicalName":"OrderParameters","id":5366,"members":[{"constant":false,"id":5333,"mutability":"mutable","name":"offerer","nameLocation":"502:7:35","nodeType":"VariableDeclaration","scope":5366,"src":"494:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5332,"name":"address","nodeType":"ElementaryTypeName","src":"494:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5335,"mutability":"mutable","name":"token","nameLocation":"534:5:35","nodeType":"VariableDeclaration","scope":5366,"src":"526:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5334,"name":"address","nodeType":"ElementaryTypeName","src":"526:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5337,"mutability":"mutable","name":"identifier","nameLocation":"566:10:35","nodeType":"VariableDeclaration","scope":5366,"src":"558:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5336,"name":"uint256","nodeType":"ElementaryTypeName","src":"558:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5339,"mutability":"mutable","name":"currency","nameLocation":"598:8:35","nodeType":"VariableDeclaration","scope":5366,"src":"590:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5338,"name":"address","nodeType":"ElementaryTypeName","src":"590:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5341,"mutability":"mutable","name":"artist","nameLocation":"630:6:35","nodeType":"VariableDeclaration","scope":5366,"src":"622:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5340,"name":"address","nodeType":"ElementaryTypeName","src":"622:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5343,"mutability":"mutable","name":"platform","nameLocation":"662:8:35","nodeType":"VariableDeclaration","scope":5366,"src":"654:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5342,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5345,"mutability":"mutable","name":"startTime","nameLocation":"694:9:35","nodeType":"VariableDeclaration","scope":5366,"src":"686:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5344,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5347,"mutability":"mutable","name":"endTime","nameLocation":"726:7:35","nodeType":"VariableDeclaration","scope":5366,"src":"718:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5346,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5349,"mutability":"mutable","name":"duration","nameLocation":"758:8:35","nodeType":"VariableDeclaration","scope":5366,"src":"750:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5348,"name":"uint256","nodeType":"ElementaryTypeName","src":"750:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5351,"mutability":"mutable","name":"periods","nameLocation":"791:7:35","nodeType":"VariableDeclaration","scope":5366,"src":"783:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5350,"name":"uint256","nodeType":"ElementaryTypeName","src":"783:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5353,"mutability":"mutable","name":"amount","nameLocation":"824:6:35","nodeType":"VariableDeclaration","scope":5366,"src":"816:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5352,"name":"uint256","nodeType":"ElementaryTypeName","src":"816:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5355,"mutability":"mutable","name":"ratio","nameLocation":"857:5:35","nodeType":"VariableDeclaration","scope":5366,"src":"849:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5354,"name":"uint256","nodeType":"ElementaryTypeName","src":"849:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5357,"mutability":"mutable","name":"royalty","nameLocation":"890:7:35","nodeType":"VariableDeclaration","scope":5366,"src":"882:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5356,"name":"uint256","nodeType":"ElementaryTypeName","src":"882:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5359,"mutability":"mutable","name":"fee","nameLocation":"923:3:35","nodeType":"VariableDeclaration","scope":5366,"src":"915:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5358,"name":"uint256","nodeType":"ElementaryTypeName","src":"915:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5361,"mutability":"mutable","name":"withdrawFee","nameLocation":"956:11:35","nodeType":"VariableDeclaration","scope":5366,"src":"948:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5360,"name":"uint256","nodeType":"ElementaryTypeName","src":"948:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5363,"mutability":"mutable","name":"salt","nameLocation":"989:4:35","nodeType":"VariableDeclaration","scope":5366,"src":"981:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5362,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5365,"mutability":"mutable","name":"conduitKey","nameLocation":"1022:10:35","nodeType":"VariableDeclaration","scope":5366,"src":"1014:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5364,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1014:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"OrderParameters","nameLocation":"472:15:35","nodeType":"StructDefinition","scope":5390,"src":"465:579:35","visibility":"public"},{"canonicalName":"Order","id":5372,"members":[{"constant":false,"id":5369,"mutability":"mutable","name":"parameters","nameLocation":"1081:10:35","nodeType":"VariableDeclaration","scope":5372,"src":"1065:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"},"typeName":{"id":5368,"nodeType":"UserDefinedTypeName","pathNode":{"id":5367,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"1065:15:35"},"referencedDeclaration":5366,"src":"1065:15:35","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":5371,"mutability":"mutable","name":"signature","nameLocation":"1103:9:35","nodeType":"VariableDeclaration","scope":5372,"src":"1097:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":5370,"name":"bytes","nodeType":"ElementaryTypeName","src":"1097:5:35","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Order","nameLocation":"1053:5:35","nodeType":"StructDefinition","scope":5390,"src":"1046:69:35","visibility":"public"},{"canonicalName":"OrderStatus","id":5389,"members":[{"constant":false,"id":5374,"mutability":"mutable","name":"isValidated","nameLocation":"1147:11:35","nodeType":"VariableDeclaration","scope":5389,"src":"1142:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5373,"name":"bool","nodeType":"ElementaryTypeName","src":"1142:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5376,"mutability":"mutable","name":"isCancelled","nameLocation":"1169:11:35","nodeType":"VariableDeclaration","scope":5389,"src":"1164:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5375,"name":"bool","nodeType":"ElementaryTypeName","src":"1164:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5378,"mutability":"mutable","name":"isFinalized","nameLocation":"1191:11:35","nodeType":"VariableDeclaration","scope":5389,"src":"1186:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5377,"name":"bool","nodeType":"ElementaryTypeName","src":"1186:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5380,"mutability":"mutable","name":"isBroken","nameLocation":"1213:8:35","nodeType":"VariableDeclaration","scope":5389,"src":"1208:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5379,"name":"bool","nodeType":"ElementaryTypeName","src":"1208:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5382,"mutability":"mutable","name":"fulfiller","nameLocation":"1235:9:35","nodeType":"VariableDeclaration","scope":5389,"src":"1227:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5381,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5384,"mutability":"mutable","name":"startedAt","nameLocation":"1258:9:35","nodeType":"VariableDeclaration","scope":5389,"src":"1250:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5383,"name":"uint256","nodeType":"ElementaryTypeName","src":"1250:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5386,"mutability":"mutable","name":"shadowId","nameLocation":"1281:8:35","nodeType":"VariableDeclaration","scope":5389,"src":"1273:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5385,"name":"uint256","nodeType":"ElementaryTypeName","src":"1273:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5388,"mutability":"mutable","name":"paidTimes","nameLocation":"1303:9:35","nodeType":"VariableDeclaration","scope":5389,"src":"1295:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5387,"name":"uint256","nodeType":"ElementaryTypeName","src":"1295:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OrderStatus","nameLocation":"1124:11:35","nodeType":"StructDefinition","scope":5390,"src":"1117:198:35","visibility":"public"}],"src":"32:1283:35"},"id":35},"contracts/lib/CounterManager.sol":{"ast":{"absolutePath":"contracts/lib/CounterManager.sol","exportedSymbols":{"ConsiderationEventsAndErrors":[4158],"CounterManager":[5442],"ReentrancyGuard":[7767]},"id":5443,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5391,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:36"},{"absolutePath":"contracts/interfaces/ConsiderationEventsAndErrors.sol","file":"../interfaces/ConsiderationEventsAndErrors.sol","id":5393,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5443,"sourceUnit":4159,"src":"58:98:36","symbolAliases":[{"foreign":{"id":5392,"name":"ConsiderationEventsAndErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4158,"src":"71:28:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ReentrancyGuard.sol","file":"./ReentrancyGuard.sol","id":5395,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5443,"sourceUnit":7768,"src":"158:56:36","symbolAliases":[{"foreign":{"id":5394,"name":"ReentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7767,"src":"167:15:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5396,"name":"ConsiderationEventsAndErrors","nodeType":"IdentifierPath","referencedDeclaration":4158,"src":"243:28:36"},"id":5397,"nodeType":"InheritanceSpecifier","src":"243:28:36"},{"baseName":{"id":5398,"name":"ReentrancyGuard","nodeType":"IdentifierPath","referencedDeclaration":7767,"src":"273:15:36"},"id":5399,"nodeType":"InheritanceSpecifier","src":"273:15:36"}],"canonicalName":"CounterManager","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5442,"linearizedBaseContracts":[5442,7767,4247,4158],"name":"CounterManager","nameLocation":"225:14:36","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5403,"mutability":"mutable","name":"_counters","nameLocation":"332:9:36","nodeType":"VariableDeclaration","scope":5442,"src":"296:45:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":5402,"keyType":{"id":5400,"name":"address","nodeType":"ElementaryTypeName","src":"304:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"296:27:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":5401,"name":"uint256","nodeType":"ElementaryTypeName","src":"315:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":5426,"nodeType":"Block","src":"415:177:36","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5408,"name":"_assertNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"425:19:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":5409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"425:21:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5410,"nodeType":"ExpressionStatement","src":"425:21:36"},{"id":5419,"nodeType":"UncheckedBlock","src":"457:71:36","statements":[{"expression":{"id":5417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5411,"name":"newCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5406,"src":"481:10:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"494:23:36","subExpression":{"baseExpression":{"id":5412,"name":"_counters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5403,"src":"496:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5415,"indexExpression":{"expression":{"id":5413,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"506:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"506:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"496:21:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"481:36:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5418,"nodeType":"ExpressionStatement","src":"481:36:36"}]},{"eventCall":{"arguments":[{"id":5421,"name":"newCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5406,"src":"562:10:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5422,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"574:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"574:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5420,"name":"CounterIncremented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4052,"src":"543:18:36","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":5424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"543:42:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5425,"nodeType":"EmitStatement","src":"538:47:36"}]},"id":5427,"implemented":true,"kind":"function","modifiers":[],"name":"_incrementCounter","nameLocation":"357:17:36","nodeType":"FunctionDefinition","parameters":{"id":5404,"nodeType":"ParameterList","parameters":[],"src":"374:2:36"},"returnParameters":{"id":5407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5406,"mutability":"mutable","name":"newCounter","nameLocation":"403:10:36","nodeType":"VariableDeclaration","scope":5427,"src":"395:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5405,"name":"uint256","nodeType":"ElementaryTypeName","src":"395:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"394:20:36"},"scope":5442,"src":"348:244:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5440,"nodeType":"Block","src":"711:52:36","statements":[{"expression":{"id":5438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5434,"name":"currentCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5432,"src":"721:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":5435,"name":"_counters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5403,"src":"738:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5437,"indexExpression":{"id":5436,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"748:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"738:18:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"721:35:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5439,"nodeType":"ExpressionStatement","src":"721:35:36"}]},"id":5441,"implemented":true,"kind":"function","modifiers":[],"name":"_getCounter","nameLocation":"607:11:36","nodeType":"FunctionDefinition","parameters":{"id":5430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5429,"mutability":"mutable","name":"offerer","nameLocation":"627:7:36","nodeType":"VariableDeclaration","scope":5441,"src":"619:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5428,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"618:17:36"},"returnParameters":{"id":5433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5432,"mutability":"mutable","name":"currentCounter","nameLocation":"691:14:36","nodeType":"VariableDeclaration","scope":5441,"src":"683:22:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5431,"name":"uint256","nodeType":"ElementaryTypeName","src":"683:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"682:24:36"},"scope":5442,"src":"598:165:36","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5443,"src":"216:549:36","usedErrors":[4057,4061,4065,4069,4072,4079,4082,4087,4096,4099,4106,4109,4114,4119,4122,4125,4130,4133,4136,4139,4143,4147,4151,4155,4157,4246]}],"src":"32:734:36"},"id":36},"contracts/lib/Executor.sol":{"ast":{"absolutePath":"contracts/lib/Executor.sol","exportedSymbols":{"AccumulatorArmed":[5193],"AccumulatorDisarmed":[5190],"Accumulator_array_length_ptr":[5205],"Accumulator_array_offset":[5211],"Accumulator_array_offset_ptr":[5202],"Accumulator_conduitKey_ptr":[5196],"Accumulator_itemSizeOffsetDifference":[5208],"Accumulator_selector_ptr":[5199],"AdditionalRecipients_size":[4910],"AdvancedOrder_numerator_offset":[4862],"AlmostOneWord":[4865],"BadContractSignature_error_length":[5276],"BadContractSignature_error_signature":[5273],"BadSignatureV_error_length":[5255],"BadSignatureV_error_offset":[5252],"BadSignatureV_error_signature":[5249],"BasicOrder_additionalRecipients_data_cdPtr":[5001],"BasicOrder_additionalRecipients_head_cdPtr":[4992],"BasicOrder_additionalRecipients_head_ptr":[5061],"BasicOrder_additionalRecipients_length_cdPtr":[4998],"BasicOrder_basicOrderType_cdPtr":[4977],"BasicOrder_basicOrderType_range":[5007],"BasicOrder_common_params_size":[4901],"BasicOrder_considerationAmount_cdPtr":[4962],"BasicOrder_considerationHashesArray_ptr":[4904],"BasicOrder_considerationItem_endAmount_ptr":[5025],"BasicOrder_considerationItem_identifier_ptr":[5019],"BasicOrder_considerationItem_itemType_ptr":[5013],"BasicOrder_considerationItem_startAmount_ptr":[5022],"BasicOrder_considerationItem_token_ptr":[5016],"BasicOrder_considerationItem_typeHash_ptr":[5010],"BasicOrder_considerationToken_cdPtr":[4959],"BasicOrder_endAmount_cdPtr":[4898],"BasicOrder_fulfillerConduit_cdPtr":[4986],"BasicOrder_offerAmount_cdPtr":[4974],"BasicOrder_offerItem_endAmount_ptr":[5037],"BasicOrder_offerItem_itemType_ptr":[5031],"BasicOrder_offerItem_token_ptr":[5034],"BasicOrder_offerItem_typeHash_ptr":[5028],"BasicOrder_offerToken_cdPtr":[4971],"BasicOrder_offererConduit_cdPtr":[4983],"BasicOrder_offerer_cdPtr":[4965],"BasicOrder_order_considerationHashes_ptr":[5049],"BasicOrder_order_counter_ptr":[5058],"BasicOrder_order_offerHashes_ptr":[5046],"BasicOrder_order_offerer_ptr":[5043],"BasicOrder_order_orderType_ptr":[5052],"BasicOrder_order_startTime_ptr":[5055],"BasicOrder_order_typeHash_ptr":[5040],"BasicOrder_parameters_cdPtr":[4956],"BasicOrder_parameters_ptr":[5004],"BasicOrder_signature_cdPtr":[4995],"BasicOrder_signature_ptr":[5064],"BasicOrder_startTime_cdPtr":[4980],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[4989],"BasicOrder_zone_cdPtr":[4968],"Common_amount_offset":[4793],"Common_identifier_offset":[4790],"Common_token_offset":[4787],"ConduitInterface":[4006],"ConduitItemType":[3642],"Conduit_execute_ConduitTransfer_length":[5160],"Conduit_execute_ConduitTransfer_length_ptr":[5166],"Conduit_execute_ConduitTransfer_offset_ptr":[5163],"Conduit_execute_ConduitTransfer_ptr":[5157],"Conduit_execute_signature":[5148],"Conduit_execute_transferAmount_ptr":[5184],"Conduit_execute_transferFrom_ptr":[5175],"Conduit_execute_transferIdentifier_ptr":[5181],"Conduit_execute_transferItemType_ptr":[5169],"Conduit_execute_transferTo_ptr":[5178],"Conduit_execute_transferToken_ptr":[5172],"Conduit_transferItem_amount_ptr":[5229],"Conduit_transferItem_from_ptr":[5220],"Conduit_transferItem_identifier_ptr":[5226],"Conduit_transferItem_size":[5214],"Conduit_transferItem_to_ptr":[5223],"Conduit_transferItem_token_ptr":[5217],"ConsiderItem_recipient_offset":[4811],"ConsiderationItem_recipient_offset":[4808],"CostPerWord":[5123],"Create2AddressDerivation_length":[5132],"Create2AddressDerivation_ptr":[5129],"DefaultFreeMemoryPointer":[4889],"ECDSA_MaxLength":[5075],"ECDSA_signature_s_offset":[5078],"ECDSA_signature_v_offset":[5081],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[5072],"EIP1271_isValidSignature_calldata_baseLength":[5097],"EIP1271_isValidSignature_digest_negativeOffset":[5091],"EIP1271_isValidSignature_selector":[5085],"EIP1271_isValidSignature_selector_negativeOffset":[5094],"EIP1271_isValidSignature_signatureHead_negativeOffset":[5088],"EIP1271_isValidSignature_signature_head_offset":[5100],"EIP2098_allButHighestBitMask":[5068],"EIP712_DigestPayload_size":[4919],"EIP712_DomainSeparator_offset":[4913],"EIP712_OrderHash_offset":[4916],"EIP712_Order_size":[4907],"EIP_712_PREFIX":[5117],"Ecrecover_args_size":[5242],"Ecrecover_precompile":[5239],"Execution_conduit_offset":[4817],"Execution_offerer_offset":[4814],"Executor":[5917],"ExtraGasBuffer":[5120],"FiveWords":[4880],"FourWords":[4877],"FreeMemoryPointerSlot":[4883],"Fulfillment_itemIndex_offset":[4859],"InexactFraction_error_len":[5236],"InexactFraction_error_signature":[5233],"InvalidFulfillmentComponentData_error_len":[4824],"InvalidFulfillmentComponentData_error_signature":[4821],"InvalidSignature_error_length":[5269],"InvalidSignature_error_signature":[5266],"InvalidSigner_error_length":[5262],"InvalidSigner_error_signature":[5259],"ItemType":[5292],"MaskOverByteTwelve":[5136],"MaskOverFirstFourBytes":[5144],"MaskOverLastTwentyBytes":[5140],"MaxUint120":[5154],"MaxUint8":[5151],"MemoryExpansionCoefficient":[5126],"MissingItemAmount_error_len":[4844],"MissingItemAmount_error_signature":[4841],"NameLengthPtr":[4766],"NameWithLength":[4769],"NoContract_error_length":[5113],"NoContract_error_sig_ptr":[5107],"NoContract_error_signature":[5104],"NoContract_error_token_ptr":[5110],"NonMatchSelector_MagicModulus":[5282],"NonMatchSelector_MagicRemainder":[5285],"NumBitsAfterSelector":[5279],"OneConduitExecute_size":[5187],"OneWord":[4868],"OrderFulfilled_baseOffset":[4932],"OrderFulfilled_baseSize":[4925],"OrderFulfilled_consideration_body_offset":[4953],"OrderFulfilled_consideration_head_offset":[4950],"OrderFulfilled_consideration_length_baseOffset":[4935],"OrderFulfilled_fulfiller_offset":[4941],"OrderFulfilled_offer_body_offset":[4947],"OrderFulfilled_offer_head_offset":[4944],"OrderFulfilled_offer_length_baseOffset":[4938],"OrderFulfilled_selector":[4929],"OrderParameters_conduit_offset":[4853],"OrderParameters_consideration_head_offset":[4850],"OrderParameters_counter_offset":[4856],"OrderParameters_offer_head_offset":[4847],"Panic_arithmetic":[4837],"Panic_error_length":[4834],"Panic_error_offset":[4831],"Panic_error_signature":[4828],"ReceivedItem_CommonParams_size":[4805],"ReceivedItem_amount_offset":[4799],"ReceivedItem_recipient_offset":[4802],"ReceivedItem_size":[4796],"Signature_lower_v":[5245],"Slot0x80":[4892],"Slot0xA0":[4895],"ThreeWords":[4874],"TokenTransferrer":[7995],"TwoWords":[4871],"Verifiers":[8438],"Version":[4772],"Version_length":[4775],"Version_shift":[4778],"ZeroSlot":[4886],"_ENTERED":[4784],"_NOT_ENTERED":[4781],"receivedItemsHash_ptr":[4922]},"id":5918,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5444,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:37"},{"absolutePath":"contracts/interfaces/ConduitInterface.sol","file":"../interfaces/ConduitInterface.sol","id":5446,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5918,"sourceUnit":4007,"src":"58:70:37","symbolAliases":[{"foreign":{"id":5445,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"67:16:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/conduit/lib/ConduitEnums.sol","file":"../conduit/lib/ConduitEnums.sol","id":5448,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5918,"sourceUnit":3643,"src":"130:66:37","symbolAliases":[{"foreign":{"id":5447,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"139:15:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationEnums.sol","file":"./ConsiderationEnums.sol","id":5450,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5918,"sourceUnit":5293,"src":"198:52:37","symbolAliases":[{"foreign":{"id":5449,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"207:8:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/Verifiers.sol","file":"./Verifiers.sol","id":5452,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5918,"sourceUnit":8439,"src":"252:44:37","symbolAliases":[{"foreign":{"id":5451,"name":"Verifiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8438,"src":"261:9:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/TokenTransferrer.sol","file":"./TokenTransferrer.sol","id":5454,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5918,"sourceUnit":7996,"src":"298:58:37","symbolAliases":[{"foreign":{"id":5453,"name":"TokenTransferrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7995,"src":"307:16:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":5455,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5918,"sourceUnit":5286,"src":"358:38:37","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5457,"name":"Verifiers","nodeType":"IdentifierPath","referencedDeclaration":8438,"src":"605:9:37"},"id":5458,"nodeType":"InheritanceSpecifier","src":"605:9:37"},{"baseName":{"id":5459,"name":"TokenTransferrer","nodeType":"IdentifierPath","referencedDeclaration":7995,"src":"616:16:37"},"id":5460,"nodeType":"InheritanceSpecifier","src":"616:16:37"}],"canonicalName":"Executor","contractDependencies":[],"contractKind":"contract","documentation":{"id":5456,"nodeType":"StructuredDocumentation","src":"398:185:37","text":" @title Executor\n @author 0age\n @notice Executor contains functions related to processing executions (i.e.\n         transferring items, either directly or via conduits)."},"fullyImplemented":true,"id":5917,"linearizedBaseContracts":[5917,7995,8438,7919,6071,4265,4363,4325,5442,7767,4247,4158,6031,4761],"name":"Executor","nameLocation":"593:8:37","nodeType":"ContractDefinition","nodes":[{"body":{"id":5469,"nodeType":"Block","src":"1060:2:37","statements":[]},"documentation":{"id":5461,"nodeType":"StructuredDocumentation","src":"639:348:37","text":" @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."},"id":5470,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":5466,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"1041:17:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5467,"kind":"baseConstructorSpecifier","modifierName":{"id":5465,"name":"Verifiers","nodeType":"IdentifierPath","referencedDeclaration":8438,"src":"1031:9:37"},"nodeType":"ModifierInvocation","src":"1031:28:37"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5463,"mutability":"mutable","name":"conduitController","nameLocation":"1012:17:37","nodeType":"VariableDeclaration","scope":5470,"src":"1004:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5462,"name":"address","nodeType":"ElementaryTypeName","src":"1004:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1003:27:37"},"returnParameters":{"id":5468,"nodeType":"ParameterList","parameters":[],"src":"1060:0:37"},"scope":5917,"src":"992:70:37","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5538,"nodeType":"Block","src":"2402:3288:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":5494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5489,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5486,"src":"2487:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2509:1:37","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":5491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2501:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":5490,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2501:7:37","typeDescriptions":{}}},"id":5493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2501:10:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2487:24:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5536,"nodeType":"Block","src":"5043:641:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"},"id":5509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5506,"name":"itemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5474,"src":"5138:8:37","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":5507,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"5150:8:37","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ItemType_$5292_$","typeString":"type(enum ItemType)"}},"id":5508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":5290,"src":"5150:15:37","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"}},"src":"5138:27:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5534,"nodeType":"Block","src":"5512:162:37","statements":[{"expression":{"arguments":[{"id":5527,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5476,"src":"5623:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5528,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5478,"src":"5630:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5529,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5480,"src":"5636:2:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5530,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5482,"src":"5640:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5531,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"5652:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5526,"name":"_performERC1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"5599:23:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":5532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5599:60:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5533,"nodeType":"ExpressionStatement","src":"5599:60:37"}]},"id":5535,"nodeType":"IfStatement","src":"5134:540:37","trueBody":{"id":5525,"nodeType":"Block","src":"5167:339:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5510,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"5263:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":5511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5273:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5263:11:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5517,"nodeType":"IfStatement","src":"5259:94:37","trueBody":{"id":5516,"nodeType":"Block","src":"5276:77:37","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5513,"name":"InvalidERC721TransferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4271,"src":"5305:27:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5305:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5515,"nodeType":"RevertStatement","src":"5298:36:37"}]}},{"expression":{"arguments":[{"id":5519,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5476,"src":"5463:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5520,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5478,"src":"5470:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5521,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5480,"src":"5476:2:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5522,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5482,"src":"5480:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5518,"name":"_performERC721Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7968,"src":"5440:22:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":5523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5440:51:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5524,"nodeType":"ExpressionStatement","src":"5440:51:37"}]}}]},"id":5537,"nodeType":"IfStatement","src":"2483:3201:37","trueBody":{"id":5505,"nodeType":"Block","src":"2513:2524:37","statements":[{"assignments":[5496],"declarations":[{"constant":false,"id":5496,"mutability":"mutable","name":"callDataOffset","nameLocation":"2615:14:37","nodeType":"VariableDeclaration","scope":5505,"src":"2607:22:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5495,"name":"uint256","nodeType":"ElementaryTypeName","src":"2607:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5497,"nodeType":"VariableDeclarationStatement","src":"2607:22:37"},{"AST":{"nodeType":"YulBlock","src":"2724:2102:37","statements":[{"nodeType":"YulAssignment","src":"2820:46:37","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"2844:21:37"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2838:5:37"},"nodeType":"YulFunctionCall","src":"2838:28:37"},"variableNames":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"2820:14:37"}]},{"expression":{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"2961:14:37"},{"name":"Conduit_execute_signature","nodeType":"YulIdentifier","src":"2977:25:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2954:6:37"},"nodeType":"YulFunctionCall","src":"2954:49:37"},"nodeType":"YulExpressionStatement","src":"2954:49:37"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"3154:14:37"},{"name":"Conduit_execute_ConduitTransfer_offset_ptr","nodeType":"YulIdentifier","src":"3194:42:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3125:3:37"},"nodeType":"YulFunctionCall","src":"3125:133:37"},{"name":"Conduit_execute_ConduitTransfer_ptr","nodeType":"YulIdentifier","src":"3280:35:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3097:6:37"},"nodeType":"YulFunctionCall","src":"3097:236:37"},"nodeType":"YulExpressionStatement","src":"3097:236:37"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"3484:14:37"},{"name":"Conduit_execute_ConduitTransfer_length_ptr","nodeType":"YulIdentifier","src":"3524:42:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3455:3:37"},"nodeType":"YulFunctionCall","src":"3455:133:37"},{"name":"Conduit_execute_ConduitTransfer_length","nodeType":"YulIdentifier","src":"3610:38:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3427:6:37"},"nodeType":"YulFunctionCall","src":"3427:239:37"},"nodeType":"YulExpressionStatement","src":"3427:239:37"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"3766:14:37"},{"name":"Conduit_execute_transferItemType_ptr","nodeType":"YulIdentifier","src":"3782:36:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3762:3:37"},"nodeType":"YulFunctionCall","src":"3762:57:37"},{"name":"itemType","nodeType":"YulIdentifier","src":"3841:8:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3734:6:37"},"nodeType":"YulFunctionCall","src":"3734:133:37"},"nodeType":"YulExpressionStatement","src":"3734:133:37"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"3963:14:37"},{"name":"Conduit_execute_transferToken_ptr","nodeType":"YulIdentifier","src":"3979:33:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3959:3:37"},"nodeType":"YulFunctionCall","src":"3959:54:37"},{"name":"token","nodeType":"YulIdentifier","src":"4035:5:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3931:6:37"},"nodeType":"YulFunctionCall","src":"3931:127:37"},"nodeType":"YulExpressionStatement","src":"3931:127:37"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"4164:14:37"},{"name":"Conduit_execute_transferFrom_ptr","nodeType":"YulIdentifier","src":"4180:32:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4160:3:37"},"nodeType":"YulFunctionCall","src":"4160:53:37"},{"name":"from","nodeType":"YulIdentifier","src":"4235:4:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4132:6:37"},"nodeType":"YulFunctionCall","src":"4132:125:37"},"nodeType":"YulExpressionStatement","src":"4132:125:37"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"4345:14:37"},{"name":"Conduit_execute_transferTo_ptr","nodeType":"YulIdentifier","src":"4361:30:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:37"},"nodeType":"YulFunctionCall","src":"4341:51:37"},{"name":"to","nodeType":"YulIdentifier","src":"4394:2:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:37"},"nodeType":"YulFunctionCall","src":"4334:63:37"},"nodeType":"YulExpressionStatement","src":"4334:63:37"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"4504:14:37"},{"name":"Conduit_execute_transferIdentifier_ptr","nodeType":"YulIdentifier","src":"4520:38:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4500:3:37"},"nodeType":"YulFunctionCall","src":"4500:59:37"},{"name":"identifier","nodeType":"YulIdentifier","src":"4581:10:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4472:6:37"},"nodeType":"YulFunctionCall","src":"4472:137:37"},"nodeType":"YulExpressionStatement","src":"4472:137:37"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"4715:14:37"},{"name":"Conduit_execute_transferAmount_ptr","nodeType":"YulIdentifier","src":"4731:34:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4711:3:37"},"nodeType":"YulFunctionCall","src":"4711:55:37"},{"name":"amount","nodeType":"YulIdentifier","src":"4788:6:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4683:6:37"},"nodeType":"YulFunctionCall","src":"4683:129:37"},"nodeType":"YulExpressionStatement","src":"4683:129:37"}]},"evmVersion":"london","externalReferences":[{"declaration":5160,"isOffset":false,"isSlot":false,"src":"3610:38:37","valueSize":1},{"declaration":5166,"isOffset":false,"isSlot":false,"src":"3524:42:37","valueSize":1},{"declaration":5163,"isOffset":false,"isSlot":false,"src":"3194:42:37","valueSize":1},{"declaration":5157,"isOffset":false,"isSlot":false,"src":"3280:35:37","valueSize":1},{"declaration":5148,"isOffset":false,"isSlot":false,"src":"2977:25:37","valueSize":1},{"declaration":5184,"isOffset":false,"isSlot":false,"src":"4731:34:37","valueSize":1},{"declaration":5175,"isOffset":false,"isSlot":false,"src":"4180:32:37","valueSize":1},{"declaration":5181,"isOffset":false,"isSlot":false,"src":"4520:38:37","valueSize":1},{"declaration":5169,"isOffset":false,"isSlot":false,"src":"3782:36:37","valueSize":1},{"declaration":5178,"isOffset":false,"isSlot":false,"src":"4361:30:37","valueSize":1},{"declaration":5172,"isOffset":false,"isSlot":false,"src":"3979:33:37","valueSize":1},{"declaration":4883,"isOffset":false,"isSlot":false,"src":"2844:21:37","valueSize":1},{"declaration":5484,"isOffset":false,"isSlot":false,"src":"4788:6:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"2820:14:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"2961:14:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"3154:14:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"3484:14:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"3766:14:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"3963:14:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"4164:14:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"4345:14:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"4504:14:37","valueSize":1},{"declaration":5496,"isOffset":false,"isSlot":false,"src":"4715:14:37","valueSize":1},{"declaration":5478,"isOffset":false,"isSlot":false,"src":"4235:4:37","valueSize":1},{"declaration":5482,"isOffset":false,"isSlot":false,"src":"4581:10:37","valueSize":1},{"declaration":5474,"isOffset":false,"isSlot":false,"src":"3841:8:37","valueSize":1},{"declaration":5480,"isOffset":false,"isSlot":false,"src":"4394:2:37","valueSize":1},{"declaration":5476,"isOffset":false,"isSlot":false,"src":"4035:5:37","valueSize":1}],"id":5498,"nodeType":"InlineAssembly","src":"2715:2111:37"},{"expression":{"arguments":[{"id":5500,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5486,"src":"4930:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5501,"name":"callDataOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5496,"src":"4958:14:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5502,"name":"OneConduitExecute_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5187,"src":"4990:22:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5499,"name":"_callConduitUsingOffsets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"4888:24:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,uint256)"}},"id":5503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4888:138:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5504,"nodeType":"ExpressionStatement","src":"4888:138:37"}]}}]},"documentation":{"id":5471,"nodeType":"StructuredDocumentation","src":"1068:1100:37","text":" @dev Internal function to transfer an individual ERC721 or ERC1155 item\n      from a given originator to a given recipient. The accumulator will\n      be bypassed, meaning that this function should be utilized in cases\n      where multiple item transfers can be accumulated into a single\n      conduit call. Sufficient approvals must be set, either on the\n      respective conduit or on this contract itself.\n @param itemType   The type of item to transfer, either ERC721 or ERC1155.\n @param token      The token to transfer.\n @param from       The originator of the transfer.\n @param to         The recipient of the transfer.\n @param identifier The tokenId to transfer.\n @param amount     The amount to transfer.\n @param conduitKey A bytes32 value indicating what corresponding conduit,\n                   if any, to source token approvals from. The zero hash\n                   signifies that no conduit should be used, with direct\n                   approvals set on this contract."},"id":5539,"implemented":true,"kind":"function","modifiers":[],"name":"_transferIndividual721Or1155Item","nameLocation":"2182:32:37","nodeType":"FunctionDefinition","parameters":{"id":5487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5474,"mutability":"mutable","name":"itemType","nameLocation":"2233:8:37","nodeType":"VariableDeclaration","scope":5539,"src":"2224:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"},"typeName":{"id":5473,"nodeType":"UserDefinedTypeName","pathNode":{"id":5472,"name":"ItemType","nodeType":"IdentifierPath","referencedDeclaration":5292,"src":"2224:8:37"},"referencedDeclaration":5292,"src":"2224:8:37","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"}},"visibility":"internal"},{"constant":false,"id":5476,"mutability":"mutable","name":"token","nameLocation":"2259:5:37","nodeType":"VariableDeclaration","scope":5539,"src":"2251:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5475,"name":"address","nodeType":"ElementaryTypeName","src":"2251:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5478,"mutability":"mutable","name":"from","nameLocation":"2282:4:37","nodeType":"VariableDeclaration","scope":5539,"src":"2274:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5477,"name":"address","nodeType":"ElementaryTypeName","src":"2274:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5480,"mutability":"mutable","name":"to","nameLocation":"2304:2:37","nodeType":"VariableDeclaration","scope":5539,"src":"2296:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5479,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5482,"mutability":"mutable","name":"identifier","nameLocation":"2324:10:37","nodeType":"VariableDeclaration","scope":5539,"src":"2316:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5481,"name":"uint256","nodeType":"ElementaryTypeName","src":"2316:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5484,"mutability":"mutable","name":"amount","nameLocation":"2352:6:37","nodeType":"VariableDeclaration","scope":5539,"src":"2344:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5483,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5486,"mutability":"mutable","name":"conduitKey","nameLocation":"2376:10:37","nodeType":"VariableDeclaration","scope":5539,"src":"2368:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2368:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2214:178:37"},"returnParameters":{"id":5488,"nodeType":"ParameterList","parameters":[],"src":"2402:0:37"},"scope":5917,"src":"2173:3517:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5567,"nodeType":"Block","src":"5988:675:37","statements":[{"expression":{"arguments":[{"id":5548,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5544,"src":"6075:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5547,"name":"_assertNonZeroAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"6054:20:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6054:28:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5550,"nodeType":"ExpressionStatement","src":"6054:28:37"},{"assignments":[5552],"declarations":[{"constant":false,"id":5552,"mutability":"mutable","name":"success","nameLocation":"6179:7:37","nodeType":"VariableDeclaration","scope":5567,"src":"6174:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5551,"name":"bool","nodeType":"ElementaryTypeName","src":"6174:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5553,"nodeType":"VariableDeclarationStatement","src":"6174:12:37"},{"AST":{"nodeType":"YulBlock","src":"6206:136:37","statements":[{"nodeType":"YulAssignment","src":"6286:46:37","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"6302:3:37"},"nodeType":"YulFunctionCall","src":"6302:5:37"},{"name":"to","nodeType":"YulIdentifier","src":"6309:2:37"},{"name":"amount","nodeType":"YulIdentifier","src":"6313:6:37"},{"kind":"number","nodeType":"YulLiteral","src":"6321:1:37","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6324:1:37","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6327:1:37","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6330:1:37","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"6297:4:37"},"nodeType":"YulFunctionCall","src":"6297:35:37"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"6286:7:37"}]}]},"evmVersion":"london","externalReferences":[{"declaration":5544,"isOffset":false,"isSlot":false,"src":"6313:6:37","valueSize":1},{"declaration":5552,"isOffset":false,"isSlot":false,"src":"6286:7:37","valueSize":1},{"declaration":5542,"isOffset":false,"isSlot":false,"src":"6309:2:37","valueSize":1}],"id":5554,"nodeType":"InlineAssembly","src":"6197:145:37"},{"condition":{"id":5556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6388:8:37","subExpression":{"id":5555,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"6389:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5566,"nodeType":"IfStatement","src":"6384:273:37","trueBody":{"id":5565,"nodeType":"Block","src":"6398:259:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5557,"name":"_revertWithReasonIfOneIsReturned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"6488:32:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":5558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6488:34:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5559,"nodeType":"ExpressionStatement","src":"6488:34:37"},{"errorCall":{"arguments":[{"id":5561,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5542,"src":"6635:2:37","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":5562,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5544,"src":"6639:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5560,"name":"EtherTransferGenericFailure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4106,"src":"6607:27:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":5563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6607:39:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5564,"nodeType":"RevertStatement","src":"6600:46:37"}]}}]},"documentation":{"id":5540,"nodeType":"StructuredDocumentation","src":"5696:220:37","text":" @dev Internal function to transfer Ether or other native tokens to a\n      given recipient.\n @param to     The recipient of the transfer.\n @param amount The amount to transfer."},"id":5568,"implemented":true,"kind":"function","modifiers":[],"name":"_transferEth","nameLocation":"5930:12:37","nodeType":"FunctionDefinition","parameters":{"id":5545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5542,"mutability":"mutable","name":"to","nameLocation":"5959:2:37","nodeType":"VariableDeclaration","scope":5568,"src":"5943:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5541,"name":"address","nodeType":"ElementaryTypeName","src":"5943:15:37","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":5544,"mutability":"mutable","name":"amount","nameLocation":"5971:6:37","nodeType":"VariableDeclaration","scope":5568,"src":"5963:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5543,"name":"uint256","nodeType":"ElementaryTypeName","src":"5963:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5942:36:37"},"returnParameters":{"id":5546,"nodeType":"ParameterList","parameters":[],"src":"5988:0:37"},"scope":5917,"src":"5921:742:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5624,"nodeType":"Block","src":"7789:779:37","statements":[{"expression":{"arguments":[{"id":5585,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"7876:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5584,"name":"_assertNonZeroAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"7855:20:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7855:28:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5587,"nodeType":"ExpressionStatement","src":"7855:28:37"},{"expression":{"arguments":[{"id":5589,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5581,"src":"7994:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5590,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5579,"src":"8007:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5588,"name":"_triggerIfArmedAndNotAccumulatable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"7959:34:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (bytes memory,bytes32)"}},"id":5591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7959:59:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5592,"nodeType":"ExpressionStatement","src":"7959:59:37"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":5598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5593,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5579,"src":"8080:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8102:1:37","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":5595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8094:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":5594,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8094:7:37","typeDescriptions":{}}},"id":5597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8094:10:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8080:24:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5622,"nodeType":"Block","src":"8235:327:37","statements":[{"expression":{"arguments":[{"id":5608,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5579,"src":"8342:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5609,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5581,"src":"8370:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":5610,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"8399:15:37","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ConduitItemType_$3642_$","typeString":"type(enum ConduitItemType)"}},"id":5611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC20","nodeType":"MemberAccess","referencedDeclaration":3639,"src":"8399:21:37","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},{"id":5612,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5571,"src":"8438:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5613,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5573,"src":"8461:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5614,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"8483:2:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":5617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8511:1:37","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":5616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8503:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5615,"name":"uint256","nodeType":"ElementaryTypeName","src":"8503:7:37","typeDescriptions":{}}},"id":5618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8503:10:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5619,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"8531:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5607,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"8317:7:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_enum$_ConduitItemType_$3642_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,bytes memory,enum ConduitItemType,address,address,address,uint256,uint256) pure"}},"id":5620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8317:234:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5621,"nodeType":"ExpressionStatement","src":"8317:234:37"}]},"id":5623,"nodeType":"IfStatement","src":"8076:486:37","trueBody":{"id":5606,"nodeType":"Block","src":"8106:123:37","statements":[{"expression":{"arguments":[{"id":5600,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5571,"src":"8194:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5601,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5573,"src":"8201:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5602,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"8207:2:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5603,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"8211:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5599,"name":"_performERC20Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"8172:21:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":5604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8172:46:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5605,"nodeType":"ExpressionStatement","src":"8172:46:37"}]}}]},"documentation":{"id":5569,"nodeType":"StructuredDocumentation","src":"6669:925:37","text":" @dev Internal function to transfer ERC20 tokens from a given originator\n      to a given recipient using a given conduit if applicable. Sufficient\n      approvals must be set on this contract or on a respective conduit.\n @param token       The ERC20 token to transfer.\n @param from        The originator of the transfer.\n @param to          The recipient of the transfer.\n @param amount      The amount to transfer.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."},"id":5625,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC20","nameLocation":"7608:14:37","nodeType":"FunctionDefinition","parameters":{"id":5582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5571,"mutability":"mutable","name":"token","nameLocation":"7640:5:37","nodeType":"VariableDeclaration","scope":5625,"src":"7632:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5570,"name":"address","nodeType":"ElementaryTypeName","src":"7632:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5573,"mutability":"mutable","name":"from","nameLocation":"7663:4:37","nodeType":"VariableDeclaration","scope":5625,"src":"7655:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5572,"name":"address","nodeType":"ElementaryTypeName","src":"7655:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5575,"mutability":"mutable","name":"to","nameLocation":"7685:2:37","nodeType":"VariableDeclaration","scope":5625,"src":"7677:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5574,"name":"address","nodeType":"ElementaryTypeName","src":"7677:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5577,"mutability":"mutable","name":"amount","nameLocation":"7705:6:37","nodeType":"VariableDeclaration","scope":5625,"src":"7697:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5576,"name":"uint256","nodeType":"ElementaryTypeName","src":"7697:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5579,"mutability":"mutable","name":"conduitKey","nameLocation":"7729:10:37","nodeType":"VariableDeclaration","scope":5625,"src":"7721:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5578,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7721:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5581,"mutability":"mutable","name":"accumulator","nameLocation":"7762:11:37","nodeType":"VariableDeclaration","scope":5625,"src":"7749:24:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5580,"name":"bytes","nodeType":"ElementaryTypeName","src":"7749:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7622:157:37"},"returnParameters":{"id":5583,"nodeType":"ParameterList","parameters":[],"src":"7789:0:37"},"scope":5917,"src":"7599:969:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5684,"nodeType":"Block","src":"9788:873:37","statements":[{"expression":{"arguments":[{"id":5644,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5640,"src":"9898:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5645,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"9911:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5643,"name":"_triggerIfArmedAndNotAccumulatable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"9863:34:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (bytes memory,bytes32)"}},"id":5646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9863:59:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5647,"nodeType":"ExpressionStatement","src":"9863:59:37"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5648,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"9984:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10006:1:37","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":5650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9998:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":5649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9998:7:37","typeDescriptions":{}}},"id":5652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9998:10:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9984:24:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5682,"nodeType":"Block","src":"10327:328:37","statements":[{"expression":{"arguments":[{"id":5671,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"10434:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5672,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5640,"src":"10462:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":5673,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"10491:15:37","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ConduitItemType_$3642_$","typeString":"type(enum ConduitItemType)"}},"id":5674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":3640,"src":"10491:22:37","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},{"id":5675,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5628,"src":"10531:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5676,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5630,"src":"10554:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5677,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5632,"src":"10576:2:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5678,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5634,"src":"10596:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5679,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5636,"src":"10624:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5670,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"10409:7:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_enum$_ConduitItemType_$3642_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,bytes memory,enum ConduitItemType,address,address,address,uint256,uint256) pure"}},"id":5680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10409:235:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5681,"nodeType":"ExpressionStatement","src":"10409:235:37"}]},"id":5683,"nodeType":"IfStatement","src":"9980:675:37","trueBody":{"id":5669,"nodeType":"Block","src":"10010:311:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5654,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5636,"src":"10098:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":5655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10108:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10098:11:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5661,"nodeType":"IfStatement","src":"10094:86:37","trueBody":{"id":5660,"nodeType":"Block","src":"10111:69:37","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5657,"name":"InvalidERC721TransferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4271,"src":"10136:27:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10136:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5659,"nodeType":"RevertStatement","src":"10129:36:37"}]}},{"expression":{"arguments":[{"id":5663,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5628,"src":"10282:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5664,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5630,"src":"10289:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5665,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5632,"src":"10295:2:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5666,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5634,"src":"10299:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5662,"name":"_performERC721Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7968,"src":"10259:22:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":5667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10259:51:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5668,"nodeType":"ExpressionStatement","src":"10259:51:37"}]}}]},"documentation":{"id":5626,"nodeType":"StructuredDocumentation","src":"8574:990:37","text":" @dev Internal function to transfer a single ERC721 token from a given\n      originator to a given recipient. Sufficient approvals must be set,\n      either on the respective conduit or on this contract itself.\n @param token       The ERC721 token to transfer.\n @param from        The originator of the transfer.\n @param to          The recipient of the transfer.\n @param identifier  The tokenId to transfer (must be 1 for ERC721).\n @param amount      The amount to transfer.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."},"id":5685,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC721","nameLocation":"9578:15:37","nodeType":"FunctionDefinition","parameters":{"id":5641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5628,"mutability":"mutable","name":"token","nameLocation":"9611:5:37","nodeType":"VariableDeclaration","scope":5685,"src":"9603:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5627,"name":"address","nodeType":"ElementaryTypeName","src":"9603:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5630,"mutability":"mutable","name":"from","nameLocation":"9634:4:37","nodeType":"VariableDeclaration","scope":5685,"src":"9626:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5629,"name":"address","nodeType":"ElementaryTypeName","src":"9626:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5632,"mutability":"mutable","name":"to","nameLocation":"9656:2:37","nodeType":"VariableDeclaration","scope":5685,"src":"9648:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5631,"name":"address","nodeType":"ElementaryTypeName","src":"9648:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5634,"mutability":"mutable","name":"identifier","nameLocation":"9676:10:37","nodeType":"VariableDeclaration","scope":5685,"src":"9668:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5633,"name":"uint256","nodeType":"ElementaryTypeName","src":"9668:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5636,"mutability":"mutable","name":"amount","nameLocation":"9704:6:37","nodeType":"VariableDeclaration","scope":5685,"src":"9696:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5635,"name":"uint256","nodeType":"ElementaryTypeName","src":"9696:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5638,"mutability":"mutable","name":"conduitKey","nameLocation":"9728:10:37","nodeType":"VariableDeclaration","scope":5685,"src":"9720:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5637,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9720:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5640,"mutability":"mutable","name":"accumulator","nameLocation":"9761:11:37","nodeType":"VariableDeclaration","scope":5685,"src":"9748:24:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5639,"name":"bytes","nodeType":"ElementaryTypeName","src":"9748:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9593:185:37"},"returnParameters":{"id":5642,"nodeType":"ParameterList","parameters":[],"src":"9788:0:37"},"scope":5917,"src":"9569:1092:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5741,"nodeType":"Block","src":"11848:808:37","statements":[{"expression":{"arguments":[{"id":5704,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"11935:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5703,"name":"_assertNonZeroAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"11914:20:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11914:28:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5706,"nodeType":"ExpressionStatement","src":"11914:28:37"},{"expression":{"arguments":[{"id":5708,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5700,"src":"12053:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5709,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"12066:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5707,"name":"_triggerIfArmedAndNotAccumulatable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"12018:34:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (bytes memory,bytes32)"}},"id":5710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12018:59:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5711,"nodeType":"ExpressionStatement","src":"12018:59:37"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":5717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5712,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"12139:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12161:1:37","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":5714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12153:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":5713,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12153:7:37","typeDescriptions":{}}},"id":5716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12153:10:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12139:24:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5739,"nodeType":"Block","src":"12321:329:37","statements":[{"expression":{"arguments":[{"id":5728,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"12428:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5729,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5700,"src":"12456:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":5730,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"12485:15:37","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ConduitItemType_$3642_$","typeString":"type(enum ConduitItemType)"}},"id":5731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC1155","nodeType":"MemberAccess","referencedDeclaration":3641,"src":"12485:23:37","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},{"id":5732,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5688,"src":"12526:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5733,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5690,"src":"12549:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5734,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5692,"src":"12571:2:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5735,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5694,"src":"12591:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5736,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"12619:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5727,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"12403:7:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_enum$_ConduitItemType_$3642_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,bytes memory,enum ConduitItemType,address,address,address,uint256,uint256) pure"}},"id":5737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12403:236:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5738,"nodeType":"ExpressionStatement","src":"12403:236:37"}]},"id":5740,"nodeType":"IfStatement","src":"12135:515:37","trueBody":{"id":5726,"nodeType":"Block","src":"12165:150:37","statements":[{"expression":{"arguments":[{"id":5719,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5688,"src":"12268:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5720,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5690,"src":"12275:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5721,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5692,"src":"12281:2:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5722,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5694,"src":"12285:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5723,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"12297:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5718,"name":"_performERC1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"12244:23:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":5724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12244:60:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5725,"nodeType":"ExpressionStatement","src":"12244:60:37"}]}}]},"documentation":{"id":5686,"nodeType":"StructuredDocumentation","src":"10667:956:37","text":" @dev Internal function to transfer ERC1155 tokens from a given originator\n      to a given recipient. Sufficient approvals must be set, either on\n      the respective conduit or on this contract itself.\n @param token       The ERC1155 token to transfer.\n @param from        The originator of the transfer.\n @param to          The recipient of the transfer.\n @param identifier  The id to transfer.\n @param amount      The amount to transfer.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."},"id":5742,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC1155","nameLocation":"11637:16:37","nodeType":"FunctionDefinition","parameters":{"id":5701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5688,"mutability":"mutable","name":"token","nameLocation":"11671:5:37","nodeType":"VariableDeclaration","scope":5742,"src":"11663:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5687,"name":"address","nodeType":"ElementaryTypeName","src":"11663:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5690,"mutability":"mutable","name":"from","nameLocation":"11694:4:37","nodeType":"VariableDeclaration","scope":5742,"src":"11686:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5689,"name":"address","nodeType":"ElementaryTypeName","src":"11686:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5692,"mutability":"mutable","name":"to","nameLocation":"11716:2:37","nodeType":"VariableDeclaration","scope":5742,"src":"11708:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5691,"name":"address","nodeType":"ElementaryTypeName","src":"11708:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5694,"mutability":"mutable","name":"identifier","nameLocation":"11736:10:37","nodeType":"VariableDeclaration","scope":5742,"src":"11728:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5693,"name":"uint256","nodeType":"ElementaryTypeName","src":"11728:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5696,"mutability":"mutable","name":"amount","nameLocation":"11764:6:37","nodeType":"VariableDeclaration","scope":5742,"src":"11756:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5695,"name":"uint256","nodeType":"ElementaryTypeName","src":"11756:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5698,"mutability":"mutable","name":"conduitKey","nameLocation":"11788:10:37","nodeType":"VariableDeclaration","scope":5742,"src":"11780:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11780:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5700,"mutability":"mutable","name":"accumulator","nameLocation":"11821:11:37","nodeType":"VariableDeclaration","scope":5742,"src":"11808:24:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5699,"name":"bytes","nodeType":"ElementaryTypeName","src":"11808:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11653:185:37"},"returnParameters":{"id":5702,"nodeType":"ParameterList","parameters":[],"src":"11848:0:37"},"scope":5917,"src":"11628:1028:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5765,"nodeType":"Block","src":"13528:337:37","statements":[{"assignments":[5751],"declarations":[{"constant":false,"id":5751,"mutability":"mutable","name":"accumulatorConduitKey","nameLocation":"13612:21:37","nodeType":"VariableDeclaration","scope":5765,"src":"13604:29:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5750,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13604:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5755,"initialValue":{"arguments":[{"id":5753,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5745,"src":"13662:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5752,"name":"_getAccumulatorConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5871,"src":"13636:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13636:38:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13604:70:37"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":5758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5756,"name":"accumulatorConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"13769:21:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5757,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5747,"src":"13794:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13769:35:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5764,"nodeType":"IfStatement","src":"13765:94:37","trueBody":{"id":5763,"nodeType":"Block","src":"13806:53:37","statements":[{"expression":{"arguments":[{"id":5760,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5745,"src":"13836:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5759,"name":"_triggerIfArmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"13820:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":5761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13820:28:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5762,"nodeType":"ExpressionStatement","src":"13820:28:37"}]}}]},"documentation":{"id":5743,"nodeType":"StructuredDocumentation","src":"12662:740:37","text":" @dev Internal function to trigger a call to the conduit currently held by\n      the accumulator if the accumulator contains item transfers (i.e. it\n      is \"armed\") and the supplied conduit key does not match the key held\n      by the accumulator.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract."},"id":5766,"implemented":true,"kind":"function","modifiers":[],"name":"_triggerIfArmedAndNotAccumulatable","nameLocation":"13416:34:37","nodeType":"FunctionDefinition","parameters":{"id":5748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5745,"mutability":"mutable","name":"accumulator","nameLocation":"13473:11:37","nodeType":"VariableDeclaration","scope":5766,"src":"13460:24:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5744,"name":"bytes","nodeType":"ElementaryTypeName","src":"13460:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5747,"mutability":"mutable","name":"conduitKey","nameLocation":"13502:10:37","nodeType":"VariableDeclaration","scope":5766,"src":"13494:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5746,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13494:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13450:68:37"},"returnParameters":{"id":5749,"nodeType":"ParameterList","parameters":[],"src":"13528:0:37"},"scope":5917,"src":"13407:458:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5790,"nodeType":"Block","src":"14289:377:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5772,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"14354:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14354:18:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5774,"name":"AccumulatorArmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5193,"src":"14376:16:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14354:38:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5778,"nodeType":"IfStatement","src":"14350:75:37","trueBody":{"id":5777,"nodeType":"Block","src":"14394:31:37","statements":[{"functionReturnParameters":5771,"id":5776,"nodeType":"Return","src":"14408:7:37"}]}},{"assignments":[5780],"declarations":[{"constant":false,"id":5780,"mutability":"mutable","name":"accumulatorConduitKey","nameLocation":"14509:21:37","nodeType":"VariableDeclaration","scope":5790,"src":"14501:29:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5779,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14501:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5784,"initialValue":{"arguments":[{"id":5782,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"14559:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5781,"name":"_getAccumulatorConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5871,"src":"14533:25:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14533:38:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14501:70:37"},{"expression":{"arguments":[{"id":5786,"name":"accumulatorConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5780,"src":"14624:21:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5787,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"14647:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5785,"name":"_trigger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"14615:8:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,bytes memory)"}},"id":5788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14615:44:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5789,"nodeType":"ExpressionStatement","src":"14615:44:37"}]},"documentation":{"id":5767,"nodeType":"StructuredDocumentation","src":"13871:353:37","text":" @dev Internal function to trigger a call to the conduit currently held by\n      the accumulator if the accumulator contains item transfers (i.e. it\n      is \"armed\").\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."},"id":5791,"implemented":true,"kind":"function","modifiers":[],"name":"_triggerIfArmed","nameLocation":"14238:15:37","nodeType":"FunctionDefinition","parameters":{"id":5770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5769,"mutability":"mutable","name":"accumulator","nameLocation":"14267:11:37","nodeType":"VariableDeclaration","scope":5791,"src":"14254:24:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5768,"name":"bytes","nodeType":"ElementaryTypeName","src":"14254:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14253:26:37"},"returnParameters":{"id":5771,"nodeType":"ParameterList","parameters":[],"src":"14289:0:37"},"scope":5917,"src":"14229:437:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5813,"nodeType":"Block","src":"15444:1040:37","statements":[{"assignments":[5800],"declarations":[{"constant":false,"id":5800,"mutability":"mutable","name":"callDataOffset","nameLocation":"15543:14:37","nodeType":"VariableDeclaration","scope":5813,"src":"15535:22:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5799,"name":"uint256","nodeType":"ElementaryTypeName","src":"15535:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5801,"nodeType":"VariableDeclarationStatement","src":"15535:22:37"},{"assignments":[5803],"declarations":[{"constant":false,"id":5803,"mutability":"mutable","name":"callDataSize","nameLocation":"15575:12:37","nodeType":"VariableDeclaration","scope":5813,"src":"15567:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5802,"name":"uint256","nodeType":"ElementaryTypeName","src":"15567:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5804,"nodeType":"VariableDeclarationStatement","src":"15567:20:37"},{"AST":{"nodeType":"YulBlock","src":"15671:493:37","statements":[{"nodeType":"YulAssignment","src":"15824:44:37","value":{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"15846:11:37"},{"name":"TwoWords","nodeType":"YulIdentifier","src":"15859:8:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15842:3:37"},"nodeType":"YulFunctionCall","src":"15842:26:37"},"variableNames":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"15824:14:37"}]},{"nodeType":"YulAssignment","src":"15914:240:37","value":{"arguments":[{"name":"Accumulator_array_offset_ptr","nodeType":"YulIdentifier","src":"15951:28:37"},{"arguments":[{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"16032:11:37"},{"name":"Accumulator_array_length_ptr","nodeType":"YulIdentifier","src":"16045:28:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16028:3:37"},"nodeType":"YulFunctionCall","src":"16028:46:37"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16022:5:37"},"nodeType":"YulFunctionCall","src":"16022:53:37"},{"name":"Conduit_transferItem_size","nodeType":"YulIdentifier","src":"16097:25:37"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15997:3:37"},"nodeType":"YulFunctionCall","src":"15997:143:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15930:3:37"},"nodeType":"YulFunctionCall","src":"15930:224:37"},"variableNames":[{"name":"callDataSize","nodeType":"YulIdentifier","src":"15914:12:37"}]}]},"evmVersion":"london","externalReferences":[{"declaration":5205,"isOffset":false,"isSlot":false,"src":"16045:28:37","valueSize":1},{"declaration":5202,"isOffset":false,"isSlot":false,"src":"15951:28:37","valueSize":1},{"declaration":5214,"isOffset":false,"isSlot":false,"src":"16097:25:37","valueSize":1},{"declaration":4871,"isOffset":false,"isSlot":false,"src":"15859:8:37","valueSize":1},{"declaration":5796,"isOffset":false,"isSlot":false,"src":"15846:11:37","valueSize":1},{"declaration":5796,"isOffset":false,"isSlot":false,"src":"16032:11:37","valueSize":1},{"declaration":5800,"isOffset":false,"isSlot":false,"src":"15824:14:37","valueSize":1},{"declaration":5803,"isOffset":false,"isSlot":false,"src":"15914:12:37","valueSize":1}],"id":5805,"nodeType":"InlineAssembly","src":"15662:502:37"},{"expression":{"arguments":[{"id":5807,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5794,"src":"16280:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5808,"name":"callDataOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"16292:14:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5809,"name":"callDataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5803,"src":"16308:12:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5806,"name":"_callConduitUsingOffsets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"16255:24:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,uint256)"}},"id":5810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16255:66:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5811,"nodeType":"ExpressionStatement","src":"16255:66:37"},{"AST":{"nodeType":"YulBlock","src":"16414:64:37","statements":[{"expression":{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"16435:11:37"},{"name":"AccumulatorDisarmed","nodeType":"YulIdentifier","src":"16448:19:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16428:6:37"},"nodeType":"YulFunctionCall","src":"16428:40:37"},"nodeType":"YulExpressionStatement","src":"16428:40:37"}]},"evmVersion":"london","externalReferences":[{"declaration":5190,"isOffset":false,"isSlot":false,"src":"16448:19:37","valueSize":1},{"declaration":5796,"isOffset":false,"isSlot":false,"src":"16435:11:37","valueSize":1}],"id":5812,"nodeType":"InlineAssembly","src":"16405:73:37"}]},"documentation":{"id":5792,"nodeType":"StructuredDocumentation","src":"14672:694:37","text":" @dev Internal function to trigger a call to the conduit corresponding to\n      a given conduit key, supplying all accumulated item transfers. The\n      accumulator will be \"disarmed\" and reset in the process.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."},"id":5814,"implemented":true,"kind":"function","modifiers":[],"name":"_trigger","nameLocation":"15380:8:37","nodeType":"FunctionDefinition","parameters":{"id":5797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5794,"mutability":"mutable","name":"conduitKey","nameLocation":"15397:10:37","nodeType":"VariableDeclaration","scope":5814,"src":"15389:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5793,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15389:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5796,"mutability":"mutable","name":"accumulator","nameLocation":"15422:11:37","nodeType":"VariableDeclaration","scope":5814,"src":"15409:24:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5795,"name":"bytes","nodeType":"ElementaryTypeName","src":"15409:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15388:46:37"},"returnParameters":{"id":5798,"nodeType":"ParameterList","parameters":[],"src":"15444:0:37"},"scope":5917,"src":"15371:1113:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5860,"nodeType":"Block","src":"17293:1216:37","statements":[{"assignments":[5825],"declarations":[{"constant":false,"id":5825,"mutability":"mutable","name":"conduit","nameLocation":"17379:7:37","nodeType":"VariableDeclaration","scope":5860,"src":"17371:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5824,"name":"address","nodeType":"ElementaryTypeName","src":"17371:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5829,"initialValue":{"arguments":[{"id":5827,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"17404:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5826,"name":"_deriveConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5971,"src":"17389:14:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":5828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17389:26:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17371:44:37"},{"assignments":[5831],"declarations":[{"constant":false,"id":5831,"mutability":"mutable","name":"success","nameLocation":"17431:7:37","nodeType":"VariableDeclaration","scope":5860,"src":"17426:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5830,"name":"bool","nodeType":"ElementaryTypeName","src":"17426:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5832,"nodeType":"VariableDeclarationStatement","src":"17426:12:37"},{"assignments":[5834],"declarations":[{"constant":false,"id":5834,"mutability":"mutable","name":"result","nameLocation":"17455:6:37","nodeType":"VariableDeclaration","scope":5860,"src":"17448:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5833,"name":"bytes4","nodeType":"ElementaryTypeName","src":"17448:6:37","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":5835,"nodeType":"VariableDeclarationStatement","src":"17448:13:37"},{"AST":{"nodeType":"YulBlock","src":"17510:497:37","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17591:1:37","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17594:1:37","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17584:6:37"},"nodeType":"YulFunctionCall","src":"17584:12:37"},"nodeType":"YulExpressionStatement","src":"17584:12:37"},{"nodeType":"YulAssignment","src":"17691:202:37","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"17724:3:37"},"nodeType":"YulFunctionCall","src":"17724:5:37"},{"name":"conduit","nodeType":"YulIdentifier","src":"17747:7:37"},{"kind":"number","nodeType":"YulLiteral","src":"17772:1:37","type":"","value":"0"},{"name":"callDataOffset","nodeType":"YulIdentifier","src":"17791:14:37"},{"name":"callDataSize","nodeType":"YulIdentifier","src":"17823:12:37"},{"kind":"number","nodeType":"YulLiteral","src":"17853:1:37","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"17872:7:37"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"17702:4:37"},"nodeType":"YulFunctionCall","src":"17702:191:37"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"17691:7:37"}]},{"nodeType":"YulAssignment","src":"17979:18:37","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17995:1:37","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17989:5:37"},"nodeType":"YulFunctionCall","src":"17989:8:37"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"17979:6:37"}]}]},"evmVersion":"london","externalReferences":[{"declaration":4868,"isOffset":false,"isSlot":false,"src":"17872:7:37","valueSize":1},{"declaration":5819,"isOffset":false,"isSlot":false,"src":"17791:14:37","valueSize":1},{"declaration":5821,"isOffset":false,"isSlot":false,"src":"17823:12:37","valueSize":1},{"declaration":5825,"isOffset":false,"isSlot":false,"src":"17747:7:37","valueSize":1},{"declaration":5834,"isOffset":false,"isSlot":false,"src":"17979:6:37","valueSize":1},{"declaration":5831,"isOffset":false,"isSlot":false,"src":"17691:7:37","valueSize":1}],"id":5836,"nodeType":"InlineAssembly","src":"17501:506:37"},{"condition":{"id":5838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18054:8:37","subExpression":{"id":5837,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5831,"src":"18055:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5847,"nodeType":"IfStatement","src":"18050:254:37","trueBody":{"id":5846,"nodeType":"Block","src":"18064:240:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5839,"name":"_revertWithReasonIfOneIsReturned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"18153:32:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":5840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18153:34:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5841,"nodeType":"ExpressionStatement","src":"18153:34:37"},{"errorCall":{"arguments":[{"id":5843,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"18285:7:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5842,"name":"InvalidCallToConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"18264:20:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":5844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18264:29:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5845,"nodeType":"RevertStatement","src":"18257:36:37"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5848,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5834,"src":"18391:6:37","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":5849,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"18401:16:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ConduitInterface_$4006_$","typeString":"type(contract ConduitInterface)"}},"id":5850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":3973,"src":"18401:24:37","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ConduitInterface.execute(struct ConduitTransfer calldata[] calldata) returns (bytes4)"}},"id":5851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"18401:33:37","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"18391:43:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5859,"nodeType":"IfStatement","src":"18387:116:37","trueBody":{"id":5858,"nodeType":"Block","src":"18436:67:37","statements":[{"errorCall":{"arguments":[{"id":5854,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"18472:10:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5855,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"18484:7:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5853,"name":"InvalidConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4079,"src":"18457:14:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) pure"}},"id":5856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18457:35:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5857,"nodeType":"RevertStatement","src":"18450:42:37"}]}}]},"documentation":{"id":5815,"nodeType":"StructuredDocumentation","src":"16490:659:37","text":" @dev Internal function to perform a call to the conduit corresponding to\n      a given conduit key based on the offset and size of the calldata in\n      question in memory.\n @param conduitKey     A bytes32 value indicating what corresponding\n                       conduit, if any, to source token approvals from.\n                       The zero hash signifies that no conduit should be\n                       used, with direct approvals set on this contract.\n @param callDataOffset The memory pointer where calldata is contained.\n @param callDataSize   The size of calldata in memory."},"id":5861,"implemented":true,"kind":"function","modifiers":[],"name":"_callConduitUsingOffsets","nameLocation":"17163:24:37","nodeType":"FunctionDefinition","parameters":{"id":5822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5817,"mutability":"mutable","name":"conduitKey","nameLocation":"17205:10:37","nodeType":"VariableDeclaration","scope":5861,"src":"17197:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5816,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17197:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5819,"mutability":"mutable","name":"callDataOffset","nameLocation":"17233:14:37","nodeType":"VariableDeclaration","scope":5861,"src":"17225:22:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5818,"name":"uint256","nodeType":"ElementaryTypeName","src":"17225:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5821,"mutability":"mutable","name":"callDataSize","nameLocation":"17265:12:37","nodeType":"VariableDeclaration","scope":5861,"src":"17257:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5820,"name":"uint256","nodeType":"ElementaryTypeName","src":"17257:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17187:96:37"},"returnParameters":{"id":5823,"nodeType":"ParameterList","parameters":[],"src":"17293:0:37"},"scope":5917,"src":"17154:1355:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5870,"nodeType":"Block","src":"19070:221:37","statements":[{"AST":{"nodeType":"YulBlock","src":"19155:130:37","statements":[{"nodeType":"YulAssignment","src":"19169:106:37","value":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"19221:11:37"},{"name":"Accumulator_conduitKey_ptr","nodeType":"YulIdentifier","src":"19234:26:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19217:3:37"},"nodeType":"YulFunctionCall","src":"19217:44:37"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19194:5:37"},"nodeType":"YulFunctionCall","src":"19194:81:37"},"variableNames":[{"name":"accumulatorConduitKey","nodeType":"YulIdentifier","src":"19169:21:37"}]}]},"evmVersion":"london","externalReferences":[{"declaration":5196,"isOffset":false,"isSlot":false,"src":"19234:26:37","valueSize":1},{"declaration":5864,"isOffset":false,"isSlot":false,"src":"19221:11:37","valueSize":1},{"declaration":5867,"isOffset":false,"isSlot":false,"src":"19169:21:37","valueSize":1}],"id":5869,"nodeType":"InlineAssembly","src":"19146:139:37"}]},"documentation":{"id":5862,"nodeType":"StructuredDocumentation","src":"18515:407:37","text":" @dev Internal pure function to retrieve the current conduit key set for\n      the accumulator.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call.\n @return accumulatorConduitKey The conduit key currently set for the\n                               accumulator."},"id":5871,"implemented":true,"kind":"function","modifiers":[],"name":"_getAccumulatorConduitKey","nameLocation":"18936:25:37","nodeType":"FunctionDefinition","parameters":{"id":5865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5864,"mutability":"mutable","name":"accumulator","nameLocation":"18975:11:37","nodeType":"VariableDeclaration","scope":5871,"src":"18962:24:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5863,"name":"bytes","nodeType":"ElementaryTypeName","src":"18962:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18961:26:37"},"returnParameters":{"id":5868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5867,"mutability":"mutable","name":"accumulatorConduitKey","nameLocation":"19043:21:37","nodeType":"VariableDeclaration","scope":5871,"src":"19035:29:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19035:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19034:31:37"},"scope":5917,"src":"18927:364:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5915,"nodeType":"Block","src":"20537:1904:37","statements":[{"assignments":[5893],"declarations":[{"constant":false,"id":5893,"mutability":"mutable","name":"elements","nameLocation":"20555:8:37","nodeType":"VariableDeclaration","scope":5915,"src":"20547:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5892,"name":"uint256","nodeType":"ElementaryTypeName","src":"20547:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5894,"nodeType":"VariableDeclarationStatement","src":"20547:16:37"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5895,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5876,"src":"20721:11:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"20721:18:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5897,"name":"AccumulatorDisarmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5190,"src":"20743:19:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20721:41:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5912,"nodeType":"Block","src":"21383:343:37","statements":[{"AST":{"nodeType":"YulBlock","src":"21472:244:37","statements":[{"nodeType":"YulAssignment","src":"21490:131:37","value":{"arguments":[{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21537:11:37"},{"name":"Accumulator_array_length_ptr","nodeType":"YulIdentifier","src":"21550:28:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21533:3:37"},"nodeType":"YulFunctionCall","src":"21533:46:37"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21527:5:37"},"nodeType":"YulFunctionCall","src":"21527:53:37"},{"kind":"number","nodeType":"YulLiteral","src":"21602:1:37","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21502:3:37"},"nodeType":"YulFunctionCall","src":"21502:119:37"},"variableNames":[{"name":"elements","nodeType":"YulIdentifier","src":"21490:8:37"}]},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21649:11:37"},{"name":"Accumulator_array_length_ptr","nodeType":"YulIdentifier","src":"21662:28:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21645:3:37"},"nodeType":"YulFunctionCall","src":"21645:46:37"},{"name":"elements","nodeType":"YulIdentifier","src":"21693:8:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21638:6:37"},"nodeType":"YulFunctionCall","src":"21638:64:37"},"nodeType":"YulExpressionStatement","src":"21638:64:37"}]},"evmVersion":"london","externalReferences":[{"declaration":5205,"isOffset":false,"isSlot":false,"src":"21550:28:37","valueSize":1},{"declaration":5205,"isOffset":false,"isSlot":false,"src":"21662:28:37","valueSize":1},{"declaration":5876,"isOffset":false,"isSlot":false,"src":"21537:11:37","valueSize":1},{"declaration":5876,"isOffset":false,"isSlot":false,"src":"21649:11:37","valueSize":1},{"declaration":5893,"isOffset":false,"isSlot":false,"src":"21490:8:37","valueSize":1},{"declaration":5893,"isOffset":false,"isSlot":false,"src":"21693:8:37","valueSize":1}],"id":5911,"nodeType":"InlineAssembly","src":"21463:253:37"}]},"id":5913,"nodeType":"IfStatement","src":"20717:1009:37","trueBody":{"id":5910,"nodeType":"Block","src":"20764:613:37","statements":[{"expression":{"id":5901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5899,"name":"elements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5893,"src":"20778:8:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":5900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20789:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20778:12:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5902,"nodeType":"ExpressionStatement","src":"20778:12:37"},{"assignments":[5904],"declarations":[{"constant":false,"id":5904,"mutability":"mutable","name":"selector","nameLocation":"20811:8:37","nodeType":"VariableDeclaration","scope":5910,"src":"20804:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5903,"name":"bytes4","nodeType":"ElementaryTypeName","src":"20804:6:37","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":5908,"initialValue":{"expression":{"expression":{"id":5905,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"20822:16:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ConduitInterface_$4006_$","typeString":"type(contract ConduitInterface)"}},"id":5906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":3973,"src":"20822:24:37","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ConduitInterface.execute(struct ConduitTransfer calldata[] calldata) returns (bytes4)"}},"id":5907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"20822:33:37","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"20804:51:37"},{"AST":{"nodeType":"YulBlock","src":"20878:489:37","statements":[{"expression":{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"20903:11:37"},{"name":"AccumulatorArmed","nodeType":"YulIdentifier","src":"20916:16:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20896:6:37"},"nodeType":"YulFunctionCall","src":"20896:37:37"},"nodeType":"YulExpressionStatement","src":"20896:37:37"},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"20987:11:37"},{"name":"Accumulator_conduitKey_ptr","nodeType":"YulIdentifier","src":"21000:26:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20983:3:37"},"nodeType":"YulFunctionCall","src":"20983:44:37"},{"name":"conduitKey","nodeType":"YulIdentifier","src":"21029:10:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20976:6:37"},"nodeType":"YulFunctionCall","src":"20976:64:37"},"nodeType":"YulExpressionStatement","src":"20976:64:37"},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21068:11:37"},{"name":"Accumulator_selector_ptr","nodeType":"YulIdentifier","src":"21081:24:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21064:3:37"},"nodeType":"YulFunctionCall","src":"21064:42:37"},{"name":"selector","nodeType":"YulIdentifier","src":"21108:8:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21057:6:37"},"nodeType":"YulFunctionCall","src":"21057:60:37"},"nodeType":"YulExpressionStatement","src":"21057:60:37"},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21166:11:37"},{"name":"Accumulator_array_offset_ptr","nodeType":"YulIdentifier","src":"21179:28:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21162:3:37"},"nodeType":"YulFunctionCall","src":"21162:46:37"},{"name":"Accumulator_array_offset","nodeType":"YulIdentifier","src":"21230:24:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21134:6:37"},"nodeType":"YulFunctionCall","src":"21134:138:37"},"nodeType":"YulExpressionStatement","src":"21134:138:37"},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21300:11:37"},{"name":"Accumulator_array_length_ptr","nodeType":"YulIdentifier","src":"21313:28:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21296:3:37"},"nodeType":"YulFunctionCall","src":"21296:46:37"},{"name":"elements","nodeType":"YulIdentifier","src":"21344:8:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21289:6:37"},"nodeType":"YulFunctionCall","src":"21289:64:37"},"nodeType":"YulExpressionStatement","src":"21289:64:37"}]},"evmVersion":"london","externalReferences":[{"declaration":5193,"isOffset":false,"isSlot":false,"src":"20916:16:37","valueSize":1},{"declaration":5205,"isOffset":false,"isSlot":false,"src":"21313:28:37","valueSize":1},{"declaration":5211,"isOffset":false,"isSlot":false,"src":"21230:24:37","valueSize":1},{"declaration":5202,"isOffset":false,"isSlot":false,"src":"21179:28:37","valueSize":1},{"declaration":5196,"isOffset":false,"isSlot":false,"src":"21000:26:37","valueSize":1},{"declaration":5199,"isOffset":false,"isSlot":false,"src":"21081:24:37","valueSize":1},{"declaration":5876,"isOffset":false,"isSlot":false,"src":"20903:11:37","valueSize":1},{"declaration":5876,"isOffset":false,"isSlot":false,"src":"20987:11:37","valueSize":1},{"declaration":5876,"isOffset":false,"isSlot":false,"src":"21068:11:37","valueSize":1},{"declaration":5876,"isOffset":false,"isSlot":false,"src":"21166:11:37","valueSize":1},{"declaration":5876,"isOffset":false,"isSlot":false,"src":"21300:11:37","valueSize":1},{"declaration":5874,"isOffset":false,"isSlot":false,"src":"21029:10:37","valueSize":1},{"declaration":5893,"isOffset":false,"isSlot":false,"src":"21344:8:37","valueSize":1},{"declaration":5904,"isOffset":false,"isSlot":false,"src":"21108:8:37","valueSize":1}],"id":5909,"nodeType":"InlineAssembly","src":"20869:498:37"}]}},{"AST":{"nodeType":"YulBlock","src":"21773:662:37","statements":[{"nodeType":"YulVariableDeclaration","src":"21787:166:37","value":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21831:11:37"},{"arguments":[{"name":"elements","nodeType":"YulIdentifier","src":"21848:8:37"},{"name":"Conduit_transferItem_size","nodeType":"YulIdentifier","src":"21858:25:37"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"21844:3:37"},"nodeType":"YulFunctionCall","src":"21844:40:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21827:3:37"},"nodeType":"YulFunctionCall","src":"21827:58:37"},{"name":"Accumulator_itemSizeOffsetDifference","nodeType":"YulIdentifier","src":"21903:36:37"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21806:3:37"},"nodeType":"YulFunctionCall","src":"21806:147:37"},"variables":[{"name":"itemPointer","nodeType":"YulTypedName","src":"21791:11:37","type":""}]},{"expression":{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"21973:11:37"},{"name":"itemType","nodeType":"YulIdentifier","src":"21986:8:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21966:6:37"},"nodeType":"YulFunctionCall","src":"21966:29:37"},"nodeType":"YulExpressionStatement","src":"21966:29:37"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22019:11:37"},{"name":"Conduit_transferItem_token_ptr","nodeType":"YulIdentifier","src":"22032:30:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22015:3:37"},"nodeType":"YulFunctionCall","src":"22015:48:37"},{"name":"token","nodeType":"YulIdentifier","src":"22065:5:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22008:6:37"},"nodeType":"YulFunctionCall","src":"22008:63:37"},"nodeType":"YulExpressionStatement","src":"22008:63:37"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22095:11:37"},{"name":"Conduit_transferItem_from_ptr","nodeType":"YulIdentifier","src":"22108:29:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22091:3:37"},"nodeType":"YulFunctionCall","src":"22091:47:37"},{"name":"from","nodeType":"YulIdentifier","src":"22140:4:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22084:6:37"},"nodeType":"YulFunctionCall","src":"22084:61:37"},"nodeType":"YulExpressionStatement","src":"22084:61:37"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22169:11:37"},{"name":"Conduit_transferItem_to_ptr","nodeType":"YulIdentifier","src":"22182:27:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22165:3:37"},"nodeType":"YulFunctionCall","src":"22165:45:37"},{"name":"to","nodeType":"YulIdentifier","src":"22212:2:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22158:6:37"},"nodeType":"YulFunctionCall","src":"22158:57:37"},"nodeType":"YulExpressionStatement","src":"22158:57:37"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22256:11:37"},{"name":"Conduit_transferItem_identifier_ptr","nodeType":"YulIdentifier","src":"22269:35:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22252:3:37"},"nodeType":"YulFunctionCall","src":"22252:53:37"},{"name":"identifier","nodeType":"YulIdentifier","src":"22323:10:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22228:6:37"},"nodeType":"YulFunctionCall","src":"22228:119:37"},"nodeType":"YulExpressionStatement","src":"22228:119:37"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22371:11:37"},{"name":"Conduit_transferItem_amount_ptr","nodeType":"YulIdentifier","src":"22384:31:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22367:3:37"},"nodeType":"YulFunctionCall","src":"22367:49:37"},{"name":"amount","nodeType":"YulIdentifier","src":"22418:6:37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22360:6:37"},"nodeType":"YulFunctionCall","src":"22360:65:37"},"nodeType":"YulExpressionStatement","src":"22360:65:37"}]},"evmVersion":"london","externalReferences":[{"declaration":5208,"isOffset":false,"isSlot":false,"src":"21903:36:37","valueSize":1},{"declaration":5229,"isOffset":false,"isSlot":false,"src":"22384:31:37","valueSize":1},{"declaration":5220,"isOffset":false,"isSlot":false,"src":"22108:29:37","valueSize":1},{"declaration":5226,"isOffset":false,"isSlot":false,"src":"22269:35:37","valueSize":1},{"declaration":5214,"isOffset":false,"isSlot":false,"src":"21858:25:37","valueSize":1},{"declaration":5223,"isOffset":false,"isSlot":false,"src":"22182:27:37","valueSize":1},{"declaration":5217,"isOffset":false,"isSlot":false,"src":"22032:30:37","valueSize":1},{"declaration":5876,"isOffset":false,"isSlot":false,"src":"21831:11:37","valueSize":1},{"declaration":5889,"isOffset":false,"isSlot":false,"src":"22418:6:37","valueSize":1},{"declaration":5893,"isOffset":false,"isSlot":false,"src":"21848:8:37","valueSize":1},{"declaration":5883,"isOffset":false,"isSlot":false,"src":"22140:4:37","valueSize":1},{"declaration":5887,"isOffset":false,"isSlot":false,"src":"22323:10:37","valueSize":1},{"declaration":5879,"isOffset":false,"isSlot":false,"src":"21986:8:37","valueSize":1},{"declaration":5885,"isOffset":false,"isSlot":false,"src":"22212:2:37","valueSize":1},{"declaration":5881,"isOffset":false,"isSlot":false,"src":"22065:5:37","valueSize":1}],"id":5914,"nodeType":"InlineAssembly","src":"21764:671:37"}]},"documentation":{"id":5872,"nodeType":"StructuredDocumentation","src":"19297:985:37","text":" @dev Internal pure function to place an item transfer into an accumulator\n      that collects a series of transfers to execute against a given\n      conduit in a single call.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call.\n @param itemType    The type of the item to transfer.\n @param token       The token to transfer.\n @param from        The originator of the transfer.\n @param to          The recipient of the transfer.\n @param identifier  The tokenId to transfer.\n @param amount      The amount to transfer."},"id":5916,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"20296:7:37","nodeType":"FunctionDefinition","parameters":{"id":5890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5874,"mutability":"mutable","name":"conduitKey","nameLocation":"20321:10:37","nodeType":"VariableDeclaration","scope":5916,"src":"20313:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5873,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20313:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5876,"mutability":"mutable","name":"accumulator","nameLocation":"20354:11:37","nodeType":"VariableDeclaration","scope":5916,"src":"20341:24:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5875,"name":"bytes","nodeType":"ElementaryTypeName","src":"20341:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5879,"mutability":"mutable","name":"itemType","nameLocation":"20391:8:37","nodeType":"VariableDeclaration","scope":5916,"src":"20375:24:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"},"typeName":{"id":5878,"nodeType":"UserDefinedTypeName","pathNode":{"id":5877,"name":"ConduitItemType","nodeType":"IdentifierPath","referencedDeclaration":3642,"src":"20375:15:37"},"referencedDeclaration":3642,"src":"20375:15:37","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$3642","typeString":"enum ConduitItemType"}},"visibility":"internal"},{"constant":false,"id":5881,"mutability":"mutable","name":"token","nameLocation":"20417:5:37","nodeType":"VariableDeclaration","scope":5916,"src":"20409:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5880,"name":"address","nodeType":"ElementaryTypeName","src":"20409:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5883,"mutability":"mutable","name":"from","nameLocation":"20440:4:37","nodeType":"VariableDeclaration","scope":5916,"src":"20432:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5882,"name":"address","nodeType":"ElementaryTypeName","src":"20432:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5885,"mutability":"mutable","name":"to","nameLocation":"20462:2:37","nodeType":"VariableDeclaration","scope":5916,"src":"20454:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5884,"name":"address","nodeType":"ElementaryTypeName","src":"20454:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5887,"mutability":"mutable","name":"identifier","nameLocation":"20482:10:37","nodeType":"VariableDeclaration","scope":5916,"src":"20474:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5886,"name":"uint256","nodeType":"ElementaryTypeName","src":"20474:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5889,"mutability":"mutable","name":"amount","nameLocation":"20510:6:37","nodeType":"VariableDeclaration","scope":5916,"src":"20502:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5888,"name":"uint256","nodeType":"ElementaryTypeName","src":"20502:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20303:219:37"},"returnParameters":{"id":5891,"nodeType":"ParameterList","parameters":[],"src":"20537:0:37"},"scope":5917,"src":"20287:2154:37","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5918,"src":"584:21859:37","usedErrors":[4057,4061,4065,4069,4072,4079,4082,4087,4096,4099,4106,4109,4114,4119,4122,4125,4130,4133,4136,4139,4143,4147,4151,4155,4157,4246,4255,4258,4261,4264,4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"32:22412:37"},"id":37},"contracts/lib/GettersAndDerivers.sol":{"ast":{"absolutePath":"contracts/lib/GettersAndDerivers.sol","exportedSymbols":{"AccumulatorArmed":[5193],"AccumulatorDisarmed":[5190],"Accumulator_array_length_ptr":[5205],"Accumulator_array_offset":[5211],"Accumulator_array_offset_ptr":[5202],"Accumulator_conduitKey_ptr":[5196],"Accumulator_itemSizeOffsetDifference":[5208],"Accumulator_selector_ptr":[5199],"AdditionalRecipients_size":[4910],"AdvancedOrder_numerator_offset":[4862],"AlmostOneWord":[4865],"BadContractSignature_error_length":[5276],"BadContractSignature_error_signature":[5273],"BadSignatureV_error_length":[5255],"BadSignatureV_error_offset":[5252],"BadSignatureV_error_signature":[5249],"BasicOrder_additionalRecipients_data_cdPtr":[5001],"BasicOrder_additionalRecipients_head_cdPtr":[4992],"BasicOrder_additionalRecipients_head_ptr":[5061],"BasicOrder_additionalRecipients_length_cdPtr":[4998],"BasicOrder_basicOrderType_cdPtr":[4977],"BasicOrder_basicOrderType_range":[5007],"BasicOrder_common_params_size":[4901],"BasicOrder_considerationAmount_cdPtr":[4962],"BasicOrder_considerationHashesArray_ptr":[4904],"BasicOrder_considerationItem_endAmount_ptr":[5025],"BasicOrder_considerationItem_identifier_ptr":[5019],"BasicOrder_considerationItem_itemType_ptr":[5013],"BasicOrder_considerationItem_startAmount_ptr":[5022],"BasicOrder_considerationItem_token_ptr":[5016],"BasicOrder_considerationItem_typeHash_ptr":[5010],"BasicOrder_considerationToken_cdPtr":[4959],"BasicOrder_endAmount_cdPtr":[4898],"BasicOrder_fulfillerConduit_cdPtr":[4986],"BasicOrder_offerAmount_cdPtr":[4974],"BasicOrder_offerItem_endAmount_ptr":[5037],"BasicOrder_offerItem_itemType_ptr":[5031],"BasicOrder_offerItem_token_ptr":[5034],"BasicOrder_offerItem_typeHash_ptr":[5028],"BasicOrder_offerToken_cdPtr":[4971],"BasicOrder_offererConduit_cdPtr":[4983],"BasicOrder_offerer_cdPtr":[4965],"BasicOrder_order_considerationHashes_ptr":[5049],"BasicOrder_order_counter_ptr":[5058],"BasicOrder_order_offerHashes_ptr":[5046],"BasicOrder_order_offerer_ptr":[5043],"BasicOrder_order_orderType_ptr":[5052],"BasicOrder_order_startTime_ptr":[5055],"BasicOrder_order_typeHash_ptr":[5040],"BasicOrder_parameters_cdPtr":[4956],"BasicOrder_parameters_ptr":[5004],"BasicOrder_signature_cdPtr":[4995],"BasicOrder_signature_ptr":[5064],"BasicOrder_startTime_cdPtr":[4980],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[4989],"BasicOrder_zone_cdPtr":[4968],"Common_amount_offset":[4793],"Common_identifier_offset":[4790],"Common_token_offset":[4787],"Conduit_execute_ConduitTransfer_length":[5160],"Conduit_execute_ConduitTransfer_length_ptr":[5166],"Conduit_execute_ConduitTransfer_offset_ptr":[5163],"Conduit_execute_ConduitTransfer_ptr":[5157],"Conduit_execute_signature":[5148],"Conduit_execute_transferAmount_ptr":[5184],"Conduit_execute_transferFrom_ptr":[5175],"Conduit_execute_transferIdentifier_ptr":[5181],"Conduit_execute_transferItemType_ptr":[5169],"Conduit_execute_transferTo_ptr":[5178],"Conduit_execute_transferToken_ptr":[5172],"Conduit_transferItem_amount_ptr":[5229],"Conduit_transferItem_from_ptr":[5220],"Conduit_transferItem_identifier_ptr":[5226],"Conduit_transferItem_size":[5214],"Conduit_transferItem_to_ptr":[5223],"Conduit_transferItem_token_ptr":[5217],"ConsiderItem_recipient_offset":[4811],"ConsiderationBase":[4761],"ConsiderationItem_recipient_offset":[4808],"CostPerWord":[5123],"Create2AddressDerivation_length":[5132],"Create2AddressDerivation_ptr":[5129],"DefaultFreeMemoryPointer":[4889],"ECDSA_MaxLength":[5075],"ECDSA_signature_s_offset":[5078],"ECDSA_signature_v_offset":[5081],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[5072],"EIP1271_isValidSignature_calldata_baseLength":[5097],"EIP1271_isValidSignature_digest_negativeOffset":[5091],"EIP1271_isValidSignature_selector":[5085],"EIP1271_isValidSignature_selector_negativeOffset":[5094],"EIP1271_isValidSignature_signatureHead_negativeOffset":[5088],"EIP1271_isValidSignature_signature_head_offset":[5100],"EIP2098_allButHighestBitMask":[5068],"EIP712_DigestPayload_size":[4919],"EIP712_DomainSeparator_offset":[4913],"EIP712_OrderHash_offset":[4916],"EIP712_Order_size":[4907],"EIP_712_PREFIX":[5117],"Ecrecover_args_size":[5242],"Ecrecover_precompile":[5239],"Execution_conduit_offset":[4817],"Execution_offerer_offset":[4814],"ExtraGasBuffer":[5120],"FiveWords":[4880],"FourWords":[4877],"FreeMemoryPointerSlot":[4883],"Fulfillment_itemIndex_offset":[4859],"GettersAndDerivers":[6031],"InexactFraction_error_len":[5236],"InexactFraction_error_signature":[5233],"InvalidFulfillmentComponentData_error_len":[4824],"InvalidFulfillmentComponentData_error_signature":[4821],"InvalidSignature_error_length":[5269],"InvalidSignature_error_signature":[5266],"InvalidSigner_error_length":[5262],"InvalidSigner_error_signature":[5259],"MaskOverByteTwelve":[5136],"MaskOverFirstFourBytes":[5144],"MaskOverLastTwentyBytes":[5140],"MaxUint120":[5154],"MaxUint8":[5151],"MemoryExpansionCoefficient":[5126],"MissingItemAmount_error_len":[4844],"MissingItemAmount_error_signature":[4841],"NameLengthPtr":[4766],"NameWithLength":[4769],"NoContract_error_length":[5113],"NoContract_error_sig_ptr":[5107],"NoContract_error_signature":[5104],"NoContract_error_token_ptr":[5110],"NonMatchSelector_MagicModulus":[5282],"NonMatchSelector_MagicRemainder":[5285],"NumBitsAfterSelector":[5279],"OneConduitExecute_size":[5187],"OneWord":[4868],"OrderFulfilled_baseOffset":[4932],"OrderFulfilled_baseSize":[4925],"OrderFulfilled_consideration_body_offset":[4953],"OrderFulfilled_consideration_head_offset":[4950],"OrderFulfilled_consideration_length_baseOffset":[4935],"OrderFulfilled_fulfiller_offset":[4941],"OrderFulfilled_offer_body_offset":[4947],"OrderFulfilled_offer_head_offset":[4944],"OrderFulfilled_offer_length_baseOffset":[4938],"OrderFulfilled_selector":[4929],"OrderParameters":[5366],"OrderParameters_conduit_offset":[4853],"OrderParameters_consideration_head_offset":[4850],"OrderParameters_counter_offset":[4856],"OrderParameters_offer_head_offset":[4847],"Panic_arithmetic":[4837],"Panic_error_length":[4834],"Panic_error_offset":[4831],"Panic_error_signature":[4828],"ReceivedItem_CommonParams_size":[4805],"ReceivedItem_amount_offset":[4799],"ReceivedItem_recipient_offset":[4802],"ReceivedItem_size":[4796],"Signature_lower_v":[5245],"Slot0x80":[4892],"Slot0xA0":[4895],"ThreeWords":[4874],"TwoWords":[4871],"Version":[4772],"Version_length":[4775],"Version_shift":[4778],"ZeroSlot":[4886],"_ENTERED":[4784],"_NOT_ENTERED":[4781],"receivedItemsHash_ptr":[4922]},"id":6032,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5919,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:38"},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":5921,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6032,"sourceUnit":5390,"src":"58:61:38","symbolAliases":[{"foreign":{"id":5920,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"67:15:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationBase.sol","file":"./ConsiderationBase.sol","id":5923,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6032,"sourceUnit":4762,"src":"121:60:38","symbolAliases":[{"foreign":{"id":5922,"name":"ConsiderationBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4761,"src":"130:17:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":5924,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6032,"sourceUnit":5286,"src":"183:38:38","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5925,"name":"ConsiderationBase","nodeType":"IdentifierPath","referencedDeclaration":4761,"src":"254:17:38"},"id":5926,"nodeType":"InheritanceSpecifier","src":"254:17:38"}],"canonicalName":"GettersAndDerivers","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":6031,"linearizedBaseContracts":[6031,4761],"name":"GettersAndDerivers","nameLocation":"232:18:38","nodeType":"ContractDefinition","nodes":[{"body":{"id":5934,"nodeType":"Block","src":"367:2:38","statements":[]},"id":5935,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":5931,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"344:17:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5932,"kind":"baseConstructorSpecifier","modifierName":{"id":5930,"name":"ConsiderationBase","nodeType":"IdentifierPath","referencedDeclaration":4761,"src":"326:17:38"},"nodeType":"ModifierInvocation","src":"326:36:38"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5928,"mutability":"mutable","name":"conduitController","nameLocation":"299:17:38","nodeType":"VariableDeclaration","scope":5935,"src":"291:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5927,"name":"address","nodeType":"ElementaryTypeName","src":"291:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"290:27:38"},"returnParameters":{"id":5933,"nodeType":"ParameterList","parameters":[],"src":"367:0:38"},"scope":6031,"src":"279:90:38","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5950,"nodeType":"Block","src":"522:626:38","statements":[{"assignments":[5946],"declarations":[{"constant":false,"id":5946,"mutability":"mutable","name":"typeHash","nameLocation":"540:8:38","nodeType":"VariableDeclaration","scope":5950,"src":"532:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5945,"name":"bytes32","nodeType":"ElementaryTypeName","src":"532:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5948,"initialValue":{"id":5947,"name":"_ORDER_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"551:15:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"532:34:38"},{"AST":{"nodeType":"YulBlock","src":"586:556:38","statements":[{"nodeType":"YulVariableDeclaration","src":"600:48:38","value":{"arguments":[{"name":"orderParameters","nodeType":"YulIdentifier","src":"623:15:38"},{"name":"OneWord","nodeType":"YulIdentifier","src":"640:7:38"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"619:3:38"},"nodeType":"YulFunctionCall","src":"619:29:38"},"variables":[{"name":"typeHashPtr","nodeType":"YulTypedName","src":"604:11:38","type":""}]},{"nodeType":"YulVariableDeclaration","src":"662:39:38","value":{"arguments":[{"name":"typeHashPtr","nodeType":"YulIdentifier","src":"689:11:38"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"683:5:38"},"nodeType":"YulFunctionCall","src":"683:18:38"},"variables":[{"name":"previousValue","nodeType":"YulTypedName","src":"666:13:38","type":""}]},{"expression":{"arguments":[{"name":"typeHashPtr","nodeType":"YulIdentifier","src":"722:11:38"},{"name":"typeHash","nodeType":"YulIdentifier","src":"735:8:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"715:6:38"},"nodeType":"YulFunctionCall","src":"715:29:38"},"nodeType":"YulExpressionStatement","src":"715:29:38"},{"nodeType":"YulVariableDeclaration","src":"758:116:38","value":{"arguments":[{"name":"orderParameters","nodeType":"YulIdentifier","src":"797:15:38"},{"name":"OrderParameters_counter_offset","nodeType":"YulIdentifier","src":"830:30:38"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"776:3:38"},"nodeType":"YulFunctionCall","src":"776:98:38"},"variables":[{"name":"counterPtr","nodeType":"YulTypedName","src":"762:10:38","type":""}]},{"nodeType":"YulVariableDeclaration","src":"888:39:38","value":{"arguments":[{"name":"counterPtr","nodeType":"YulIdentifier","src":"916:10:38"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"910:5:38"},"nodeType":"YulFunctionCall","src":"910:17:38"},"variables":[{"name":"counterDataPtr","nodeType":"YulTypedName","src":"892:14:38","type":""}]},{"expression":{"arguments":[{"name":"counterPtr","nodeType":"YulIdentifier","src":"948:10:38"},{"name":"counter","nodeType":"YulIdentifier","src":"960:7:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"941:6:38"},"nodeType":"YulFunctionCall","src":"941:27:38"},"nodeType":"YulExpressionStatement","src":"941:27:38"},{"nodeType":"YulAssignment","src":"982:54:38","value":{"arguments":[{"name":"typeHashPtr","nodeType":"YulIdentifier","src":"1005:11:38"},{"name":"EIP712_Order_size","nodeType":"YulIdentifier","src":"1018:17:38"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"995:9:38"},"nodeType":"YulFunctionCall","src":"995:41:38"},"variableNames":[{"name":"orderHash","nodeType":"YulIdentifier","src":"982:9:38"}]},{"expression":{"arguments":[{"name":"typeHashPtr","nodeType":"YulIdentifier","src":"1057:11:38"},{"name":"previousValue","nodeType":"YulIdentifier","src":"1070:13:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1050:6:38"},"nodeType":"YulFunctionCall","src":"1050:34:38"},"nodeType":"YulExpressionStatement","src":"1050:34:38"},{"expression":{"arguments":[{"name":"counterPtr","nodeType":"YulIdentifier","src":"1105:10:38"},{"name":"counterDataPtr","nodeType":"YulIdentifier","src":"1117:14:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1098:6:38"},"nodeType":"YulFunctionCall","src":"1098:34:38"},"nodeType":"YulExpressionStatement","src":"1098:34:38"}]},"evmVersion":"london","externalReferences":[{"declaration":4907,"isOffset":false,"isSlot":false,"src":"1018:17:38","valueSize":1},{"declaration":4868,"isOffset":false,"isSlot":false,"src":"640:7:38","valueSize":1},{"declaration":4856,"isOffset":false,"isSlot":false,"src":"830:30:38","valueSize":1},{"declaration":5940,"isOffset":false,"isSlot":false,"src":"960:7:38","valueSize":1},{"declaration":5943,"isOffset":false,"isSlot":false,"src":"982:9:38","valueSize":1},{"declaration":5938,"isOffset":false,"isSlot":false,"src":"623:15:38","valueSize":1},{"declaration":5938,"isOffset":false,"isSlot":false,"src":"797:15:38","valueSize":1},{"declaration":5946,"isOffset":false,"isSlot":false,"src":"735:8:38","valueSize":1}],"id":5949,"nodeType":"InlineAssembly","src":"577:565:38"}]},"id":5951,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveOrderHash","nameLocation":"384:16:38","nodeType":"FunctionDefinition","parameters":{"id":5941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5938,"mutability":"mutable","name":"orderParameters","nameLocation":"433:15:38","nodeType":"VariableDeclaration","scope":5951,"src":"410:38:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_memory_ptr","typeString":"struct OrderParameters"},"typeName":{"id":5937,"nodeType":"UserDefinedTypeName","pathNode":{"id":5936,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"410:15:38"},"referencedDeclaration":5366,"src":"410:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":5940,"mutability":"mutable","name":"counter","nameLocation":"466:7:38","nodeType":"VariableDeclaration","scope":5951,"src":"458:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5939,"name":"uint256","nodeType":"ElementaryTypeName","src":"458:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"400:79:38"},"returnParameters":{"id":5944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5943,"mutability":"mutable","name":"orderHash","nameLocation":"511:9:38","nodeType":"VariableDeclaration","scope":5951,"src":"503:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5942,"name":"bytes32","nodeType":"ElementaryTypeName","src":"503:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"502:19:38"},"scope":6031,"src":"375:773:38","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5970,"nodeType":"Block","src":"1266:1697:38","statements":[{"assignments":[5959],"declarations":[{"constant":false,"id":5959,"mutability":"mutable","name":"conduitController","nameLocation":"1364:17:38","nodeType":"VariableDeclaration","scope":5970,"src":"1356:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5958,"name":"address","nodeType":"ElementaryTypeName","src":"1356:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5964,"initialValue":{"arguments":[{"id":5962,"name":"_CONDUIT_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4613,"src":"1392:19:38","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"}],"id":5961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1384:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5960,"name":"address","nodeType":"ElementaryTypeName","src":"1384:7:38","typeDescriptions":{}}},"id":5963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1384:28:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1356:56:38"},{"assignments":[5966],"declarations":[{"constant":false,"id":5966,"mutability":"mutable","name":"conduitCreationCodeHash","nameLocation":"1511:23:38","nodeType":"VariableDeclaration","scope":5970,"src":"1503:31:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5965,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1503:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5968,"initialValue":{"id":5967,"name":"_CONDUIT_CREATION_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"1537:27:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1503:61:38"},{"AST":{"nodeType":"YulBlock","src":"1648:1309:38","statements":[{"nodeType":"YulVariableDeclaration","src":"1743:53:38","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"1774:21:38"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1768:5:38"},"nodeType":"YulFunctionCall","src":"1768:28:38"},"variables":[{"name":"freeMemoryPointer","nodeType":"YulTypedName","src":"1747:17:38","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1977:1:38","type":"","value":"0"},{"arguments":[{"name":"MaskOverByteTwelve","nodeType":"YulIdentifier","src":"1983:18:38"},{"name":"conduitController","nodeType":"YulIdentifier","src":"2003:17:38"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1980:2:38"},"nodeType":"YulFunctionCall","src":"1980:41:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1970:6:38"},"nodeType":"YulFunctionCall","src":"1970:52:38"},"nodeType":"YulExpressionStatement","src":"1970:52:38"},{"expression":{"arguments":[{"name":"OneWord","nodeType":"YulIdentifier","src":"2117:7:38"},{"name":"conduitKey","nodeType":"YulIdentifier","src":"2126:10:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2110:6:38"},"nodeType":"YulFunctionCall","src":"2110:27:38"},"nodeType":"YulExpressionStatement","src":"2110:27:38"},{"expression":{"arguments":[{"name":"TwoWords","nodeType":"YulIdentifier","src":"2239:8:38"},{"name":"conduitCreationCodeHash","nodeType":"YulIdentifier","src":"2249:23:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2232:6:38"},"nodeType":"YulFunctionCall","src":"2232:41:38"},"nodeType":"YulExpressionStatement","src":"2232:41:38"},{"nodeType":"YulAssignment","src":"2368:469:38","value":{"arguments":[{"arguments":[{"name":"Create2AddressDerivation_ptr","nodeType":"YulIdentifier","src":"2539:28:38"},{"name":"Create2AddressDerivation_length","nodeType":"YulIdentifier","src":"2660:31:38"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2445:9:38"},"nodeType":"YulFunctionCall","src":"2445:264:38"},{"name":"MaskOverLastTwentyBytes","nodeType":"YulIdentifier","src":"2800:23:38"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2379:3:38"},"nodeType":"YulFunctionCall","src":"2379:458:38"},"variableNames":[{"name":"conduit","nodeType":"YulIdentifier","src":"2368:7:38"}]},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"2906:21:38"},{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"2929:17:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2899:6:38"},"nodeType":"YulFunctionCall","src":"2899:48:38"},"nodeType":"YulExpressionStatement","src":"2899:48:38"}]},"evmVersion":"london","externalReferences":[{"declaration":5132,"isOffset":false,"isSlot":false,"src":"2660:31:38","valueSize":1},{"declaration":5129,"isOffset":false,"isSlot":false,"src":"2539:28:38","valueSize":1},{"declaration":4883,"isOffset":false,"isSlot":false,"src":"1774:21:38","valueSize":1},{"declaration":4883,"isOffset":false,"isSlot":false,"src":"2906:21:38","valueSize":1},{"declaration":5136,"isOffset":false,"isSlot":false,"src":"1983:18:38","valueSize":1},{"declaration":5140,"isOffset":false,"isSlot":false,"src":"2800:23:38","valueSize":1},{"declaration":4868,"isOffset":false,"isSlot":false,"src":"2117:7:38","valueSize":1},{"declaration":4871,"isOffset":false,"isSlot":false,"src":"2239:8:38","valueSize":1},{"declaration":5956,"isOffset":false,"isSlot":false,"src":"2368:7:38","valueSize":1},{"declaration":5959,"isOffset":false,"isSlot":false,"src":"2003:17:38","valueSize":1},{"declaration":5966,"isOffset":false,"isSlot":false,"src":"2249:23:38","valueSize":1},{"declaration":5953,"isOffset":false,"isSlot":false,"src":"2126:10:38","valueSize":1}],"id":5969,"nodeType":"InlineAssembly","src":"1639:1318:38"}]},"id":5971,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveConduit","nameLocation":"1163:14:38","nodeType":"FunctionDefinition","parameters":{"id":5954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5953,"mutability":"mutable","name":"conduitKey","nameLocation":"1186:10:38","nodeType":"VariableDeclaration","scope":5971,"src":"1178:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5952,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1178:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1177:20:38"},"returnParameters":{"id":5957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5956,"mutability":"mutable","name":"conduit","nameLocation":"1253:7:38","nodeType":"VariableDeclaration","scope":5971,"src":"1245:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5955,"name":"address","nodeType":"ElementaryTypeName","src":"1245:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1244:17:38"},"scope":6031,"src":"1154:1809:38","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5986,"nodeType":"Block","src":"3341:148:38","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5977,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3385:5:38","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"chainid","nodeType":"MemberAccess","src":"3385:13:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5979,"name":"_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"3402:9:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3385:26:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5982,"name":"_deriveDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4675,"src":"3458:22:38","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":5983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3458:24:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3385:97:38","trueExpression":{"id":5981,"name":"_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"3426:17:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5976,"id":5985,"nodeType":"Return","src":"3378:104:38"}]},"documentation":{"id":5972,"nodeType":"StructuredDocumentation","src":"2969:307:38","text":" @dev Internal view function to get the EIP-712 domain separator. If the\n      chainId matches the chainId set on deployment, the cached domain\n      separator will be returned; otherwise, it will be derived from\n      scratch.\n @return The domain separator."},"id":5987,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparator","nameLocation":"3290:16:38","nodeType":"FunctionDefinition","parameters":{"id":5973,"nodeType":"ParameterList","parameters":[],"src":"3306:2:38"},"returnParameters":{"id":5976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5987,"src":"3332:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5974,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3332:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3331:9:38"},"scope":6031,"src":"3281:208:38","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6017,"nodeType":"Block","src":"4025:499:38","statements":[{"expression":{"id":6000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5997,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5993,"src":"4075:15:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":5998,"name":"_domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"4093:16:38","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":5999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4093:18:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4075:36:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6001,"nodeType":"ExpressionStatement","src":"4075:36:38"},{"expression":{"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6002,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"4200:17:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6005,"name":"_CONDUIT_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4613,"src":"4228:19:38","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ConduitControllerInterface_$3932","typeString":"contract ConduitControllerInterface"}],"id":6004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4220:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6003,"name":"address","nodeType":"ElementaryTypeName","src":"4220:7:38","typeDescriptions":{}}},"id":6006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4220:28:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4200:48:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6008,"nodeType":"ExpressionStatement","src":"4200:48:38"},{"expression":{"id":6014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6009,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5991,"src":"4314:7:38","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6012,"name":"Version_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4775,"src":"4335:14:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4324:10:38","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":6010,"name":"string","nodeType":"ElementaryTypeName","src":"4328:6:38","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":6013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4324:26:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"4314:36:38","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":6015,"nodeType":"ExpressionStatement","src":"4314:36:38"},{"AST":{"nodeType":"YulBlock","src":"4436:82:38","statements":[{"expression":{"arguments":[{"arguments":[{"name":"version","nodeType":"YulIdentifier","src":"4461:7:38"},{"name":"OneWord","nodeType":"YulIdentifier","src":"4470:7:38"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4457:3:38"},"nodeType":"YulFunctionCall","src":"4457:21:38"},{"arguments":[{"name":"Version_shift","nodeType":"YulIdentifier","src":"4484:13:38"},{"name":"Version","nodeType":"YulIdentifier","src":"4499:7:38"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4480:3:38"},"nodeType":"YulFunctionCall","src":"4480:27:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4450:6:38"},"nodeType":"YulFunctionCall","src":"4450:58:38"},"nodeType":"YulExpressionStatement","src":"4450:58:38"}]},"evmVersion":"london","externalReferences":[{"declaration":4868,"isOffset":false,"isSlot":false,"src":"4470:7:38","valueSize":1},{"declaration":4772,"isOffset":false,"isSlot":false,"src":"4499:7:38","valueSize":1},{"declaration":4778,"isOffset":false,"isSlot":false,"src":"4484:13:38","valueSize":1},{"declaration":5991,"isOffset":false,"isSlot":false,"src":"4461:7:38","valueSize":1}],"id":6016,"nodeType":"InlineAssembly","src":"4427:91:38"}]},"documentation":{"id":5988,"nodeType":"StructuredDocumentation","src":"3495:329:38","text":" @dev Internal view function to retrieve configuration information for\n      this contract.\n @return version           The contract version.\n @return domainSeparator   The domain separator for this contract.\n @return conduitController The conduit Controller set for this contract."},"id":6018,"implemented":true,"kind":"function","modifiers":[],"name":"_information","nameLocation":"3838:12:38","nodeType":"FunctionDefinition","parameters":{"id":5989,"nodeType":"ParameterList","parameters":[],"src":"3850:2:38"},"returnParameters":{"id":5996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5991,"mutability":"mutable","name":"version","nameLocation":"3927:7:38","nodeType":"VariableDeclaration","scope":6018,"src":"3913:21:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5990,"name":"string","nodeType":"ElementaryTypeName","src":"3913:6:38","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5993,"mutability":"mutable","name":"domainSeparator","nameLocation":"3956:15:38","nodeType":"VariableDeclaration","scope":6018,"src":"3948:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3948:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5995,"mutability":"mutable","name":"conduitController","nameLocation":"3993:17:38","nodeType":"VariableDeclaration","scope":6018,"src":"3985:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5994,"name":"address","nodeType":"ElementaryTypeName","src":"3985:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3899:121:38"},"scope":6031,"src":"3829:695:38","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6029,"nodeType":"Block","src":"4956:923:38","statements":[{"AST":{"nodeType":"YulBlock","src":"5039:834:38","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5131:1:38","type":"","value":"0"},{"name":"EIP_712_PREFIX","nodeType":"YulIdentifier","src":"5134:14:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5124:6:38"},"nodeType":"YulFunctionCall","src":"5124:25:38"},"nodeType":"YulExpressionStatement","src":"5124:25:38"},{"expression":{"arguments":[{"name":"EIP712_DomainSeparator_offset","nodeType":"YulIdentifier","src":"5249:29:38"},{"name":"domainSeparator","nodeType":"YulIdentifier","src":"5280:15:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5242:6:38"},"nodeType":"YulFunctionCall","src":"5242:54:38"},"nodeType":"YulExpressionStatement","src":"5242:54:38"},{"expression":{"arguments":[{"name":"EIP712_OrderHash_offset","nodeType":"YulIdentifier","src":"5601:23:38"},{"name":"orderHash","nodeType":"YulIdentifier","src":"5626:9:38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5594:6:38"},"nodeType":"YulFunctionCall","src":"5594:42:38"},"nodeType":"YulExpressionStatement","src":"5594:42:38"},{"nodeType":"YulAssignment","src":"5702:48:38","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5721:1:38","type":"","value":"0"},{"name":"EIP712_DigestPayload_size","nodeType":"YulIdentifier","src":"5724:25:38"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"5711:9:38"},"nodeType":"YulFunctionCall","src":"5711:39:38"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5702:5:38"}]},{"expression":{"arguments":[{"name":"EIP712_OrderHash_offset","nodeType":"YulIdentifier","src":"5836:23:38"},{"kind":"number","nodeType":"YulLiteral","src":"5861:1:38","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5829:6:38"},"nodeType":"YulFunctionCall","src":"5829:34:38"},"nodeType":"YulExpressionStatement","src":"5829:34:38"}]},"evmVersion":"london","externalReferences":[{"declaration":4919,"isOffset":false,"isSlot":false,"src":"5724:25:38","valueSize":1},{"declaration":4913,"isOffset":false,"isSlot":false,"src":"5249:29:38","valueSize":1},{"declaration":4916,"isOffset":false,"isSlot":false,"src":"5601:23:38","valueSize":1},{"declaration":4916,"isOffset":false,"isSlot":false,"src":"5836:23:38","valueSize":1},{"declaration":5117,"isOffset":false,"isSlot":false,"src":"5134:14:38","valueSize":1},{"declaration":6021,"isOffset":false,"isSlot":false,"src":"5280:15:38","valueSize":1},{"declaration":6023,"isOffset":false,"isSlot":false,"src":"5626:9:38","valueSize":1},{"declaration":6026,"isOffset":false,"isSlot":false,"src":"5702:5:38","valueSize":1}],"id":6028,"nodeType":"InlineAssembly","src":"5030:843:38"}]},"documentation":{"id":6019,"nodeType":"StructuredDocumentation","src":"4530:282:38","text":" @dev Internal pure function to efficiently derive an digest to sign for\n      an order in accordance with EIP-712.\n @param domainSeparator The domain separator.\n @param orderHash       The order hash.\n @return value The hash."},"id":6030,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveEIP712Digest","nameLocation":"4826:19:38","nodeType":"FunctionDefinition","parameters":{"id":6024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6021,"mutability":"mutable","name":"domainSeparator","nameLocation":"4854:15:38","nodeType":"VariableDeclaration","scope":6030,"src":"4846:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6020,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4846:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6023,"mutability":"mutable","name":"orderHash","nameLocation":"4879:9:38","nodeType":"VariableDeclaration","scope":6030,"src":"4871:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6022,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4871:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4845:44:38"},"returnParameters":{"id":6027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6026,"mutability":"mutable","name":"value","nameLocation":"4945:5:38","nodeType":"VariableDeclaration","scope":6030,"src":"4937:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6025,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4937:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4936:15:38"},"scope":6031,"src":"4817:1062:38","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6032,"src":"223:5658:38","usedErrors":[]}],"src":"32:5850:38"},"id":38},"contracts/lib/LowLevelHelpers.sol":{"ast":{"absolutePath":"contracts/lib/LowLevelHelpers.sol","exportedSymbols":{"AccumulatorArmed":[5193],"AccumulatorDisarmed":[5190],"Accumulator_array_length_ptr":[5205],"Accumulator_array_offset":[5211],"Accumulator_array_offset_ptr":[5202],"Accumulator_conduitKey_ptr":[5196],"Accumulator_itemSizeOffsetDifference":[5208],"Accumulator_selector_ptr":[5199],"AdditionalRecipients_size":[4910],"AdvancedOrder_numerator_offset":[4862],"AlmostOneWord":[4865],"BadContractSignature_error_length":[5276],"BadContractSignature_error_signature":[5273],"BadSignatureV_error_length":[5255],"BadSignatureV_error_offset":[5252],"BadSignatureV_error_signature":[5249],"BasicOrder_additionalRecipients_data_cdPtr":[5001],"BasicOrder_additionalRecipients_head_cdPtr":[4992],"BasicOrder_additionalRecipients_head_ptr":[5061],"BasicOrder_additionalRecipients_length_cdPtr":[4998],"BasicOrder_basicOrderType_cdPtr":[4977],"BasicOrder_basicOrderType_range":[5007],"BasicOrder_common_params_size":[4901],"BasicOrder_considerationAmount_cdPtr":[4962],"BasicOrder_considerationHashesArray_ptr":[4904],"BasicOrder_considerationItem_endAmount_ptr":[5025],"BasicOrder_considerationItem_identifier_ptr":[5019],"BasicOrder_considerationItem_itemType_ptr":[5013],"BasicOrder_considerationItem_startAmount_ptr":[5022],"BasicOrder_considerationItem_token_ptr":[5016],"BasicOrder_considerationItem_typeHash_ptr":[5010],"BasicOrder_considerationToken_cdPtr":[4959],"BasicOrder_endAmount_cdPtr":[4898],"BasicOrder_fulfillerConduit_cdPtr":[4986],"BasicOrder_offerAmount_cdPtr":[4974],"BasicOrder_offerItem_endAmount_ptr":[5037],"BasicOrder_offerItem_itemType_ptr":[5031],"BasicOrder_offerItem_token_ptr":[5034],"BasicOrder_offerItem_typeHash_ptr":[5028],"BasicOrder_offerToken_cdPtr":[4971],"BasicOrder_offererConduit_cdPtr":[4983],"BasicOrder_offerer_cdPtr":[4965],"BasicOrder_order_considerationHashes_ptr":[5049],"BasicOrder_order_counter_ptr":[5058],"BasicOrder_order_offerHashes_ptr":[5046],"BasicOrder_order_offerer_ptr":[5043],"BasicOrder_order_orderType_ptr":[5052],"BasicOrder_order_startTime_ptr":[5055],"BasicOrder_order_typeHash_ptr":[5040],"BasicOrder_parameters_cdPtr":[4956],"BasicOrder_parameters_ptr":[5004],"BasicOrder_signature_cdPtr":[4995],"BasicOrder_signature_ptr":[5064],"BasicOrder_startTime_cdPtr":[4980],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[4989],"BasicOrder_zone_cdPtr":[4968],"Common_amount_offset":[4793],"Common_identifier_offset":[4790],"Common_token_offset":[4787],"Conduit_execute_ConduitTransfer_length":[5160],"Conduit_execute_ConduitTransfer_length_ptr":[5166],"Conduit_execute_ConduitTransfer_offset_ptr":[5163],"Conduit_execute_ConduitTransfer_ptr":[5157],"Conduit_execute_signature":[5148],"Conduit_execute_transferAmount_ptr":[5184],"Conduit_execute_transferFrom_ptr":[5175],"Conduit_execute_transferIdentifier_ptr":[5181],"Conduit_execute_transferItemType_ptr":[5169],"Conduit_execute_transferTo_ptr":[5178],"Conduit_execute_transferToken_ptr":[5172],"Conduit_transferItem_amount_ptr":[5229],"Conduit_transferItem_from_ptr":[5220],"Conduit_transferItem_identifier_ptr":[5226],"Conduit_transferItem_size":[5214],"Conduit_transferItem_to_ptr":[5223],"Conduit_transferItem_token_ptr":[5217],"ConsiderItem_recipient_offset":[4811],"ConsiderationItem_recipient_offset":[4808],"CostPerWord":[5123],"Create2AddressDerivation_length":[5132],"Create2AddressDerivation_ptr":[5129],"DefaultFreeMemoryPointer":[4889],"ECDSA_MaxLength":[5075],"ECDSA_signature_s_offset":[5078],"ECDSA_signature_v_offset":[5081],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[5072],"EIP1271_isValidSignature_calldata_baseLength":[5097],"EIP1271_isValidSignature_digest_negativeOffset":[5091],"EIP1271_isValidSignature_selector":[5085],"EIP1271_isValidSignature_selector_negativeOffset":[5094],"EIP1271_isValidSignature_signatureHead_negativeOffset":[5088],"EIP1271_isValidSignature_signature_head_offset":[5100],"EIP2098_allButHighestBitMask":[5068],"EIP712_DigestPayload_size":[4919],"EIP712_DomainSeparator_offset":[4913],"EIP712_OrderHash_offset":[4916],"EIP712_Order_size":[4907],"EIP_712_PREFIX":[5117],"Ecrecover_args_size":[5242],"Ecrecover_precompile":[5239],"Execution_conduit_offset":[4817],"Execution_offerer_offset":[4814],"ExtraGasBuffer":[5120],"FiveWords":[4880],"FourWords":[4877],"FreeMemoryPointerSlot":[4883],"Fulfillment_itemIndex_offset":[4859],"InexactFraction_error_len":[5236],"InexactFraction_error_signature":[5233],"InvalidFulfillmentComponentData_error_len":[4824],"InvalidFulfillmentComponentData_error_signature":[4821],"InvalidSignature_error_length":[5269],"InvalidSignature_error_signature":[5266],"InvalidSigner_error_length":[5262],"InvalidSigner_error_signature":[5259],"LowLevelHelpers":[6071],"MaskOverByteTwelve":[5136],"MaskOverFirstFourBytes":[5144],"MaskOverLastTwentyBytes":[5140],"MaxUint120":[5154],"MaxUint8":[5151],"MemoryExpansionCoefficient":[5126],"MissingItemAmount_error_len":[4844],"MissingItemAmount_error_signature":[4841],"NameLengthPtr":[4766],"NameWithLength":[4769],"NoContract_error_length":[5113],"NoContract_error_sig_ptr":[5107],"NoContract_error_signature":[5104],"NoContract_error_token_ptr":[5110],"NonMatchSelector_MagicModulus":[5282],"NonMatchSelector_MagicRemainder":[5285],"NumBitsAfterSelector":[5279],"OneConduitExecute_size":[5187],"OneWord":[4868],"OrderFulfilled_baseOffset":[4932],"OrderFulfilled_baseSize":[4925],"OrderFulfilled_consideration_body_offset":[4953],"OrderFulfilled_consideration_head_offset":[4950],"OrderFulfilled_consideration_length_baseOffset":[4935],"OrderFulfilled_fulfiller_offset":[4941],"OrderFulfilled_offer_body_offset":[4947],"OrderFulfilled_offer_head_offset":[4944],"OrderFulfilled_offer_length_baseOffset":[4938],"OrderFulfilled_selector":[4929],"OrderParameters_conduit_offset":[4853],"OrderParameters_consideration_head_offset":[4850],"OrderParameters_counter_offset":[4856],"OrderParameters_offer_head_offset":[4847],"Panic_arithmetic":[4837],"Panic_error_length":[4834],"Panic_error_offset":[4831],"Panic_error_signature":[4828],"ReceivedItem_CommonParams_size":[4805],"ReceivedItem_amount_offset":[4799],"ReceivedItem_recipient_offset":[4802],"ReceivedItem_size":[4796],"Signature_lower_v":[5245],"Slot0x80":[4892],"Slot0xA0":[4895],"ThreeWords":[4874],"TwoWords":[4871],"Version":[4772],"Version_length":[4775],"Version_shift":[4778],"ZeroSlot":[4886],"_ENTERED":[4784],"_NOT_ENTERED":[4781],"receivedItemsHash_ptr":[4922]},"id":6072,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6033,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:39"},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":6034,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6072,"sourceUnit":5286,"src":"58:38:39","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"LowLevelHelpers","contractDependencies":[],"contractKind":"contract","documentation":{"id":6035,"nodeType":"StructuredDocumentation","src":"98:147:39","text":" @title LowLevelHelpers\n @author 0age\n @notice LowLevelHelpers contains logic for performing various low-level\n         operations."},"fullyImplemented":true,"id":6071,"linearizedBaseContracts":[6071],"name":"LowLevelHelpers","nameLocation":"255:15:39","nodeType":"ContractDefinition","nodes":[{"body":{"id":6046,"nodeType":"Block","src":"820:281:39","statements":[{"AST":{"nodeType":"YulBlock","src":"839:256:39","statements":[{"nodeType":"YulAssignment","src":"892:193:39","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"931:3:39"},"nodeType":"YulFunctionCall","src":"931:5:39"},{"name":"target","nodeType":"YulIdentifier","src":"954:6:39"},{"arguments":[{"name":"callData","nodeType":"YulIdentifier","src":"982:8:39"},{"name":"OneWord","nodeType":"YulIdentifier","src":"992:7:39"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"978:3:39"},"nodeType":"YulFunctionCall","src":"978:22:39"},{"arguments":[{"name":"callData","nodeType":"YulIdentifier","src":"1024:8:39"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1018:5:39"},"nodeType":"YulFunctionCall","src":"1018:15:39"},{"kind":"number","nodeType":"YulLiteral","src":"1051:1:39","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1070:1:39","type":"","value":"0"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"903:10:39"},"nodeType":"YulFunctionCall","src":"903:182:39"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"892:7:39"}]}]},"evmVersion":"london","externalReferences":[{"declaration":4868,"isOffset":false,"isSlot":false,"src":"992:7:39","valueSize":1},{"declaration":6040,"isOffset":false,"isSlot":false,"src":"1024:8:39","valueSize":1},{"declaration":6040,"isOffset":false,"isSlot":false,"src":"982:8:39","valueSize":1},{"declaration":6043,"isOffset":false,"isSlot":false,"src":"892:7:39","valueSize":1},{"declaration":6038,"isOffset":false,"isSlot":false,"src":"954:6:39","valueSize":1}],"id":6045,"nodeType":"InlineAssembly","src":"830:265:39"}]},"documentation":{"id":6036,"nodeType":"StructuredDocumentation","src":"277:413:39","text":" @dev Internal view function to staticcall an arbitrary target with given\n      calldata. Note that no data is written to memory and no contract\n      size check is performed.\n @param target   The account to staticcall.\n @param callData The calldata to supply when staticcalling the target.\n @return success The status of the staticcall to the target."},"id":6047,"implemented":true,"kind":"function","modifiers":[],"name":"_staticcall","nameLocation":"704:11:39","nodeType":"FunctionDefinition","parameters":{"id":6041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6038,"mutability":"mutable","name":"target","nameLocation":"724:6:39","nodeType":"VariableDeclaration","scope":6047,"src":"716:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6037,"name":"address","nodeType":"ElementaryTypeName","src":"716:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6040,"mutability":"mutable","name":"callData","nameLocation":"745:8:39","nodeType":"VariableDeclaration","scope":6047,"src":"732:21:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6039,"name":"bytes","nodeType":"ElementaryTypeName","src":"732:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"715:39:39"},"returnParameters":{"id":6044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6043,"mutability":"mutable","name":"success","nameLocation":"807:7:39","nodeType":"VariableDeclaration","scope":6047,"src":"802:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6042,"name":"bool","nodeType":"ElementaryTypeName","src":"802:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"801:14:39"},"scope":6071,"src":"695:406:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6052,"nodeType":"Block","src":"1405:2179:39","statements":[{"AST":{"nodeType":"YulBlock","src":"1424:2154:39","statements":[{"body":{"nodeType":"YulBlock","src":"1571:1997:39","statements":[{"nodeType":"YulVariableDeclaration","src":"1814:131:39","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1866:14:39"},"nodeType":"YulFunctionCall","src":"1866:16:39"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"1884:13:39"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1862:3:39"},"nodeType":"YulFunctionCall","src":"1862:36:39"},{"name":"OneWord","nodeType":"YulIdentifier","src":"1920:7:39"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"1837:3:39"},"nodeType":"YulFunctionCall","src":"1837:108:39"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"1818:15:39","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2177:60:39","value":{"arguments":[{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"2205:21:39"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2199:5:39"},"nodeType":"YulFunctionCall","src":"2199:28:39"},{"name":"OneWord","nodeType":"YulIdentifier","src":"2229:7:39"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2195:3:39"},"nodeType":"YulFunctionCall","src":"2195:42:39"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"2181:10:39","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2320:45:39","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"2336:11:39"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2349:15:39"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2332:3:39"},"nodeType":"YulFunctionCall","src":"2332:33:39"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"2324:4:39","type":""}]},{"body":{"nodeType":"YulBlock","src":"2482:572:39","statements":[{"nodeType":"YulAssignment","src":"2504:532:39","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"2541:4:39"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2612:15:39"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"2629:10:39"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2608:3:39"},"nodeType":"YulFunctionCall","src":"2608:32:39"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"2642:11:39"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2604:3:39"},"nodeType":"YulFunctionCall","src":"2604:50:39"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2766:15:39"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2783:15:39"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2762:3:39"},"nodeType":"YulFunctionCall","src":"2762:37:39"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"2841:10:39"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"2853:10:39"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2837:3:39"},"nodeType":"YulFunctionCall","src":"2837:27:39"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2721:3:39"},"nodeType":"YulFunctionCall","src":"2721:177:39"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"2932:26:39"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2684:3:39"},"nodeType":"YulFunctionCall","src":"2684:304:39"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2571:3:39"},"nodeType":"YulFunctionCall","src":"2571:443:39"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2512:3:39"},"nodeType":"YulFunctionCall","src":"2512:524:39"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"2504:4:39"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2453:15:39"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"2470:10:39"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2450:2:39"},"nodeType":"YulFunctionCall","src":"2450:31:39"},"nodeType":"YulIf","src":"2447:607:39"},{"body":{"nodeType":"YulBlock","src":"3270:284:39","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3384:1:39","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3387:1:39","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3390:14:39"},"nodeType":"YulFunctionCall","src":"3390:16:39"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"3369:14:39"},"nodeType":"YulFunctionCall","src":"3369:38:39"},"nodeType":"YulExpressionStatement","src":"3369:38:39"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3516:1:39","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3519:14:39"},"nodeType":"YulFunctionCall","src":"3519:16:39"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3509:6:39"},"nodeType":"YulFunctionCall","src":"3509:27:39"},"nodeType":"YulExpressionStatement","src":"3509:27:39"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"3240:4:39"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"3246:14:39"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3236:3:39"},"nodeType":"YulFunctionCall","src":"3236:25:39"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"3263:3:39"},"nodeType":"YulFunctionCall","src":"3263:5:39"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3233:2:39"},"nodeType":"YulFunctionCall","src":"3233:36:39"},"nodeType":"YulIf","src":"3230:324:39"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1554:14:39"},"nodeType":"YulFunctionCall","src":"1554:16:39"},"nodeType":"YulIf","src":"1551:2017:39"}]},"evmVersion":"london","externalReferences":[{"declaration":4865,"isOffset":false,"isSlot":false,"src":"1884:13:39","valueSize":1},{"declaration":5123,"isOffset":false,"isSlot":false,"src":"2336:11:39","valueSize":1},{"declaration":5123,"isOffset":false,"isSlot":false,"src":"2642:11:39","valueSize":1},{"declaration":5120,"isOffset":false,"isSlot":false,"src":"3246:14:39","valueSize":1},{"declaration":4883,"isOffset":false,"isSlot":false,"src":"2205:21:39","valueSize":1},{"declaration":5126,"isOffset":false,"isSlot":false,"src":"2932:26:39","valueSize":1},{"declaration":4868,"isOffset":false,"isSlot":false,"src":"1920:7:39","valueSize":1},{"declaration":4868,"isOffset":false,"isSlot":false,"src":"2229:7:39","valueSize":1}],"id":6051,"nodeType":"InlineAssembly","src":"1415:2163:39"}]},"documentation":{"id":6048,"nodeType":"StructuredDocumentation","src":"1107:235:39","text":" @dev Internal view function to revert and pass along the revert reason if\n      data was returned by the last call and that the size of that data\n      does not exceed the currently allocated memory size."},"id":6053,"implemented":true,"kind":"function","modifiers":[],"name":"_revertWithReasonIfOneIsReturned","nameLocation":"1356:32:39","nodeType":"FunctionDefinition","parameters":{"id":6049,"nodeType":"ParameterList","parameters":[],"src":"1388:2:39"},"returnParameters":{"id":6050,"nodeType":"ParameterList","parameters":[],"src":"1405:0:39"},"scope":6071,"src":"1347:2237:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6069,"nodeType":"Block","src":"4003:705:39","statements":[{"assignments":[6062],"declarations":[{"constant":false,"id":6062,"mutability":"mutable","name":"result","nameLocation":"4096:6:39","nodeType":"VariableDeclaration","scope":6069,"src":"4089:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6061,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4089:6:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":6063,"nodeType":"VariableDeclarationStatement","src":"4089:13:39"},{"AST":{"nodeType":"YulBlock","src":"4200:385:39","statements":[{"body":{"nodeType":"YulBlock","src":"4323:252:39","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4435:1:39","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4438:1:39","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"4441:7:39"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"4420:14:39"},"nodeType":"YulFunctionCall","src":"4420:29:39"},"nodeType":"YulExpressionStatement","src":"4420:29:39"},{"nodeType":"YulAssignment","src":"4543:18:39","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4559:1:39","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4553:5:39"},"nodeType":"YulFunctionCall","src":"4553:8:39"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"4543:6:39"}]}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4296:14:39"},"nodeType":"YulFunctionCall","src":"4296:16:39"},{"name":"OneWord","nodeType":"YulIdentifier","src":"4314:7:39"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4293:2:39"},"nodeType":"YulFunctionCall","src":"4293:29:39"},"nodeType":"YulIf","src":"4290:285:39"}]},"evmVersion":"london","externalReferences":[{"declaration":4868,"isOffset":false,"isSlot":false,"src":"4314:7:39","valueSize":1},{"declaration":4868,"isOffset":false,"isSlot":false,"src":"4441:7:39","valueSize":1},{"declaration":6062,"isOffset":false,"isSlot":false,"src":"4543:6:39","valueSize":1}],"id":6064,"nodeType":"InlineAssembly","src":"4191:394:39"},{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6065,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6062,"src":"4683:6:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6066,"name":"expected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"4693:8:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4683:18:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6060,"id":6068,"nodeType":"Return","src":"4676:25:39"}]},"documentation":{"id":6054,"nodeType":"StructuredDocumentation","src":"3590:334:39","text":" @dev Internal pure function to determine if the first word of returndata\n      matches an expected magic value.\n @param expected The expected magic value.\n @return A boolean indicating whether the expected value matches the one\n         located in the first word of returndata."},"id":6070,"implemented":true,"kind":"function","modifiers":[],"name":"_doesNotMatchMagic","nameLocation":"3938:18:39","nodeType":"FunctionDefinition","parameters":{"id":6057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6056,"mutability":"mutable","name":"expected","nameLocation":"3964:8:39","nodeType":"VariableDeclaration","scope":6070,"src":"3957:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6055,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3957:6:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3956:17:39"},"returnParameters":{"id":6060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6070,"src":"3997:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6058,"name":"bool","nodeType":"ElementaryTypeName","src":"3997:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3996:6:39"},"scope":6071,"src":"3929:779:39","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6072,"src":"246:4464:39","usedErrors":[]}],"src":"32:4679:39"},"id":39},"contracts/lib/OrderFulfiller.sol":{"ast":{"absolutePath":"contracts/lib/OrderFulfiller.sol","exportedSymbols":{"AccumulatorArmed":[5193],"AccumulatorDisarmed":[5190],"Accumulator_array_length_ptr":[5205],"Accumulator_array_offset":[5211],"Accumulator_array_offset_ptr":[5202],"Accumulator_conduitKey_ptr":[5196],"Accumulator_itemSizeOffsetDifference":[5208],"Accumulator_selector_ptr":[5199],"AdditionalRecipients_size":[4910],"AdvancedOrder_numerator_offset":[4862],"AlmostOneWord":[4865],"BadContractSignature_error_length":[5276],"BadContractSignature_error_signature":[5273],"BadSignatureV_error_length":[5255],"BadSignatureV_error_offset":[5252],"BadSignatureV_error_signature":[5249],"BasicOrder_additionalRecipients_data_cdPtr":[5001],"BasicOrder_additionalRecipients_head_cdPtr":[4992],"BasicOrder_additionalRecipients_head_ptr":[5061],"BasicOrder_additionalRecipients_length_cdPtr":[4998],"BasicOrder_basicOrderType_cdPtr":[4977],"BasicOrder_basicOrderType_range":[5007],"BasicOrder_common_params_size":[4901],"BasicOrder_considerationAmount_cdPtr":[4962],"BasicOrder_considerationHashesArray_ptr":[4904],"BasicOrder_considerationItem_endAmount_ptr":[5025],"BasicOrder_considerationItem_identifier_ptr":[5019],"BasicOrder_considerationItem_itemType_ptr":[5013],"BasicOrder_considerationItem_startAmount_ptr":[5022],"BasicOrder_considerationItem_token_ptr":[5016],"BasicOrder_considerationItem_typeHash_ptr":[5010],"BasicOrder_considerationToken_cdPtr":[4959],"BasicOrder_endAmount_cdPtr":[4898],"BasicOrder_fulfillerConduit_cdPtr":[4986],"BasicOrder_offerAmount_cdPtr":[4974],"BasicOrder_offerItem_endAmount_ptr":[5037],"BasicOrder_offerItem_itemType_ptr":[5031],"BasicOrder_offerItem_token_ptr":[5034],"BasicOrder_offerItem_typeHash_ptr":[5028],"BasicOrder_offerToken_cdPtr":[4971],"BasicOrder_offererConduit_cdPtr":[4983],"BasicOrder_offerer_cdPtr":[4965],"BasicOrder_order_considerationHashes_ptr":[5049],"BasicOrder_order_counter_ptr":[5058],"BasicOrder_order_offerHashes_ptr":[5046],"BasicOrder_order_offerer_ptr":[5043],"BasicOrder_order_orderType_ptr":[5052],"BasicOrder_order_startTime_ptr":[5055],"BasicOrder_order_typeHash_ptr":[5040],"BasicOrder_parameters_cdPtr":[4956],"BasicOrder_parameters_ptr":[5004],"BasicOrder_signature_cdPtr":[4995],"BasicOrder_signature_ptr":[5064],"BasicOrder_startTime_cdPtr":[4980],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[4989],"BasicOrder_zone_cdPtr":[4968],"Common_amount_offset":[4793],"Common_identifier_offset":[4790],"Common_token_offset":[4787],"ConduitInterface":[4006],"Conduit_execute_ConduitTransfer_length":[5160],"Conduit_execute_ConduitTransfer_length_ptr":[5166],"Conduit_execute_ConduitTransfer_offset_ptr":[5163],"Conduit_execute_ConduitTransfer_ptr":[5157],"Conduit_execute_signature":[5148],"Conduit_execute_transferAmount_ptr":[5184],"Conduit_execute_transferFrom_ptr":[5175],"Conduit_execute_transferIdentifier_ptr":[5181],"Conduit_execute_transferItemType_ptr":[5169],"Conduit_execute_transferTo_ptr":[5178],"Conduit_execute_transferToken_ptr":[5172],"Conduit_transferItem_amount_ptr":[5229],"Conduit_transferItem_from_ptr":[5220],"Conduit_transferItem_identifier_ptr":[5226],"Conduit_transferItem_size":[5214],"Conduit_transferItem_to_ptr":[5223],"Conduit_transferItem_token_ptr":[5217],"ConsiderItem_recipient_offset":[4811],"ConsiderationItem_recipient_offset":[4808],"CostPerWord":[5123],"Create2AddressDerivation_length":[5132],"Create2AddressDerivation_ptr":[5129],"DefaultFreeMemoryPointer":[4889],"ECDSA_MaxLength":[5075],"ECDSA_signature_s_offset":[5078],"ECDSA_signature_v_offset":[5081],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[5072],"EIP1271_isValidSignature_calldata_baseLength":[5097],"EIP1271_isValidSignature_digest_negativeOffset":[5091],"EIP1271_isValidSignature_selector":[5085],"EIP1271_isValidSignature_selector_negativeOffset":[5094],"EIP1271_isValidSignature_signatureHead_negativeOffset":[5088],"EIP1271_isValidSignature_signature_head_offset":[5100],"EIP2098_allButHighestBitMask":[5068],"EIP712_DigestPayload_size":[4919],"EIP712_DomainSeparator_offset":[4913],"EIP712_OrderHash_offset":[4916],"EIP712_Order_size":[4907],"EIP_712_PREFIX":[5117],"Ecrecover_args_size":[5242],"Ecrecover_precompile":[5239],"Execution_conduit_offset":[4817],"Execution_offerer_offset":[4814],"ExtraGasBuffer":[5120],"FiveWords":[4880],"FourWords":[4877],"FreeMemoryPointerSlot":[4883],"Fulfillment_itemIndex_offset":[4859],"InexactFraction_error_len":[5236],"InexactFraction_error_signature":[5233],"InvalidFulfillmentComponentData_error_len":[4824],"InvalidFulfillmentComponentData_error_signature":[4821],"InvalidSignature_error_length":[5269],"InvalidSignature_error_signature":[5266],"InvalidSigner_error_length":[5262],"InvalidSigner_error_signature":[5259],"ItemType":[5292],"MaskOverByteTwelve":[5136],"MaskOverFirstFourBytes":[5144],"MaskOverLastTwentyBytes":[5140],"MaxUint120":[5154],"MaxUint8":[5151],"MemoryExpansionCoefficient":[5126],"MissingItemAmount_error_len":[4844],"MissingItemAmount_error_signature":[4841],"NameLengthPtr":[4766],"NameWithLength":[4769],"NoContract_error_length":[5113],"NoContract_error_sig_ptr":[5107],"NoContract_error_signature":[5104],"NoContract_error_token_ptr":[5110],"NonMatchSelector_MagicModulus":[5282],"NonMatchSelector_MagicRemainder":[5285],"NumBitsAfterSelector":[5279],"OneConduitExecute_size":[5187],"OneWord":[4868],"Order":[5372],"OrderFulfilled_baseOffset":[4932],"OrderFulfilled_baseSize":[4925],"OrderFulfilled_consideration_body_offset":[4953],"OrderFulfilled_consideration_head_offset":[4950],"OrderFulfilled_consideration_length_baseOffset":[4935],"OrderFulfilled_fulfiller_offset":[4941],"OrderFulfilled_offer_body_offset":[4947],"OrderFulfilled_offer_head_offset":[4944],"OrderFulfilled_offer_length_baseOffset":[4938],"OrderFulfilled_selector":[4929],"OrderFulfiller":[6886],"OrderParameters":[5366],"OrderParameters_conduit_offset":[4853],"OrderParameters_consideration_head_offset":[4850],"OrderParameters_counter_offset":[4856],"OrderParameters_offer_head_offset":[4847],"OrderValidator":[7713],"Panic_arithmetic":[4837],"Panic_error_length":[4834],"Panic_error_offset":[4831],"Panic_error_signature":[4828],"ReceivedItem_CommonParams_size":[4805],"ReceivedItem_amount_offset":[4799],"ReceivedItem_recipient_offset":[4802],"ReceivedItem_size":[4796],"Signature_lower_v":[5245],"Slot0x80":[4892],"Slot0xA0":[4895],"ThreeWords":[4874],"TwoWords":[4871],"Version":[4772],"Version_length":[4775],"Version_shift":[4778],"ZeroSlot":[4886],"_ENTERED":[4784],"_NOT_ENTERED":[4781],"receivedItemsHash_ptr":[4922]},"id":6887,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6073,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:40"},{"absolutePath":"contracts/interfaces/ConduitInterface.sol","file":"../interfaces/ConduitInterface.sol","id":6075,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6887,"sourceUnit":4007,"src":"58:70:40","symbolAliases":[{"foreign":{"id":6074,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"67:16:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationEnums.sol","file":"./ConsiderationEnums.sol","id":6077,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6887,"sourceUnit":5293,"src":"130:56:40","symbolAliases":[{"foreign":{"id":6076,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"143:8:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":6080,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6887,"sourceUnit":5390,"src":"188:76:40","symbolAliases":[{"foreign":{"id":6078,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5372,"src":"201:5:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":6079,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"212:15:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/OrderValidator.sol","file":"./OrderValidator.sol","id":6082,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6887,"sourceUnit":7714,"src":"266:54:40","symbolAliases":[{"foreign":{"id":6081,"name":"OrderValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"275:14:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":6083,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6887,"sourceUnit":5286,"src":"322:38:40","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6084,"name":"OrderValidator","nodeType":"IdentifierPath","referencedDeclaration":7713,"src":"389:14:40"},"id":6085,"nodeType":"InheritanceSpecifier","src":"389:14:40"}],"canonicalName":"OrderFulfiller","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":6886,"linearizedBaseContracts":[6886,7713,7881,5917,7995,8438,7919,6071,4265,4363,4325,5442,7767,4247,4158,6031,4761],"name":"OrderFulfiller","nameLocation":"371:14:40","nodeType":"ContractDefinition","nodes":[{"canonicalName":"OrderFulfiller.Dispatch","id":6094,"members":[{"constant":false,"id":6087,"mutability":"mutable","name":"payment","nameLocation":"445:7:40","nodeType":"VariableDeclaration","scope":6094,"src":"437:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6086,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6089,"mutability":"mutable","name":"toOfferer","nameLocation":"470:9:40","nodeType":"VariableDeclaration","scope":6094,"src":"462:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6088,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6091,"mutability":"mutable","name":"toPlatform","nameLocation":"497:10:40","nodeType":"VariableDeclaration","scope":6094,"src":"489:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6090,"name":"uint256","nodeType":"ElementaryTypeName","src":"489:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6093,"mutability":"mutable","name":"toArtist","nameLocation":"525:8:40","nodeType":"VariableDeclaration","scope":6094,"src":"517:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6092,"name":"uint256","nodeType":"ElementaryTypeName","src":"517:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Dispatch","nameLocation":"418:8:40","nodeType":"StructDefinition","scope":6886,"src":"411:129:40","visibility":"public"},{"body":{"id":6105,"nodeType":"Block","src":"653:2:40","statements":[]},"id":6106,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6101,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"621:17:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6102,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6098,"src":"640:11:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":6103,"kind":"baseConstructorSpecifier","modifierName":{"id":6100,"name":"OrderValidator","nodeType":"IdentifierPath","referencedDeclaration":7713,"src":"606:14:40"},"nodeType":"ModifierInvocation","src":"606:46:40"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6096,"mutability":"mutable","name":"conduitController","nameLocation":"566:17:40","nodeType":"VariableDeclaration","scope":6106,"src":"558:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6095,"name":"address","nodeType":"ElementaryTypeName","src":"558:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6098,"mutability":"mutable","name":"shadowToken","nameLocation":"593:11:40","nodeType":"VariableDeclaration","scope":6106,"src":"585:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6097,"name":"address","nodeType":"ElementaryTypeName","src":"585:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"557:48:40"},"returnParameters":{"id":6104,"nodeType":"ParameterList","parameters":[],"src":"653:0:40"},"scope":6886,"src":"546:109:40","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6263,"nodeType":"Block","src":"881:914:40","statements":[{"assignments":[6122],"declarations":[{"constant":false,"id":6122,"mutability":"mutable","name":"royalty","nameLocation":"899:7:40","nodeType":"VariableDeclaration","scope":6263,"src":"891:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6121,"name":"uint256","nodeType":"ElementaryTypeName","src":"891:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6123,"nodeType":"VariableDeclarationStatement","src":"891:15:40"},{"assignments":[6125],"declarations":[{"constant":false,"id":6125,"mutability":"mutable","name":"paidTimes","nameLocation":"924:9:40","nodeType":"VariableDeclaration","scope":6263,"src":"916:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6124,"name":"uint256","nodeType":"ElementaryTypeName","src":"916:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6130,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6126,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"936:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"936:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6128,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"953:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"936:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"916:45:40"},{"expression":{"id":6136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6131,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"972:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":6091,"src":"972:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6134,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"989:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawFee","nodeType":"MemberAccess","referencedDeclaration":5361,"src":"989:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"972:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6137,"nodeType":"ExpressionStatement","src":"972:35:40"},{"condition":{"id":6138,"name":"isFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"1021:10:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6261,"nodeType":"Block","src":"1406:383:40","statements":[{"expression":{"id":6212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6203,"name":"royalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6122,"src":"1420:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6204,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"1430:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6205,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1442:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":5357,"src":"1442:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6207,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1459:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"1459:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1442:31:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6210,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1441:33:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1430:44:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1420:54:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6213,"nodeType":"ExpressionStatement","src":"1420:54:40"},{"expression":{"id":6225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6214,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1488:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":6087,"src":"1488:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6217,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"1502:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6218,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1514:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"1514:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6220,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1530:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"1530:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1514:30:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6223,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1513:32:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1502:43:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1488:57:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6226,"nodeType":"ExpressionStatement","src":"1488:57:40"},{"expression":{"id":6242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6227,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1571:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":6089,"src":"1571:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6230,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1587:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":6087,"src":"1587:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":6232,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1601:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":5355,"src":"1601:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":6235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1616:5:40","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"1587:34:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6237,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1624:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6238,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":6091,"src":"1624:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:51:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6240,"name":"royalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6122,"src":"1641:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:61:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1571:77:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6243,"nodeType":"ExpressionStatement","src":"1571:77:40"},{"condition":{"id":6244,"name":"isFirst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"1666:7:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6260,"nodeType":"IfStatement","src":"1662:117:40","trueBody":{"id":6259,"nodeType":"Block","src":"1675:104:40","statements":[{"expression":{"id":6250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6245,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1693:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":6087,"src":"1693:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":6248,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1708:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":5359,"src":"1708:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1693:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6251,"nodeType":"ExpressionStatement","src":"1693:25:40"},{"expression":{"id":6257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6252,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1736:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":6091,"src":"1736:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":6255,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1754:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":5359,"src":"1754:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1736:28:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6258,"nodeType":"ExpressionStatement","src":"1736:28:40"}]}}]},"id":6262,"nodeType":"IfStatement","src":"1017:772:40","trueBody":{"id":6202,"nodeType":"Block","src":"1033:367:40","statements":[{"expression":{"id":6151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6139,"name":"royalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6122,"src":"1047:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6140,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1057:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":5357,"src":"1057:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6142,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"1074:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6143,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1087:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":5357,"src":"1087:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6145,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1104:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"1104:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1087:31:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6148,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1086:33:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:45:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1057:62:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1047:72:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6152,"nodeType":"ExpressionStatement","src":"1047:72:40"},{"expression":{"id":6167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6153,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1133:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":6087,"src":"1133:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6156,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1147:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"1147:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6158,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"1163:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6159,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1175:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"1175:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6161,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1191:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"1191:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1175:30:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6164,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1174:32:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1163:43:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1147:59:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1133:73:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6168,"nodeType":"ExpressionStatement","src":"1133:73:40"},{"expression":{"id":6193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6169,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1220:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6171,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":6089,"src":"1220:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6172,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1236:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"1236:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6174,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1253:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"1253:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6176,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1269:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"1269:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1253:30:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1252:32:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":6180,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1287:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":5355,"src":"1287:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1252:47:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":6183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1302:5:40","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"1252:55:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6185,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"1310:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1252:67:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1236:83:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6188,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1322:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":6091,"src":"1322:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1236:100:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6191,"name":"royalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6122,"src":"1339:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1236:110:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1220:126:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6194,"nodeType":"ExpressionStatement","src":"1220:126:40"},{"expression":{"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6195,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"1360:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"1360:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6198,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"1375:6:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":5357,"src":"1375:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1360:29:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6201,"nodeType":"ExpressionStatement","src":"1360:29:40"}]}}]},"id":6264,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateDispatch","nameLocation":"670:18:40","nodeType":"FunctionDefinition","parameters":{"id":6116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6109,"mutability":"mutable","name":"params","nameLocation":"723:6:40","nodeType":"VariableDeclaration","scope":6264,"src":"698:31:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":6108,"nodeType":"UserDefinedTypeName","pathNode":{"id":6107,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"698:15:40"},"referencedDeclaration":5366,"src":"698:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":6111,"mutability":"mutable","name":"payTimes","nameLocation":"747:8:40","nodeType":"VariableDeclaration","scope":6264,"src":"739:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6110,"name":"uint256","nodeType":"ElementaryTypeName","src":"739:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6113,"mutability":"mutable","name":"isFirst","nameLocation":"770:7:40","nodeType":"VariableDeclaration","scope":6264,"src":"765:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6112,"name":"bool","nodeType":"ElementaryTypeName","src":"765:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6115,"mutability":"mutable","name":"isFinalize","nameLocation":"792:10:40","nodeType":"VariableDeclaration","scope":6264,"src":"787:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6114,"name":"bool","nodeType":"ElementaryTypeName","src":"787:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"688:120:40"},"returnParameters":{"id":6120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6119,"mutability":"mutable","name":"ret","nameLocation":"872:3:40","nodeType":"VariableDeclaration","scope":6264,"src":"856:19:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":6118,"nodeType":"UserDefinedTypeName","pathNode":{"id":6117,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":6094,"src":"856:8:40"},"referencedDeclaration":6094,"src":"856:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"}],"src":"855:21:40"},"scope":6886,"src":"661:1134:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6380,"nodeType":"Block","src":"1930:1550:40","statements":[{"assignments":[6275,6277,6279],"declarations":[{"constant":false,"id":6275,"mutability":"mutable","name":"orderHash","nameLocation":"1962:9:40","nodeType":"VariableDeclaration","scope":6380,"src":"1954:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6274,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1954:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6277,"mutability":"mutable","name":"valid","nameLocation":"1990:5:40","nodeType":"VariableDeclaration","scope":6380,"src":"1985:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6276,"name":"bool","nodeType":"ElementaryTypeName","src":"1985:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6279,"mutability":"mutable","name":"shadowId","nameLocation":"2017:8:40","nodeType":"VariableDeclaration","scope":6380,"src":"2009:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6278,"name":"uint256","nodeType":"ElementaryTypeName","src":"2009:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6284,"initialValue":{"arguments":[{"id":6281,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"2081:5:40","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"}},{"hexValue":"74727565","id":6282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2100:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6280,"name":"_validateOrderAndUpdateStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"2038:29:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Order_$5372_calldata_ptr_$_t_bool_$returns$_t_bytes32_$_t_bool_$_t_uint256_$","typeString":"function (struct Order calldata,bool) returns (bytes32,bool,uint256)"}},"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2038:76:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bool_$_t_uint256_$","typeString":"tuple(bytes32,bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1940:174:40"},{"condition":{"id":6286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2129:6:40","subExpression":{"id":6285,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6277,"src":"2130:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6290,"nodeType":"IfStatement","src":"2125:49:40","trueBody":{"id":6289,"nodeType":"Block","src":"2137:37:40","statements":[{"expression":{"hexValue":"66616c7365","id":6287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2158:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6273,"id":6288,"nodeType":"Return","src":"2151:12:40"}]}},{"assignments":[6293],"declarations":[{"constant":false,"id":6293,"mutability":"mutable","name":"orderParameters","nameLocation":"2209:15:40","nodeType":"VariableDeclaration","scope":6380,"src":"2184:40:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":6292,"nodeType":"UserDefinedTypeName","pathNode":{"id":6291,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"2184:15:40"},"referencedDeclaration":5366,"src":"2184:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"id":6296,"initialValue":{"expression":{"id":6294,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"2227:5:40","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"}},"id":6295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":5369,"src":"2227:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"nodeType":"VariableDeclarationStatement","src":"2184:59:40"},{"assignments":[6299],"declarations":[{"constant":false,"id":6299,"mutability":"mutable","name":"dispatch","nameLocation":"2269:8:40","nodeType":"VariableDeclaration","scope":6380,"src":"2253:24:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":6298,"nodeType":"UserDefinedTypeName","pathNode":{"id":6297,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":6094,"src":"2253:8:40"},"referencedDeclaration":6094,"src":"2253:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"}],"id":6306,"initialValue":{"arguments":[{"id":6301,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"2299:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"hexValue":"31","id":6302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2316:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"74727565","id":6303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2319:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"66616c7365","id":6304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2325:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6300,"name":"_calculateDispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"2280:18:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_uint256_$_t_bool_$_t_bool_$returns$_t_struct$_Dispatch_$6094_memory_ptr_$","typeString":"function (struct OrderParameters calldata,uint256,bool,bool) pure returns (struct OrderFulfiller.Dispatch memory)"}},"id":6305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2280:51:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"nodeType":"VariableDeclarationStatement","src":"2253:78:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6307,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"2346:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":5339,"src":"2346:24:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2382:1:40","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":6310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2374:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6309,"name":"address","nodeType":"ElementaryTypeName","src":"2374:7:40","typeDescriptions":{}}},"id":6312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2374:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2346:38:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6369,"nodeType":"Block","src":"2779:551:40","statements":[{"assignments":[6339],"declarations":[{"constant":false,"id":6339,"mutability":"mutable","name":"accumulator","nameLocation":"2806:11:40","nodeType":"VariableDeclaration","scope":6369,"src":"2793:24:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6338,"name":"bytes","nodeType":"ElementaryTypeName","src":"2793:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6344,"initialValue":{"arguments":[{"id":6342,"name":"AccumulatorDisarmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5190,"src":"2830:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2820:9:40","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":6340,"name":"bytes","nodeType":"ElementaryTypeName","src":"2824:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":6343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2820:30:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2793:57:40"},{"expression":{"arguments":[{"expression":{"id":6346,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"2897:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":5335,"src":"2897:21:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6348,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"2936:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"2936:23:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6352,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2985:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}],"id":6351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2977:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6350,"name":"address","nodeType":"ElementaryTypeName","src":"2977:7:40","typeDescriptions":{}}},"id":6353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2977:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6354,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"3008:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":5337,"src":"3008:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":6356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3052:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"id":6357,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"3071:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":5365,"src":"3071:26:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6359,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"3115:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6345,"name":"_transferERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5685,"src":"2864:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint256,bytes32,bytes memory)"}},"id":6360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2864:276:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6361,"nodeType":"ExpressionStatement","src":"2864:276:40"},{"expression":{"arguments":[{"id":6363,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"3198:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":6364,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"3231:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},{"id":6365,"name":"fulfillerConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6269,"src":"3257:19:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6366,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"3294:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6362,"name":"_transferERC20AndFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6885,"src":"3155:25:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_struct$_Dispatch_$6094_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory,bytes32,bytes memory)"}},"id":6367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3155:164:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6368,"nodeType":"ExpressionStatement","src":"3155:164:40"}]},"id":6370,"nodeType":"IfStatement","src":"2342:988:40","trueBody":{"id":6337,"nodeType":"Block","src":"2386:387:40","statements":[{"expression":{"arguments":[{"expression":{"id":6315,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"2450:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ItemType_$5292_$","typeString":"type(enum ItemType)"}},"id":6316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":5290,"src":"2450:15:40","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"}},{"expression":{"id":6317,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"2483:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":5335,"src":"2483:21:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6319,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"2522:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"2522:23:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6323,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2571:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}],"id":6322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2563:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6321,"name":"address","nodeType":"ElementaryTypeName","src":"2563:7:40","typeDescriptions":{}}},"id":6324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2563:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6325,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"2594:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":5337,"src":"2594:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":6327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2638:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"id":6328,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"2657:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":5365,"src":"2657:26:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6314,"name":"_transferIndividual721Or1155Item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5539,"src":"2400:32:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_ItemType_$5292_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (enum ItemType,address,address,address,uint256,uint256,bytes32)"}},"id":6330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2400:297:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6331,"nodeType":"ExpressionStatement","src":"2400:297:40"},{"expression":{"arguments":[{"id":6333,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"2736:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":6334,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"2753:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}],"id":6332,"name":"_transferEthAndFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6754,"src":"2712:23:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_struct$_Dispatch_$6094_memory_ptr_$returns$__$","typeString":"function (struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory)"}},"id":6335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2712:50:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6336,"nodeType":"ExpressionStatement","src":"2712:50:40"}]}},{"eventCall":{"arguments":[{"id":6372,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6275,"src":"3373:9:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":6373,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"3396:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"3396:23:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6375,"name":"shadowId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6279,"src":"3433:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6371,"name":"OrderFulfilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4017,"src":"3345:14:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,uint256)"}},"id":6376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3345:106:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6377,"nodeType":"EmitStatement","src":"3340:111:40"},{"expression":{"hexValue":"74727565","id":6378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3469:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6273,"id":6379,"nodeType":"Return","src":"3462:11:40"}]},"id":6381,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAndFulfillOrder","nameLocation":"1810:24:40","nodeType":"FunctionDefinition","parameters":{"id":6270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6267,"mutability":"mutable","name":"order","nameLocation":"1850:5:40","nodeType":"VariableDeclaration","scope":6381,"src":"1835:20:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order"},"typeName":{"id":6266,"nodeType":"UserDefinedTypeName","pathNode":{"id":6265,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":5372,"src":"1835:5:40"},"referencedDeclaration":5372,"src":"1835:5:40","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_storage_ptr","typeString":"struct Order"}},"visibility":"internal"},{"constant":false,"id":6269,"mutability":"mutable","name":"fulfillerConduitKey","nameLocation":"1865:19:40","nodeType":"VariableDeclaration","scope":6381,"src":"1857:27:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6268,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1857:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1834:51:40"},"returnParameters":{"id":6273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6381,"src":"1920:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6271,"name":"bool","nodeType":"ElementaryTypeName","src":"1920:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1919:6:40"},"scope":6886,"src":"1801:1679:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6493,"nodeType":"Block","src":"3646:1379:40","statements":[{"assignments":[6394],"declarations":[{"constant":false,"id":6394,"mutability":"mutable","name":"orderHash","nameLocation":"3664:9:40","nodeType":"VariableDeclaration","scope":6493,"src":"3656:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3656:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6395,"nodeType":"VariableDeclarationStatement","src":"3656:17:40"},{"assignments":[6397],"declarations":[{"constant":false,"id":6397,"mutability":"mutable","name":"fulfiller","nameLocation":"3691:9:40","nodeType":"VariableDeclaration","scope":6493,"src":"3683:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6396,"name":"address","nodeType":"ElementaryTypeName","src":"3683:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6398,"nodeType":"VariableDeclarationStatement","src":"3683:17:40"},{"assignments":[6400],"declarations":[{"constant":false,"id":6400,"mutability":"mutable","name":"isFinalized","nameLocation":"3715:11:40","nodeType":"VariableDeclaration","scope":6493,"src":"3710:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6399,"name":"bool","nodeType":"ElementaryTypeName","src":"3710:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":6401,"nodeType":"VariableDeclarationStatement","src":"3710:16:40"},{"id":6423,"nodeType":"Block","src":"3736:367:40","statements":[{"assignments":[6403],"declarations":[{"constant":false,"id":6403,"mutability":"mutable","name":"valid","nameLocation":"3755:5:40","nodeType":"VariableDeclaration","scope":6423,"src":"3750:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6402,"name":"bool","nodeType":"ElementaryTypeName","src":"3750:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":6404,"nodeType":"VariableDeclarationStatement","src":"3750:10:40"},{"expression":{"id":6415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":6405,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"3792:9:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6406,"name":"fulfiller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"3819:9:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6407,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6403,"src":"3846:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6408,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6400,"src":"3869:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6409,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3774:120:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6411,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"3949:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":6412,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"3977:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":6413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4003:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6410,"name":"_validateOrderAndUpdateRepayStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7271,"src":"3897:34:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_uint256_$_t_bool_$returns$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"function (struct OrderParameters calldata,uint256,bool) returns (bytes32,address,bool,bool)"}},"id":6414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3897:124:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"src":"3774:247:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6416,"nodeType":"ExpressionStatement","src":"3774:247:40"},{"condition":{"id":6418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4040:6:40","subExpression":{"id":6417,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6403,"src":"4041:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6422,"nodeType":"IfStatement","src":"4036:57:40","trueBody":{"id":6421,"nodeType":"Block","src":"4048:45:40","statements":[{"expression":{"hexValue":"66616c7365","id":6419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4073:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6392,"id":6420,"nodeType":"Return","src":"4066:12:40"}]}}]},{"assignments":[6426],"declarations":[{"constant":false,"id":6426,"mutability":"mutable","name":"dispatch","nameLocation":"4129:8:40","nodeType":"VariableDeclaration","scope":6493,"src":"4113:24:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":6425,"nodeType":"UserDefinedTypeName","pathNode":{"id":6424,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":6094,"src":"4113:8:40"},"referencedDeclaration":6094,"src":"4113:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"}],"id":6433,"initialValue":{"arguments":[{"id":6428,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"4159:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":6429,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"4171:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":6430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4181:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":6431,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6400,"src":"4188:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6427,"name":"_calculateDispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"4140:18:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_uint256_$_t_bool_$_t_bool_$returns$_t_struct$_Dispatch_$6094_memory_ptr_$","typeString":"function (struct OrderParameters calldata,uint256,bool,bool) pure returns (struct OrderFulfiller.Dispatch memory)"}},"id":6432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4140:60:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"nodeType":"VariableDeclarationStatement","src":"4113:87:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6434,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"4215:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":5339,"src":"4215:19:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4246:1:40","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":6437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4238:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6436,"name":"address","nodeType":"ElementaryTypeName","src":"4238:7:40","typeDescriptions":{}}},"id":6439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4238:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4215:33:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6461,"nodeType":"Block","src":"4326:255:40","statements":[{"assignments":[6448],"declarations":[{"constant":false,"id":6448,"mutability":"mutable","name":"accumulator","nameLocation":"4353:11:40","nodeType":"VariableDeclaration","scope":6461,"src":"4340:24:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6447,"name":"bytes","nodeType":"ElementaryTypeName","src":"4340:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6453,"initialValue":{"arguments":[{"id":6451,"name":"AccumulatorDisarmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5190,"src":"4377:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4367:9:40","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":6449,"name":"bytes","nodeType":"ElementaryTypeName","src":"4371:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":6452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4367:30:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4340:57:40"},{"expression":{"arguments":[{"id":6455,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"4454:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":6456,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6426,"src":"4482:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},{"id":6457,"name":"fulfillerConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6386,"src":"4508:19:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6458,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6448,"src":"4545:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6454,"name":"_transferERC20AndFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6885,"src":"4411:25:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_struct$_Dispatch_$6094_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory,bytes32,bytes memory)"}},"id":6459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4411:159:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6460,"nodeType":"ExpressionStatement","src":"4411:159:40"}]},"id":6462,"nodeType":"IfStatement","src":"4211:370:40","trueBody":{"id":6446,"nodeType":"Block","src":"4250:70:40","statements":[{"expression":{"arguments":[{"id":6442,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"4288:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":6443,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6426,"src":"4300:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}],"id":6441,"name":"_transferEthAndFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6754,"src":"4264:23:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_struct$_Dispatch_$6094_memory_ptr_$returns$__$","typeString":"function (struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory)"}},"id":6444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4264:45:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6445,"nodeType":"ExpressionStatement","src":"4264:45:40"}]}},{"condition":{"id":6463,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6400,"src":"4595:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6484,"nodeType":"IfStatement","src":"4591:299:40","trueBody":{"id":6483,"nodeType":"Block","src":"4608:282:40","statements":[{"expression":{"arguments":[{"expression":{"id":6465,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"4672:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ItemType_$5292_$","typeString":"type(enum ItemType)"}},"id":6466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":5290,"src":"4672:15:40","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"}},{"expression":{"id":6467,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"4705:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":5335,"src":"4705:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6471,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4747:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}],"id":6470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4739:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6469,"name":"address","nodeType":"ElementaryTypeName","src":"4739:7:40","typeDescriptions":{}}},"id":6472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4739:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6473,"name":"fulfiller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"4770:9:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6474,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"4797:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":5337,"src":"4797:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":6476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4836:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"arguments":[{"hexValue":"30","id":6479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4863:1:40","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":6478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4855:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6477,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4855:7:40","typeDescriptions":{}}},"id":6480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4855:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6464,"name":"_transferIndividual721Or1155Item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5539,"src":"4622:32:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_ItemType_$5292_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (enum ItemType,address,address,address,uint256,uint256,bytes32)"}},"id":6481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4622:257:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6482,"nodeType":"ExpressionStatement","src":"4622:257:40"}]}},{"eventCall":{"arguments":[{"id":6486,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"4930:9:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6487,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"4953:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6488,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6400,"src":"4975:11:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6485,"name":"OrderRepaid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4025,"src":"4905:11:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (bytes32,uint256,bool)"}},"id":6489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4905:91:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6490,"nodeType":"EmitStatement","src":"4900:96:40"},{"expression":{"hexValue":"74727565","id":6491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5014:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6392,"id":6492,"nodeType":"Return","src":"5007:11:40"}]},"id":6494,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAndRepayOrder","nameLocation":"3495:22:40","nodeType":"FunctionDefinition","parameters":{"id":6389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6384,"mutability":"mutable","name":"parameters","nameLocation":"3543:10:40","nodeType":"VariableDeclaration","scope":6494,"src":"3518:35:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":6383,"nodeType":"UserDefinedTypeName","pathNode":{"id":6382,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"3518:15:40"},"referencedDeclaration":5366,"src":"3518:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":6386,"mutability":"mutable","name":"fulfillerConduitKey","nameLocation":"3563:19:40","nodeType":"VariableDeclaration","scope":6494,"src":"3555:27:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3555:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6388,"mutability":"mutable","name":"payTimes","nameLocation":"3592:8:40","nodeType":"VariableDeclaration","scope":6494,"src":"3584:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6387,"name":"uint256","nodeType":"ElementaryTypeName","src":"3584:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3517:84:40"},"returnParameters":{"id":6392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6494,"src":"3636:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6390,"name":"bool","nodeType":"ElementaryTypeName","src":"3636:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3635:6:40"},"scope":6886,"src":"3486:1539:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6567,"nodeType":"Block","src":"5144:855:40","statements":[{"assignments":[6503,6505,6507],"declarations":[{"constant":false,"id":6503,"mutability":"mutable","name":"orderHash","nameLocation":"5176:9:40","nodeType":"VariableDeclaration","scope":6567,"src":"5168:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6502,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5168:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6505,"mutability":"mutable","name":"paidTimes","nameLocation":"5207:9:40","nodeType":"VariableDeclaration","scope":6567,"src":"5199:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6504,"name":"uint256","nodeType":"ElementaryTypeName","src":"5199:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6507,"mutability":"mutable","name":"valid","nameLocation":"5235:5:40","nodeType":"VariableDeclaration","scope":6567,"src":"5230:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6506,"name":"bool","nodeType":"ElementaryTypeName","src":"5230:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":6512,"initialValue":{"arguments":[{"id":6509,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5301:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"hexValue":"74727565","id":6510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5325:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6508,"name":"_validateOrderAndUpdateBreakStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7384,"src":"5253:34:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_bool_$returns$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"function (struct OrderParameters calldata,bool) returns (bytes32,uint256,bool)"}},"id":6511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5253:86:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"tuple(bytes32,uint256,bool)"}},"nodeType":"VariableDeclarationStatement","src":"5154:185:40"},{"condition":{"id":6514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5354:6:40","subExpression":{"id":6513,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6507,"src":"5355:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6518,"nodeType":"IfStatement","src":"5350:49:40","trueBody":{"id":6517,"nodeType":"Block","src":"5362:37:40","statements":[{"expression":{"hexValue":"66616c7365","id":6515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5383:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6501,"id":6516,"nodeType":"Return","src":"5376:12:40"}]}},{"expression":{"arguments":[{"expression":{"id":6520,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"5455:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ItemType_$5292_$","typeString":"type(enum ItemType)"}},"id":6521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":5290,"src":"5455:15:40","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"}},{"expression":{"id":6522,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5484:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":5335,"src":"5484:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6526,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5522:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}],"id":6525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5514:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6524,"name":"address","nodeType":"ElementaryTypeName","src":"5514:7:40","typeDescriptions":{}}},"id":6527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5514:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6528,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5541:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"5541:18:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6530,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5573:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":5337,"src":"5573:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":6532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5608:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"arguments":[{"hexValue":"30","id":6535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5631:1:40","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":6534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5623:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5623:7:40","typeDescriptions":{}}},"id":6536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5623:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ItemType_$5292","typeString":"enum ItemType"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6519,"name":"_transferIndividual721Or1155Item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5539,"src":"5409:32:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_ItemType_$5292_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (enum ItemType,address,address,address,uint256,uint256,bytes32)"}},"id":6537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5409:234:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6538,"nodeType":"ExpressionStatement","src":"5409:234:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6539,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5658:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":5339,"src":"5658:19:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5689:1:40","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":6542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5681:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6541,"name":"address","nodeType":"ElementaryTypeName","src":"5681:7:40","typeDescriptions":{}}},"id":6544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5681:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5658:33:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6557,"nodeType":"Block","src":"5765:114:40","statements":[{"expression":{"arguments":[{"id":6553,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5817:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":6554,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6505,"src":"5845:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6552,"name":"_transferERC20Broken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6674,"src":"5779:20:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_uint256_$returns$__$","typeString":"function (struct OrderParameters calldata,uint256)"}},"id":6555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5779:89:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6556,"nodeType":"ExpressionStatement","src":"5779:89:40"}]},"id":6558,"nodeType":"IfStatement","src":"5654:225:40","trueBody":{"id":6551,"nodeType":"Block","src":"5693:66:40","statements":[{"expression":{"arguments":[{"id":6547,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5726:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":6548,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6505,"src":"5738:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6546,"name":"_transferEthBroken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6622,"src":"5707:18:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$5366_calldata_ptr_$_t_uint256_$returns$__$","typeString":"function (struct OrderParameters calldata,uint256)"}},"id":6549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5707:41:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6550,"nodeType":"ExpressionStatement","src":"5707:41:40"}]}},{"eventCall":{"arguments":[{"id":6560,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6503,"src":"5919:9:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":6561,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5942:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"5942:18:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6559,"name":"OrderBroken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4031,"src":"5894:11:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":6563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5894:76:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6564,"nodeType":"EmitStatement","src":"5889:81:40"},{"expression":{"hexValue":"74727565","id":6565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5988:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6501,"id":6566,"nodeType":"Return","src":"5981:11:40"}]},"id":6568,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAndBreakOrder","nameLocation":"5040:22:40","nodeType":"FunctionDefinition","parameters":{"id":6498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6497,"mutability":"mutable","name":"parameters","nameLocation":"5088:10:40","nodeType":"VariableDeclaration","scope":6568,"src":"5063:35:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":6496,"nodeType":"UserDefinedTypeName","pathNode":{"id":6495,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"5063:15:40"},"referencedDeclaration":5366,"src":"5063:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"src":"5062:37:40"},"returnParameters":{"id":6501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6500,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6568,"src":"5134:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6499,"name":"bool","nodeType":"ElementaryTypeName","src":"5134:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5133:6:40"},"scope":6886,"src":"5031:968:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6621,"nodeType":"Block","src":"6125:432:40","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":6579,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6571,"src":"6169:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"6169:23:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6161:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6577,"name":"address","nodeType":"ElementaryTypeName","src":"6161:8:40","stateMutability":"payable","typeDescriptions":{}}},"id":6581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6161:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6582,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6571,"src":"6207:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":5357,"src":"6207:23:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6584,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6571,"src":"6233:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"6233:23:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6207:49:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6587,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6573,"src":"6259:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6207:61:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6576,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5568,"src":"6135:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":6589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6135:143:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6590,"nodeType":"ExpressionStatement","src":"6135:143:40"},{"assignments":[6592],"declarations":[{"constant":false,"id":6592,"mutability":"mutable","name":"toPlatform","nameLocation":"6296:10:40","nodeType":"VariableDeclaration","scope":6621,"src":"6288:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6591,"name":"uint256","nodeType":"ElementaryTypeName","src":"6288:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6600,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6593,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6571,"src":"6309:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"6309:22:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6595,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6571,"src":"6334:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"6334:23:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6309:48:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6598,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6573,"src":"6360:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6309:60:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6288:81:40"},{"expression":{"id":6610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6601,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6592,"src":"6379:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6602,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6592,"src":"6392:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6603,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6592,"src":"6405:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":6604,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6571,"src":"6418:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":5355,"src":"6418:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6405:34:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":6607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6442:5:40","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"6405:42:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6392:55:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6379:68:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6611,"nodeType":"ExpressionStatement","src":"6379:68:40"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6615,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6571,"src":"6491:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":5343,"src":"6491:24:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6483:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6613,"name":"address","nodeType":"ElementaryTypeName","src":"6483:8:40","stateMutability":"payable","typeDescriptions":{}}},"id":6617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6483:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6618,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6592,"src":"6530:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6612,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5568,"src":"6457:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":6619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6457:93:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6620,"nodeType":"ExpressionStatement","src":"6457:93:40"}]},"id":6622,"implemented":true,"kind":"function","modifiers":[],"name":"_transferEthBroken","nameLocation":"6014:18:40","nodeType":"FunctionDefinition","parameters":{"id":6574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6571,"mutability":"mutable","name":"orderParameters","nameLocation":"6067:15:40","nodeType":"VariableDeclaration","scope":6622,"src":"6042:40:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":6570,"nodeType":"UserDefinedTypeName","pathNode":{"id":6569,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"6042:15:40"},"referencedDeclaration":5366,"src":"6042:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":6573,"mutability":"mutable","name":"paidTimes","nameLocation":"6100:9:40","nodeType":"VariableDeclaration","scope":6622,"src":"6092:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6572,"name":"uint256","nodeType":"ElementaryTypeName","src":"6092:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6032:83:40"},"returnParameters":{"id":6575,"nodeType":"ParameterList","parameters":[],"src":"6125:0:40"},"scope":6886,"src":"6005:552:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6673,"nodeType":"Block","src":"6680:380:40","statements":[{"expression":{"arguments":[{"expression":{"id":6631,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"6716:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":5339,"src":"6716:19:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6633,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"6737:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"6737:18:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6635,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"6757:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":5357,"src":"6757:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6637,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"6778:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"6778:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6757:39:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6640,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6627,"src":"6799:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6757:51:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6630,"name":"_performSelfERC20Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7954,"src":"6690:25:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6690:119:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6643,"nodeType":"ExpressionStatement","src":"6690:119:40"},{"assignments":[6645],"declarations":[{"constant":false,"id":6645,"mutability":"mutable","name":"toPlatform","nameLocation":"6828:10:40","nodeType":"VariableDeclaration","scope":6673,"src":"6820:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6644,"name":"uint256","nodeType":"ElementaryTypeName","src":"6820:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6653,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6646,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"6841:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"6841:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6648,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"6861:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"6861:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6841:38:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6651,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6627,"src":"6882:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6841:50:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6820:71:40"},{"expression":{"id":6663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6654,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6645,"src":"6901:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6655,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6645,"src":"6914:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6656,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6645,"src":"6927:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":6657,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"6940:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":5355,"src":"6940:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6927:29:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":6660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6959:5:40","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"6927:37:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6914:50:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6901:63:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6664,"nodeType":"ExpressionStatement","src":"6901:63:40"},{"expression":{"arguments":[{"expression":{"id":6666,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"7000:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":5339,"src":"7000:19:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6668,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"7021:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":5343,"src":"7021:19:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6670,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6645,"src":"7042:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6665,"name":"_performSelfERC20Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7954,"src":"6974:25:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6974:79:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6672,"nodeType":"ExpressionStatement","src":"6974:79:40"}]},"id":6674,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC20Broken","nameLocation":"6572:20:40","nodeType":"FunctionDefinition","parameters":{"id":6628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6625,"mutability":"mutable","name":"parameters","nameLocation":"6627:10:40","nodeType":"VariableDeclaration","scope":6674,"src":"6602:35:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":6624,"nodeType":"UserDefinedTypeName","pathNode":{"id":6623,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"6602:15:40"},"referencedDeclaration":5366,"src":"6602:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":6627,"mutability":"mutable","name":"paidTimes","nameLocation":"6655:9:40","nodeType":"VariableDeclaration","scope":6674,"src":"6647:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6626,"name":"uint256","nodeType":"ElementaryTypeName","src":"6647:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6592:78:40"},"returnParameters":{"id":6629,"nodeType":"ParameterList","parameters":[],"src":"6680:0:40"},"scope":6886,"src":"6563:497:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6753,"nodeType":"Block","src":"7198:750:40","statements":[{"assignments":[6684],"declarations":[{"constant":false,"id":6684,"mutability":"mutable","name":"etherRemaining","nameLocation":"7216:14:40","nodeType":"VariableDeclaration","scope":6753,"src":"7208:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6683,"name":"uint256","nodeType":"ElementaryTypeName","src":"7208:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6687,"initialValue":{"expression":{"id":6685,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7233:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"7233:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7208:34:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6688,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6680,"src":"7257:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":6087,"src":"7257:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6690,"name":"etherRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6684,"src":"7276:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7257:33:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6696,"nodeType":"IfStatement","src":"7253:98:40","trueBody":{"id":6695,"nodeType":"Block","src":"7292:59:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6692,"name":"InsufficientEtherSupplied","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4099,"src":"7313:25:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":6693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7313:27:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6694,"nodeType":"RevertStatement","src":"7306:34:40"}]}},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6700,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"7395:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"7395:23:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7387:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6698,"name":"address","nodeType":"ElementaryTypeName","src":"7387:8:40","stateMutability":"payable","typeDescriptions":{}}},"id":6702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7387:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":6703,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6680,"src":"7433:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":6089,"src":"7433:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6697,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5568,"src":"7361:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":6705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7361:100:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6706,"nodeType":"ExpressionStatement","src":"7361:100:40"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6710,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"7506:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":5343,"src":"7506:24:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7498:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6708,"name":"address","nodeType":"ElementaryTypeName","src":"7498:8:40","stateMutability":"payable","typeDescriptions":{}}},"id":6712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7498:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":6713,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6680,"src":"7545:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":6091,"src":"7545:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6707,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5568,"src":"7472:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":6715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7472:102:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6716,"nodeType":"ExpressionStatement","src":"7472:102:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6717,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6680,"src":"7589:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"7589:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7609:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7589:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6732,"nodeType":"IfStatement","src":"7585:162:40","trueBody":{"id":6731,"nodeType":"Block","src":"7612:135:40","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":6724,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"7664:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":5341,"src":"7664:22:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7656:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6722,"name":"address","nodeType":"ElementaryTypeName","src":"7656:8:40","stateMutability":"payable","typeDescriptions":{}}},"id":6726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7656:31:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":6727,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6680,"src":"7705:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6728,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"7705:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6721,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5568,"src":"7626:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":6729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7626:110:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6730,"nodeType":"ExpressionStatement","src":"7626:110:40"}]}},{"expression":{"id":6736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6733,"name":"etherRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6684,"src":"7757:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"expression":{"id":6734,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6680,"src":"7775:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":6087,"src":"7775:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7757:34:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6737,"nodeType":"ExpressionStatement","src":"7757:34:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6738,"name":"etherRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6684,"src":"7806:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7823:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7806:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6752,"nodeType":"IfStatement","src":"7802:140:40","trueBody":{"id":6751,"nodeType":"Block","src":"7826:116:40","statements":[{"id":6750,"nodeType":"UncheckedBlock","src":"7840:92:40","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":6744,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7889:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7889:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7881:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6742,"name":"address","nodeType":"ElementaryTypeName","src":"7881:8:40","stateMutability":"payable","typeDescriptions":{}}},"id":6746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7881:19:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6747,"name":"etherRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6684,"src":"7902:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6741,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5568,"src":"7868:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":6748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7868:49:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6749,"nodeType":"ExpressionStatement","src":"7868:49:40"}]}]}}]},"id":6754,"implemented":true,"kind":"function","modifiers":[],"name":"_transferEthAndFinalize","nameLocation":"7075:23:40","nodeType":"FunctionDefinition","parameters":{"id":6681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6677,"mutability":"mutable","name":"orderParameters","nameLocation":"7133:15:40","nodeType":"VariableDeclaration","scope":6754,"src":"7108:40:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":6676,"nodeType":"UserDefinedTypeName","pathNode":{"id":6675,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"7108:15:40"},"referencedDeclaration":5366,"src":"7108:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":6680,"mutability":"mutable","name":"dispatch","nameLocation":"7174:8:40","nodeType":"VariableDeclaration","scope":6754,"src":"7158:24:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":6679,"nodeType":"UserDefinedTypeName","pathNode":{"id":6678,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":6094,"src":"7158:8:40"},"referencedDeclaration":6094,"src":"7158:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"}],"src":"7098:90:40"},"returnParameters":{"id":6682,"nodeType":"ParameterList","parameters":[],"src":"7198:0:40"},"scope":6886,"src":"7066:882:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6884,"nodeType":"Block","src":"8145:1596:40","statements":[{"assignments":[6768],"declarations":[{"constant":false,"id":6768,"mutability":"mutable","name":"from","nameLocation":"8163:4:40","nodeType":"VariableDeclaration","scope":6884,"src":"8155:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6767,"name":"address","nodeType":"ElementaryTypeName","src":"8155:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6771,"initialValue":{"expression":{"id":6769,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8170:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8170:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8155:25:40"},{"assignments":[6773],"declarations":[{"constant":false,"id":6773,"mutability":"mutable","name":"token","nameLocation":"8198:5:40","nodeType":"VariableDeclaration","scope":6884,"src":"8190:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6772,"name":"address","nodeType":"ElementaryTypeName","src":"8190:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6776,"initialValue":{"expression":{"id":6774,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6757,"src":"8206:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":5339,"src":"8206:19:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8190:35:40"},{"expression":{"arguments":[{"id":6778,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6773,"src":"8264:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6779,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"8283:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6780,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6757,"src":"8301:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":5343,"src":"8301:19:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6782,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"8334:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":6091,"src":"8334:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6784,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6762,"src":"8367:10:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6785,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"8391:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6777,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5625,"src":"8236:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes32,bytes memory)"}},"id":6786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8236:176:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6787,"nodeType":"ExpressionStatement","src":"8236:176:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6788,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"8427:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"8427:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8447:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8427:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6804,"nodeType":"IfStatement","src":"8423:252:40","trueBody":{"id":6803,"nodeType":"Block","src":"8450:225:40","statements":[{"expression":{"arguments":[{"id":6793,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6773,"src":"8496:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6794,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"8519:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6795,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6757,"src":"8541:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":5341,"src":"8541:17:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6797,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"8576:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"8576:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6799,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6762,"src":"8611:10:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6800,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"8639:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6792,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5625,"src":"8464:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes32,bytes memory)"}},"id":6801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8464:200:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6802,"nodeType":"ExpressionStatement","src":"8464:200:40"}]}},{"assignments":[6806],"declarations":[{"constant":false,"id":6806,"mutability":"mutable","name":"left","nameLocation":"8693:4:40","nodeType":"VariableDeclaration","scope":6884,"src":"8685:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6805,"name":"uint256","nodeType":"ElementaryTypeName","src":"8685:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6815,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6807,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"8700:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":6087,"src":"8700:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6809,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"8719:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":6091,"src":"8719:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8700:38:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":6812,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"8741:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"8741:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8700:58:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8685:73:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6816,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"8772:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":6817,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"8780:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":6089,"src":"8780:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8772:26:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6882,"nodeType":"Block","src":"9386:349:40","statements":[{"expression":{"arguments":[{"id":6859,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6773,"src":"9432:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6860,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"9455:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6861,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6757,"src":"9477:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"9477:18:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6863,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"9513:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6864,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6762,"src":"9535:10:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6865,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"9563:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6858,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5625,"src":"9400:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes32,bytes memory)"}},"id":6866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9400:188:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6867,"nodeType":"ExpressionStatement","src":"9400:188:40"},{"expression":{"arguments":[{"id":6869,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"9618:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6868,"name":"_triggerIfArmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"9602:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":6870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9602:28:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6871,"nodeType":"ExpressionStatement","src":"9602:28:40"},{"expression":{"arguments":[{"id":6873,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6773,"src":"9671:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6874,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6757,"src":"9678:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"9678:18:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6876,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"9698:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6877,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":6089,"src":"9698:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6878,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"9719:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9698:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6872,"name":"_performSelfERC20Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7954,"src":"9645:25:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9645:79:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6881,"nodeType":"ExpressionStatement","src":"9645:79:40"}]},"id":6883,"nodeType":"IfStatement","src":"8768:967:40","trueBody":{"id":6857,"nodeType":"Block","src":"8800:580:40","statements":[{"expression":{"arguments":[{"id":6821,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6773,"src":"8846:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6822,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"8869:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6823,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6757,"src":"8891:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"8891:18:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6825,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"8927:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":6089,"src":"8927:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6827,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6762,"src":"8963:10:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6828,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"8991:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6820,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5625,"src":"8814:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes32,bytes memory)"}},"id":6829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8814:202:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6830,"nodeType":"ExpressionStatement","src":"8814:202:40"},{"expression":{"id":6834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6831,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"9030:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"expression":{"id":6832,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6760,"src":"9038:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":6833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":6089,"src":"9038:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9030:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6835,"nodeType":"ExpressionStatement","src":"9030:26:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6836,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"9074:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9081:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9074:8:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6852,"nodeType":"IfStatement","src":"9070:258:40","trueBody":{"id":6851,"nodeType":"Block","src":"9084:244:40","statements":[{"expression":{"arguments":[{"id":6840,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6773,"src":"9138:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6841,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"9165:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6844,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9199:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$6886","typeString":"contract OrderFulfiller"}],"id":6843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9191:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6842,"name":"address","nodeType":"ElementaryTypeName","src":"9191:7:40","typeDescriptions":{}}},"id":6845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9191:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6846,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"9226:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6847,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6762,"src":"9252:10:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6848,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"9284:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6839,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5625,"src":"9102:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes32,bytes memory)"}},"id":6849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9102:211:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6850,"nodeType":"ExpressionStatement","src":"9102:211:40"}]}},{"expression":{"arguments":[{"id":6854,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"9357:11:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6853,"name":"_triggerIfArmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"9341:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":6855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9341:28:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6856,"nodeType":"ExpressionStatement","src":"9341:28:40"}]}}]},"id":6885,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC20AndFinalize","nameLocation":"7963:25:40","nodeType":"FunctionDefinition","parameters":{"id":6765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6757,"mutability":"mutable","name":"parameters","nameLocation":"8023:10:40","nodeType":"VariableDeclaration","scope":6885,"src":"7998:35:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":6756,"nodeType":"UserDefinedTypeName","pathNode":{"id":6755,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"7998:15:40"},"referencedDeclaration":5366,"src":"7998:15:40","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":6760,"mutability":"mutable","name":"dispatch","nameLocation":"8059:8:40","nodeType":"VariableDeclaration","scope":6885,"src":"8043:24:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":6759,"nodeType":"UserDefinedTypeName","pathNode":{"id":6758,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":6094,"src":"8043:8:40"},"referencedDeclaration":6094,"src":"8043:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$6094_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"},{"constant":false,"id":6762,"mutability":"mutable","name":"conduitKey","nameLocation":"8085:10:40","nodeType":"VariableDeclaration","scope":6885,"src":"8077:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6761,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8077:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6764,"mutability":"mutable","name":"accumulator","nameLocation":"8118:11:40","nodeType":"VariableDeclaration","scope":6885,"src":"8105:24:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6763,"name":"bytes","nodeType":"ElementaryTypeName","src":"8105:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7988:147:40"},"returnParameters":{"id":6766,"nodeType":"ParameterList","parameters":[],"src":"8145:0:40"},"scope":6886,"src":"7954:1787:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":6887,"src":"362:9381:40","usedErrors":[4057,4061,4065,4069,4072,4079,4082,4087,4096,4099,4106,4109,4114,4119,4122,4125,4130,4133,4136,4139,4143,4147,4151,4155,4157,4246,4255,4258,4261,4264,4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"32:9712:40"},"id":40},"contracts/lib/OrderValidator.sol":{"ast":{"absolutePath":"contracts/lib/OrderValidator.sol","exportedSymbols":{"AccumulatorArmed":[5193],"AccumulatorDisarmed":[5190],"Accumulator_array_length_ptr":[5205],"Accumulator_array_offset":[5211],"Accumulator_array_offset_ptr":[5202],"Accumulator_conduitKey_ptr":[5196],"Accumulator_itemSizeOffsetDifference":[5208],"Accumulator_selector_ptr":[5199],"AdditionalRecipients_size":[4910],"AdvancedOrder_numerator_offset":[4862],"AlmostOneWord":[4865],"BadContractSignature_error_length":[5276],"BadContractSignature_error_signature":[5273],"BadSignatureV_error_length":[5255],"BadSignatureV_error_offset":[5252],"BadSignatureV_error_signature":[5249],"BasicOrder_additionalRecipients_data_cdPtr":[5001],"BasicOrder_additionalRecipients_head_cdPtr":[4992],"BasicOrder_additionalRecipients_head_ptr":[5061],"BasicOrder_additionalRecipients_length_cdPtr":[4998],"BasicOrder_basicOrderType_cdPtr":[4977],"BasicOrder_basicOrderType_range":[5007],"BasicOrder_common_params_size":[4901],"BasicOrder_considerationAmount_cdPtr":[4962],"BasicOrder_considerationHashesArray_ptr":[4904],"BasicOrder_considerationItem_endAmount_ptr":[5025],"BasicOrder_considerationItem_identifier_ptr":[5019],"BasicOrder_considerationItem_itemType_ptr":[5013],"BasicOrder_considerationItem_startAmount_ptr":[5022],"BasicOrder_considerationItem_token_ptr":[5016],"BasicOrder_considerationItem_typeHash_ptr":[5010],"BasicOrder_considerationToken_cdPtr":[4959],"BasicOrder_endAmount_cdPtr":[4898],"BasicOrder_fulfillerConduit_cdPtr":[4986],"BasicOrder_offerAmount_cdPtr":[4974],"BasicOrder_offerItem_endAmount_ptr":[5037],"BasicOrder_offerItem_itemType_ptr":[5031],"BasicOrder_offerItem_token_ptr":[5034],"BasicOrder_offerItem_typeHash_ptr":[5028],"BasicOrder_offerToken_cdPtr":[4971],"BasicOrder_offererConduit_cdPtr":[4983],"BasicOrder_offerer_cdPtr":[4965],"BasicOrder_order_considerationHashes_ptr":[5049],"BasicOrder_order_counter_ptr":[5058],"BasicOrder_order_offerHashes_ptr":[5046],"BasicOrder_order_offerer_ptr":[5043],"BasicOrder_order_orderType_ptr":[5052],"BasicOrder_order_startTime_ptr":[5055],"BasicOrder_order_typeHash_ptr":[5040],"BasicOrder_parameters_cdPtr":[4956],"BasicOrder_parameters_ptr":[5004],"BasicOrder_signature_cdPtr":[4995],"BasicOrder_signature_ptr":[5064],"BasicOrder_startTime_cdPtr":[4980],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[4989],"BasicOrder_zone_cdPtr":[4968],"Common_amount_offset":[4793],"Common_identifier_offset":[4790],"Common_token_offset":[4787],"Conduit_execute_ConduitTransfer_length":[5160],"Conduit_execute_ConduitTransfer_length_ptr":[5166],"Conduit_execute_ConduitTransfer_offset_ptr":[5163],"Conduit_execute_ConduitTransfer_ptr":[5157],"Conduit_execute_signature":[5148],"Conduit_execute_transferAmount_ptr":[5184],"Conduit_execute_transferFrom_ptr":[5175],"Conduit_execute_transferIdentifier_ptr":[5181],"Conduit_execute_transferItemType_ptr":[5169],"Conduit_execute_transferTo_ptr":[5178],"Conduit_execute_transferToken_ptr":[5172],"Conduit_transferItem_amount_ptr":[5229],"Conduit_transferItem_from_ptr":[5220],"Conduit_transferItem_identifier_ptr":[5226],"Conduit_transferItem_size":[5214],"Conduit_transferItem_to_ptr":[5223],"Conduit_transferItem_token_ptr":[5217],"ConsiderItem_recipient_offset":[4811],"ConsiderationItem_recipient_offset":[4808],"CostPerWord":[5123],"Create2AddressDerivation_length":[5132],"Create2AddressDerivation_ptr":[5129],"DefaultFreeMemoryPointer":[4889],"ECDSA_MaxLength":[5075],"ECDSA_signature_s_offset":[5078],"ECDSA_signature_v_offset":[5081],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[5072],"EIP1271_isValidSignature_calldata_baseLength":[5097],"EIP1271_isValidSignature_digest_negativeOffset":[5091],"EIP1271_isValidSignature_selector":[5085],"EIP1271_isValidSignature_selector_negativeOffset":[5094],"EIP1271_isValidSignature_signatureHead_negativeOffset":[5088],"EIP1271_isValidSignature_signature_head_offset":[5100],"EIP2098_allButHighestBitMask":[5068],"EIP712_DigestPayload_size":[4919],"EIP712_DomainSeparator_offset":[4913],"EIP712_OrderHash_offset":[4916],"EIP712_Order_size":[4907],"EIP_712_PREFIX":[5117],"Ecrecover_args_size":[5242],"Ecrecover_precompile":[5239],"Execution_conduit_offset":[4817],"Execution_offerer_offset":[4814],"Executor":[5917],"ExtraGasBuffer":[5120],"FiveWords":[4880],"FourWords":[4877],"FreeMemoryPointerSlot":[4883],"Fulfillment_itemIndex_offset":[4859],"InexactFraction_error_len":[5236],"InexactFraction_error_signature":[5233],"InvalidFulfillmentComponentData_error_len":[4824],"InvalidFulfillmentComponentData_error_signature":[4821],"InvalidSignature_error_length":[5269],"InvalidSignature_error_signature":[5266],"InvalidSigner_error_length":[5262],"InvalidSigner_error_signature":[5259],"MaskOverByteTwelve":[5136],"MaskOverFirstFourBytes":[5144],"MaskOverLastTwentyBytes":[5140],"MaxUint120":[5154],"MaxUint8":[5151],"MemoryExpansionCoefficient":[5126],"MissingItemAmount_error_len":[4844],"MissingItemAmount_error_signature":[4841],"NameLengthPtr":[4766],"NameWithLength":[4769],"NoContract_error_length":[5113],"NoContract_error_sig_ptr":[5107],"NoContract_error_signature":[5104],"NoContract_error_token_ptr":[5110],"NonMatchSelector_MagicModulus":[5282],"NonMatchSelector_MagicRemainder":[5285],"NumBitsAfterSelector":[5279],"OneConduitExecute_size":[5187],"OneWord":[4868],"Order":[5372],"OrderComponents":[5331],"OrderFulfilled_baseOffset":[4932],"OrderFulfilled_baseSize":[4925],"OrderFulfilled_consideration_body_offset":[4953],"OrderFulfilled_consideration_head_offset":[4950],"OrderFulfilled_consideration_length_baseOffset":[4935],"OrderFulfilled_fulfiller_offset":[4941],"OrderFulfilled_offer_body_offset":[4947],"OrderFulfilled_offer_head_offset":[4944],"OrderFulfilled_offer_length_baseOffset":[4938],"OrderFulfilled_selector":[4929],"OrderParameters":[5366],"OrderParameters_conduit_offset":[4853],"OrderParameters_consideration_head_offset":[4850],"OrderParameters_counter_offset":[4856],"OrderParameters_offer_head_offset":[4847],"OrderStatus":[5389],"OrderValidator":[7713],"Panic_arithmetic":[4837],"Panic_error_length":[4834],"Panic_error_offset":[4831],"Panic_error_signature":[4828],"ReceivedItem_CommonParams_size":[4805],"ReceivedItem_amount_offset":[4799],"ReceivedItem_recipient_offset":[4802],"ReceivedItem_size":[4796],"Shadow":[7881],"Signature_lower_v":[5245],"Slot0x80":[4892],"Slot0xA0":[4895],"ThreeWords":[4874],"TwoWords":[4871],"Version":[4772],"Version_length":[4775],"Version_shift":[4778],"ZeroSlot":[4886],"_ENTERED":[4784],"_NOT_ENTERED":[4781],"receivedItemsHash_ptr":[4922]},"id":7714,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6888,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:41"},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":6893,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7714,"sourceUnit":5390,"src":"58:114:41","symbolAliases":[{"foreign":{"id":6889,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"71:15:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":6890,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5372,"src":"92:5:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":6891,"name":"OrderComponents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5331,"src":"103:15:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":6892,"name":"OrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5389,"src":"124:11:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":6894,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7714,"sourceUnit":5286,"src":"174:38:41","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/Executor.sol","file":"./Executor.sol","id":6896,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7714,"sourceUnit":5918,"src":"214:42:41","symbolAliases":[{"foreign":{"id":6895,"name":"Executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"223:8:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/Shadow.sol","file":"./Shadow.sol","id":6898,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7714,"sourceUnit":7882,"src":"257:38:41","symbolAliases":[{"foreign":{"id":6897,"name":"Shadow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"266:6:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6899,"name":"Executor","nodeType":"IdentifierPath","referencedDeclaration":5917,"src":"324:8:41"},"id":6900,"nodeType":"InheritanceSpecifier","src":"324:8:41"},{"baseName":{"id":6901,"name":"Shadow","nodeType":"IdentifierPath","referencedDeclaration":7881,"src":"334:6:41"},"id":6902,"nodeType":"InheritanceSpecifier","src":"334:6:41"}],"canonicalName":"OrderValidator","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":7713,"linearizedBaseContracts":[7713,7881,5917,7995,8438,7919,6071,4265,4363,4325,5442,7767,4247,4158,6031,4761],"name":"OrderValidator","nameLocation":"306:14:41","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":6907,"mutability":"mutable","name":"_orderStatus","nameLocation":"388:12:41","nodeType":"VariableDeclaration","scope":7713,"src":"348:52:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus)"},"typeName":{"id":6906,"keyType":{"id":6903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"356:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"348:31:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus)"},"valueType":{"id":6905,"nodeType":"UserDefinedTypeName","pathNode":{"id":6904,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"367:11:41"},"referencedDeclaration":5389,"src":"367:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"}}},"visibility":"private"},{"body":{"id":6920,"nodeType":"Block","src":"515:2:41","statements":[]},"id":6921,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6914,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6909,"src":"476:17:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":6915,"kind":"baseConstructorSpecifier","modifierName":{"id":6913,"name":"Executor","nodeType":"IdentifierPath","referencedDeclaration":5917,"src":"467:8:41"},"nodeType":"ModifierInvocation","src":"467:27:41"},{"arguments":[{"id":6917,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6911,"src":"502:11:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":6918,"kind":"baseConstructorSpecifier","modifierName":{"id":6916,"name":"Shadow","nodeType":"IdentifierPath","referencedDeclaration":7881,"src":"495:6:41"},"nodeType":"ModifierInvocation","src":"495:19:41"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":6912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6909,"mutability":"mutable","name":"conduitController","nameLocation":"427:17:41","nodeType":"VariableDeclaration","scope":6921,"src":"419:25:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6908,"name":"address","nodeType":"ElementaryTypeName","src":"419:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6911,"mutability":"mutable","name":"shadowToken","nameLocation":"454:11:41","nodeType":"VariableDeclaration","scope":6921,"src":"446:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6910,"name":"address","nodeType":"ElementaryTypeName","src":"446:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"418:48:41"},"returnParameters":{"id":6919,"nodeType":"ParameterList","parameters":[],"src":"515:0:41"},"scope":7713,"src":"407:110:41","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7084,"nodeType":"Block","src":"761:1623:41","statements":[{"assignments":[6937],"declarations":[{"constant":false,"id":6937,"mutability":"mutable","name":"orderParameters","nameLocation":"796:15:41","nodeType":"VariableDeclaration","scope":7084,"src":"771:40:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":6936,"nodeType":"UserDefinedTypeName","pathNode":{"id":6935,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"771:15:41"},"referencedDeclaration":5366,"src":"771:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"id":6940,"initialValue":{"expression":{"id":6938,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6924,"src":"814:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"}},"id":6939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":5369,"src":"814:16:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"nodeType":"VariableDeclarationStatement","src":"771:59:41"},{"condition":{"id":6948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"857:143:41","subExpression":{"arguments":[{"expression":{"id":6942,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"887:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":5345,"src":"887:25:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6944,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"930:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"endTime","nodeType":"MemberAccess","referencedDeclaration":5347,"src":"930:23:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6946,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6926,"src":"971:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6941,"name":"_verifyTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"858:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (uint256,uint256,bool) view returns (bool)"}},"id":6947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"858:142:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6958,"nodeType":"IfStatement","src":"840:225:41","trueBody":{"id":6957,"nodeType":"Block","src":"1011:54:41","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":6951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1041:1:41","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":6950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1033:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1033:7:41","typeDescriptions":{}}},"id":6952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1033:10:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":6953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1045:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1052:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6955,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1032:22:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bytes32,bool,int_const 0)"}},"functionReturnParameters":6934,"id":6956,"nodeType":"Return","src":"1025:29:41"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6959,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"1079:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"1079:23:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":6961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1105:1:41","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1079:27:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6978,"nodeType":"IfStatement","src":"1075:185:41","trueBody":{"id":6977,"nodeType":"Block","src":"1108:152:41","statements":[{"condition":{"id":6963,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6926,"src":"1126:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6968,"nodeType":"IfStatement","src":"1122:85:41","trueBody":{"id":6967,"nodeType":"Block","src":"1143:64:41","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6964,"name":"InvalidOrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"1168:22:41","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":6965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1168:24:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6966,"nodeType":"RevertStatement","src":"1161:31:41"}]}},{"expression":{"components":[{"arguments":[{"hexValue":"30","id":6971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:1:41","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":6970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1228:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6969,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1228:7:41","typeDescriptions":{}}},"id":6972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1228:10:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":6973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1240:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1247:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1227:22:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bytes32,bool,int_const 0)"}},"functionReturnParameters":6934,"id":6976,"nodeType":"Return","src":"1220:29:41"}]}},{"expression":{"id":6987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6979,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1270:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6981,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"1312:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"arguments":[{"expression":{"id":6983,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"1353:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":6984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"1353:23:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6982,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5441,"src":"1341:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1341:36:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6980,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"1282:16:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$5366_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":6986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1282:105:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1270:117:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6988,"nodeType":"ExpressionStatement","src":"1270:117:41"},{"assignments":[6991],"declarations":[{"constant":false,"id":6991,"mutability":"mutable","name":"orderStatus","nameLocation":"1418:11:41","nodeType":"VariableDeclaration","scope":7084,"src":"1398:31:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":6990,"nodeType":"UserDefinedTypeName","pathNode":{"id":6989,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"1398:11:41"},"referencedDeclaration":5389,"src":"1398:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":6995,"initialValue":{"baseExpression":{"id":6992,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6907,"src":"1432:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":6994,"indexExpression":{"id":6993,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1445:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1432:23:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage","typeString":"struct OrderStatus storage ref"}},"nodeType":"VariableDeclarationStatement","src":"1398:57:41"},{"condition":{"id":7002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1483:144:41","subExpression":{"arguments":[{"id":6997,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1520:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6998,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"1547:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},{"hexValue":"74727565","id":6999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1576:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":7000,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6926,"src":"1598:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6996,"name":"_verifyOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8437,"src":"1484:18:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$","typeString":"function (bytes32,struct OrderStatus storage pointer,bool,bool) view returns (bool)"}},"id":7001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1484:143:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7009,"nodeType":"IfStatement","src":"1466:225:41","trueBody":{"id":7008,"nodeType":"Block","src":"1638:53:41","statements":[{"expression":{"components":[{"id":7003,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1660:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":7004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1671:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":7005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1678:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":7006,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1659:21:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bytes32,bool,int_const 0)"}},"functionReturnParameters":6934,"id":7007,"nodeType":"Return","src":"1652:28:41"}]}},{"condition":{"id":7012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1705:24:41","subExpression":{"expression":{"id":7010,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"1706:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":5374,"src":"1706:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7022,"nodeType":"IfStatement","src":"1701:186:41","trueBody":{"id":7021,"nodeType":"Block","src":"1731:156:41","statements":[{"expression":{"arguments":[{"expression":{"id":7014,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"1779:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"1779:23:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7016,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"1820:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7017,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6924,"src":"1847:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"}},"id":7018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"signature","nodeType":"MemberAccess","referencedDeclaration":5371,"src":"1847:15:41","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":7013,"name":"_verifySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8358,"src":"1745:16:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes32,bytes memory) view"}},"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1745:131:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7020,"nodeType":"ExpressionStatement","src":"1745:131:41"}]}},{"expression":{"id":7034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7023,"name":"shadowId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6933,"src":"1897:8:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":7025,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1932:3:41","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1932:10:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7027,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"1956:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":5335,"src":"1956:21:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7029,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"1991:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":5337,"src":"1991:26:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7031,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"2031:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":5349,"src":"2031:24:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7024,"name":"_mintToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7845,"src":"1908:10:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256,uint256) returns (uint256)"}},"id":7033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:157:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1897:168:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7035,"nodeType":"ExpressionStatement","src":"1897:168:41"},{"expression":{"id":7040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7036,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"2076:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":5374,"src":"2076:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2102:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2076:30:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7041,"nodeType":"ExpressionStatement","src":"2076:30:41"},{"expression":{"id":7046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7042,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"2116:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isCancelled","nodeType":"MemberAccess","referencedDeclaration":5376,"src":"2116:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":7045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2142:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2116:31:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7047,"nodeType":"ExpressionStatement","src":"2116:31:41"},{"expression":{"id":7052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7048,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"2157:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7050,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isBroken","nodeType":"MemberAccess","referencedDeclaration":5380,"src":"2157:20:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":7051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2180:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2157:28:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7053,"nodeType":"ExpressionStatement","src":"2157:28:41"},{"expression":{"id":7059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7054,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"2195:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"fulfiller","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"2195:21:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7057,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2219:3:41","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2219:10:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2195:34:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7060,"nodeType":"ExpressionStatement","src":"2195:34:41"},{"expression":{"id":7066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7061,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"2239:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":5384,"src":"2239:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7064,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2263:5:41","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2263:15:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2239:39:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7067,"nodeType":"ExpressionStatement","src":"2239:39:41"},{"expression":{"id":7072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7068,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"2288:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7070,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":5386,"src":"2288:20:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7071,"name":"shadowId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6933,"src":"2311:8:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2288:31:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7073,"nodeType":"ExpressionStatement","src":"2288:31:41"},{"expression":{"id":7078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7074,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"2329:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"2329:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":7077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2353:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2329:25:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7079,"nodeType":"ExpressionStatement","src":"2329:25:41"},{"expression":{"id":7082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7080,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"2365:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2373:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2365:12:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7083,"nodeType":"ExpressionStatement","src":"2365:12:41"}]},"id":7085,"implemented":true,"kind":"function","modifiers":[],"name":"_validateOrderAndUpdateStatus","nameLocation":"532:29:41","nodeType":"FunctionDefinition","parameters":{"id":6927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6924,"mutability":"mutable","name":"order","nameLocation":"586:5:41","nodeType":"VariableDeclaration","scope":7085,"src":"571:20:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order"},"typeName":{"id":6923,"nodeType":"UserDefinedTypeName","pathNode":{"id":6922,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":5372,"src":"571:5:41"},"referencedDeclaration":5372,"src":"571:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_storage_ptr","typeString":"struct Order"}},"visibility":"internal"},{"constant":false,"id":6926,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"606:15:41","nodeType":"VariableDeclaration","scope":7085,"src":"601:20:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6925,"name":"bool","nodeType":"ElementaryTypeName","src":"601:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"561:66:41"},"returnParameters":{"id":6934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6929,"mutability":"mutable","name":"orderHash","nameLocation":"683:9:41","nodeType":"VariableDeclaration","scope":7085,"src":"675:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6928,"name":"bytes32","nodeType":"ElementaryTypeName","src":"675:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6931,"mutability":"mutable","name":"valid","nameLocation":"711:5:41","nodeType":"VariableDeclaration","scope":7085,"src":"706:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6930,"name":"bool","nodeType":"ElementaryTypeName","src":"706:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6933,"mutability":"mutable","name":"shadowId","nameLocation":"738:8:41","nodeType":"VariableDeclaration","scope":7085,"src":"730:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6932,"name":"uint256","nodeType":"ElementaryTypeName","src":"730:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"661:95:41"},"scope":7713,"src":"523:1861:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7270,"nodeType":"Block","src":"2705:1707:41","statements":[{"expression":{"id":7111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7103,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"2715:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7105,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"2757:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"arguments":[{"expression":{"id":7107,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"2793:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"2793:18:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7106,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5441,"src":"2781:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2781:31:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7104,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"2727:16:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$5366_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":7110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2727:95:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2715:107:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7112,"nodeType":"ExpressionStatement","src":"2715:107:41"},{"assignments":[7115],"declarations":[{"constant":false,"id":7115,"mutability":"mutable","name":"orderStatus","nameLocation":"2853:11:41","nodeType":"VariableDeclaration","scope":7270,"src":"2833:31:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":7114,"nodeType":"UserDefinedTypeName","pathNode":{"id":7113,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"2833:11:41"},"referencedDeclaration":5389,"src":"2833:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":7119,"initialValue":{"baseExpression":{"id":7116,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6907,"src":"2867:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":7118,"indexExpression":{"id":7117,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"2880:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2867:23:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage","typeString":"struct OrderStatus storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2833:57:41"},{"condition":{"id":7122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2904:24:41","subExpression":{"expression":{"id":7120,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"2905:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":5374,"src":"2905:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7140,"nodeType":"IfStatement","src":"2900:201:41","trueBody":{"id":7139,"nodeType":"Block","src":"2930:171:41","statements":[{"condition":{"id":7123,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7092,"src":"2948:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7129,"nodeType":"IfStatement","src":"2944:89:41","trueBody":{"id":7128,"nodeType":"Block","src":"2965:68:41","statements":[{"errorCall":{"arguments":[{"id":7125,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"3008:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7124,"name":"OrderNotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"2990:17:41","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":7126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2990:28:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7127,"nodeType":"RevertStatement","src":"2983:35:41"}]}},{"expression":{"components":[{"id":7130,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"3054:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":7133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3073:1:41","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":7132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3065:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7131,"name":"address","nodeType":"ElementaryTypeName","src":"3065:7:41","typeDescriptions":{}}},"id":7134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3065:10:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":7135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3077:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":7136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3084:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":7137,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3053:37:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"functionReturnParameters":7102,"id":7138,"nodeType":"Return","src":"3046:44:41"}]}},{"condition":{"id":7147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3128:145:41","subExpression":{"arguments":[{"id":7142,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"3165:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7143,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"3192:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},{"hexValue":"66616c7365","id":7144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3221:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":7145,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7092,"src":"3244:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7141,"name":"_verifyOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8437,"src":"3129:18:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$","typeString":"function (bytes32,struct OrderStatus storage pointer,bool,bool) view returns (bool)"}},"id":7146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3129:144:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7158,"nodeType":"IfStatement","src":"3111:242:41","trueBody":{"id":7157,"nodeType":"Block","src":"3284:69:41","statements":[{"expression":{"components":[{"id":7148,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"3306:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":7151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3325:1:41","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":7150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3317:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7149,"name":"address","nodeType":"ElementaryTypeName","src":"3317:7:41","typeDescriptions":{}}},"id":7152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3317:10:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":7153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3329:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":7154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3336:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":7155,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3305:37:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"functionReturnParameters":7102,"id":7156,"nodeType":"Return","src":"3298:44:41"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7159,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"3367:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"3367:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7161,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7090,"src":"3391:8:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3367:32:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":7163,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"3402:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"3402:18:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3367:53:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7166,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7090,"src":"3424:8:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":7167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3435:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3424:12:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3367:69:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7187,"nodeType":"IfStatement","src":"3363:256:41","trueBody":{"id":7186,"nodeType":"Block","src":"3438:181:41","statements":[{"condition":{"id":7170,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7092,"src":"3456:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7176,"nodeType":"IfStatement","src":"3452:99:41","trueBody":{"id":7175,"nodeType":"Block","src":"3473:78:41","statements":[{"errorCall":{"arguments":[{"id":7172,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"3526:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7171,"name":"OrderInvalidRepayParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4155,"src":"3498:27:41","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":7173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3498:38:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7174,"nodeType":"RevertStatement","src":"3491:45:41"}]}},{"expression":{"components":[{"id":7177,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"3572:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":7180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3591:1:41","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":7179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3583:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7178,"name":"address","nodeType":"ElementaryTypeName","src":"3583:7:41","typeDescriptions":{}}},"id":7181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3583:10:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":7182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3595:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":7183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3602:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":7184,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3571:37:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"functionReturnParameters":7102,"id":7185,"nodeType":"Return","src":"3564:44:41"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7188,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"3633:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":5384,"src":"3633:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7190,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"3657:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"3657:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":7192,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"3681:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":5349,"src":"3681:19:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3657:43:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3633:67:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7196,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3703:5:41","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3703:15:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3633:85:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7216,"nodeType":"IfStatement","src":"3629:257:41","trueBody":{"id":7215,"nodeType":"Block","src":"3720:166:41","statements":[{"condition":{"id":7199,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7092,"src":"3738:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7205,"nodeType":"IfStatement","src":"3734:84:41","trueBody":{"id":7204,"nodeType":"Block","src":"3755:63:41","statements":[{"errorCall":{"arguments":[{"id":7201,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"3793:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7200,"name":"OrderExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"3780:12:41","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":7202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3780:23:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7203,"nodeType":"RevertStatement","src":"3773:30:41"}]}},{"expression":{"components":[{"id":7206,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7095,"src":"3839:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":7209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3858:1:41","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":7208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3850:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7207,"name":"address","nodeType":"ElementaryTypeName","src":"3850:7:41","typeDescriptions":{}}},"id":7210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3850:10:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":7211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3862:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":7212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3869:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":7213,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3838:37:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"functionReturnParameters":7102,"id":7214,"nodeType":"Return","src":"3831:44:41"}]}},{"expression":{"id":7221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7217,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"3896:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"3896:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7220,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7090,"src":"3921:8:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3896:33:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7222,"nodeType":"ExpressionStatement","src":"3896:33:41"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7223,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"3943:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"3943:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7225,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"3968:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"3968:18:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3943:43:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7259,"nodeType":"Block","src":"4127:213:41","statements":[{"expression":{"arguments":[{"expression":{"id":7245,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"4171:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7246,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fulfiller","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"4171:21:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7247,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"4210:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7248,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":5386,"src":"4210:20:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7249,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"4248:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":5384,"src":"4248:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7251,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"4272:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7252,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"4272:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":7253,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"4296:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":5349,"src":"4296:19:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4272:43:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:67:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7244,"name":"_extendToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7867,"src":"4141:12:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":7257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4141:188:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7258,"nodeType":"ExpressionStatement","src":"4141:188:41"}]},"id":7260,"nodeType":"IfStatement","src":"3939:401:41","trueBody":{"id":7243,"nodeType":"Block","src":"3988:133:41","statements":[{"expression":{"id":7232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7228,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"4002:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isFinalized","nodeType":"MemberAccess","referencedDeclaration":5378,"src":"4002:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4028:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4002:30:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7233,"nodeType":"ExpressionStatement","src":"4002:30:41"},{"expression":{"id":7236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7234,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7101,"src":"4046:11:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4060:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4046:18:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7237,"nodeType":"ExpressionStatement","src":"4046:18:41"},{"expression":{"arguments":[{"expression":{"id":7239,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"4089:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":5386,"src":"4089:20:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7238,"name":"_burnToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7880,"src":"4078:10:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4078:32:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7242,"nodeType":"ExpressionStatement","src":"4078:32:41"}]}},{"expression":{"id":7263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7261,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"4350:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4358:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4350:12:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7264,"nodeType":"ExpressionStatement","src":"4350:12:41"},{"expression":{"id":7268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7265,"name":"fulfiller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7097,"src":"4372:9:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7266,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"4384:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fulfiller","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"4384:21:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4372:33:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7269,"nodeType":"ExpressionStatement","src":"4372:33:41"}]},"id":7271,"implemented":true,"kind":"function","modifiers":[],"name":"_validateOrderAndUpdateRepayStatus","nameLocation":"2399:34:41","nodeType":"FunctionDefinition","parameters":{"id":7093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7088,"mutability":"mutable","name":"parameters","nameLocation":"2468:10:41","nodeType":"VariableDeclaration","scope":7271,"src":"2443:35:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":7087,"nodeType":"UserDefinedTypeName","pathNode":{"id":7086,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"2443:15:41"},"referencedDeclaration":5366,"src":"2443:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":7090,"mutability":"mutable","name":"payTimes","nameLocation":"2496:8:41","nodeType":"VariableDeclaration","scope":7271,"src":"2488:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7089,"name":"uint256","nodeType":"ElementaryTypeName","src":"2488:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7092,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"2519:15:41","nodeType":"VariableDeclaration","scope":7271,"src":"2514:20:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7091,"name":"bool","nodeType":"ElementaryTypeName","src":"2514:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2433:107:41"},"returnParameters":{"id":7102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7095,"mutability":"mutable","name":"orderHash","nameLocation":"2596:9:41","nodeType":"VariableDeclaration","scope":7271,"src":"2588:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7094,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2588:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7097,"mutability":"mutable","name":"fulfiller","nameLocation":"2627:9:41","nodeType":"VariableDeclaration","scope":7271,"src":"2619:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7096,"name":"address","nodeType":"ElementaryTypeName","src":"2619:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7099,"mutability":"mutable","name":"valid","nameLocation":"2655:5:41","nodeType":"VariableDeclaration","scope":7271,"src":"2650:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7098,"name":"bool","nodeType":"ElementaryTypeName","src":"2650:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7101,"mutability":"mutable","name":"isFinalized","nameLocation":"2679:11:41","nodeType":"VariableDeclaration","scope":7271,"src":"2674:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7100,"name":"bool","nodeType":"ElementaryTypeName","src":"2674:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2574:126:41"},"scope":7713,"src":"2390:2022:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7383,"nodeType":"Block","src":"4677:1075:41","statements":[{"expression":{"id":7293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7285,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7279,"src":"4687:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7287,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"4729:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"arguments":[{"expression":{"id":7289,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"4765:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"4765:18:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7288,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5441,"src":"4753:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4753:31:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7286,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"4699:16:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$5366_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":7292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4699:95:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4687:107:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7294,"nodeType":"ExpressionStatement","src":"4687:107:41"},{"assignments":[7297],"declarations":[{"constant":false,"id":7297,"mutability":"mutable","name":"orderStatus","nameLocation":"4825:11:41","nodeType":"VariableDeclaration","scope":7383,"src":"4805:31:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":7296,"nodeType":"UserDefinedTypeName","pathNode":{"id":7295,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"4805:11:41"},"referencedDeclaration":5389,"src":"4805:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":7301,"initialValue":{"baseExpression":{"id":7298,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6907,"src":"4839:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":7300,"indexExpression":{"id":7299,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7279,"src":"4852:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4839:23:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage","typeString":"struct OrderStatus storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4805:57:41"},{"condition":{"id":7304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4876:24:41","subExpression":{"expression":{"id":7302,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7297,"src":"4877:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":5374,"src":"4877:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7318,"nodeType":"IfStatement","src":"4872:193:41","trueBody":{"id":7317,"nodeType":"Block","src":"4902:163:41","statements":[{"condition":{"id":7305,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7276,"src":"4920:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7311,"nodeType":"IfStatement","src":"4916:89:41","trueBody":{"id":7310,"nodeType":"Block","src":"4937:68:41","statements":[{"errorCall":{"arguments":[{"id":7307,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7279,"src":"4980:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7306,"name":"OrderNotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"4962:17:41","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":7308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4962:28:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7309,"nodeType":"RevertStatement","src":"4955:35:41"}]}},{"expression":{"components":[{"id":7312,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7279,"src":"5026:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7313,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"5037:9:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":7314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5048:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":7315,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5025:29:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"tuple(bytes32,uint256,bool)"}},"functionReturnParameters":7284,"id":7316,"nodeType":"Return","src":"5018:36:41"}]}},{"expression":{"id":7322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7319,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"5075:9:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7320,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7297,"src":"5087:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"5087:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5075:33:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7323,"nodeType":"ExpressionStatement","src":"5075:33:41"},{"condition":{"id":7330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5136:145:41","subExpression":{"arguments":[{"id":7325,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7279,"src":"5173:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7326,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7297,"src":"5200:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},{"hexValue":"66616c7365","id":7327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5229:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":7328,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7276,"src":"5252:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7324,"name":"_verifyOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8437,"src":"5137:18:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$","typeString":"function (bytes32,struct OrderStatus storage pointer,bool,bool) view returns (bool)"}},"id":7329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5137:144:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7337,"nodeType":"IfStatement","src":"5119:234:41","trueBody":{"id":7336,"nodeType":"Block","src":"5292:61:41","statements":[{"expression":{"components":[{"id":7331,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7279,"src":"5314:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7332,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"5325:9:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":7333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5336:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":7334,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5313:29:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"tuple(bytes32,uint256,bool)"}},"functionReturnParameters":7284,"id":7335,"nodeType":"Return","src":"5306:36:41"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7338,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7297,"src":"5367:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":5384,"src":"5367:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7340,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"5391:9:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":7341,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"5403:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":5349,"src":"5403:19:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5391:31:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5367:55:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":7345,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5425:5:41","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5425:15:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5367:73:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7361,"nodeType":"IfStatement","src":"5363:240:41","trueBody":{"id":7360,"nodeType":"Block","src":"5442:161:41","statements":[{"condition":{"id":7348,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7276,"src":"5460:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7354,"nodeType":"IfStatement","src":"5456:87:41","trueBody":{"id":7353,"nodeType":"Block","src":"5477:66:41","statements":[{"errorCall":{"arguments":[{"id":7350,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7279,"src":"5518:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7349,"name":"OrderNotExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4151,"src":"5502:15:41","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":7351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5502:26:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7352,"nodeType":"RevertStatement","src":"5495:33:41"}]}},{"expression":{"components":[{"id":7355,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7279,"src":"5564:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7356,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"5575:9:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":7357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5586:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":7358,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5563:29:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"tuple(bytes32,uint256,bool)"}},"functionReturnParameters":7284,"id":7359,"nodeType":"Return","src":"5556:36:41"}]}},{"expression":{"arguments":[{"expression":{"id":7363,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7297,"src":"5624:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7364,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":5386,"src":"5624:20:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7362,"name":"_burnToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7880,"src":"5613:10:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5613:32:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7366,"nodeType":"ExpressionStatement","src":"5613:32:41"},{"expression":{"id":7371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7367,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7297,"src":"5656:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isFinalized","nodeType":"MemberAccess","referencedDeclaration":5378,"src":"5656:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5682:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5656:30:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7372,"nodeType":"ExpressionStatement","src":"5656:30:41"},{"expression":{"id":7377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7373,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7297,"src":"5696:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isBroken","nodeType":"MemberAccess","referencedDeclaration":5380,"src":"5696:20:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5719:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5696:27:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7378,"nodeType":"ExpressionStatement","src":"5696:27:41"},{"expression":{"id":7381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7379,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"5733:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5741:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5733:12:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7382,"nodeType":"ExpressionStatement","src":"5733:12:41"}]},"id":7384,"implemented":true,"kind":"function","modifiers":[],"name":"_validateOrderAndUpdateBreakStatus","nameLocation":"4427:34:41","nodeType":"FunctionDefinition","parameters":{"id":7277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7274,"mutability":"mutable","name":"parameters","nameLocation":"4496:10:41","nodeType":"VariableDeclaration","scope":7384,"src":"4471:35:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":7273,"nodeType":"UserDefinedTypeName","pathNode":{"id":7272,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"4471:15:41"},"referencedDeclaration":5366,"src":"4471:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":7276,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"4521:15:41","nodeType":"VariableDeclaration","scope":7384,"src":"4516:20:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7275,"name":"bool","nodeType":"ElementaryTypeName","src":"4516:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4461:81:41"},"returnParameters":{"id":7284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7279,"mutability":"mutable","name":"orderHash","nameLocation":"4598:9:41","nodeType":"VariableDeclaration","scope":7384,"src":"4590:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7278,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4590:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7281,"mutability":"mutable","name":"paidTimes","nameLocation":"4629:9:41","nodeType":"VariableDeclaration","scope":7384,"src":"4621:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7280,"name":"uint256","nodeType":"ElementaryTypeName","src":"4621:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7283,"mutability":"mutable","name":"valid","nameLocation":"4657:5:41","nodeType":"VariableDeclaration","scope":7384,"src":"4652:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7282,"name":"bool","nodeType":"ElementaryTypeName","src":"4652:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4576:96:41"},"scope":7713,"src":"4418:1334:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7521,"nodeType":"Block","src":"5864:2489:41","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7393,"name":"_assertNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"5940:19:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":7394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5940:21:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7395,"nodeType":"ExpressionStatement","src":"5940:21:41"},{"assignments":[7398],"declarations":[{"constant":false,"id":7398,"mutability":"mutable","name":"orderStatus","nameLocation":"6042:11:41","nodeType":"VariableDeclaration","scope":7521,"src":"6022:31:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":7397,"nodeType":"UserDefinedTypeName","pathNode":{"id":7396,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"6022:11:41"},"referencedDeclaration":5389,"src":"6022:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":7399,"nodeType":"VariableDeclarationStatement","src":"6022:31:41"},{"assignments":[7401],"declarations":[{"constant":false,"id":7401,"mutability":"mutable","name":"offerer","nameLocation":"6071:7:41","nodeType":"VariableDeclaration","scope":7521,"src":"6063:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7400,"name":"address","nodeType":"ElementaryTypeName","src":"6063:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7402,"nodeType":"VariableDeclarationStatement","src":"6063:15:41"},{"id":7516,"nodeType":"UncheckedBlock","src":"6161:2079:41","statements":[{"assignments":[7404],"declarations":[{"constant":false,"id":7404,"mutability":"mutable","name":"totalOrders","nameLocation":"6272:11:41","nodeType":"VariableDeclaration","scope":7516,"src":"6264:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7403,"name":"uint256","nodeType":"ElementaryTypeName","src":"6264:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7407,"initialValue":{"expression":{"id":7405,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"6286:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents calldata[] calldata"}},"id":7406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6286:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6264:35:41"},{"body":{"id":7514,"nodeType":"Block","src":"6393:1837:41","statements":[{"assignments":[7417],"declarations":[{"constant":false,"id":7417,"mutability":"mutable","name":"order","nameLocation":"6475:5:41","nodeType":"VariableDeclaration","scope":7514,"src":"6450:30:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents"},"typeName":{"id":7416,"nodeType":"UserDefinedTypeName","pathNode":{"id":7415,"name":"OrderComponents","nodeType":"IdentifierPath","referencedDeclaration":5331,"src":"6450:15:41"},"referencedDeclaration":5331,"src":"6450:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_storage_ptr","typeString":"struct OrderComponents"}},"visibility":"internal"}],"id":7421,"initialValue":{"baseExpression":{"id":7418,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"6483:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents calldata[] calldata"}},"id":7420,"indexExpression":{"id":7419,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"6490:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6483:9:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"nodeType":"VariableDeclarationStatement","src":"6450:42:41"},{"expression":{"id":7425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7422,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"6511:7:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7423,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"6521:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5296,"src":"6521:13:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6511:23:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7426,"nodeType":"ExpressionStatement","src":"6511:23:41"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7427,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6557:3:41","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6557:10:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7429,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"6571:7:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6557:21:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7435,"nodeType":"IfStatement","src":"6553:93:41","trueBody":{"id":7434,"nodeType":"Block","src":"6580:66:41","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7431,"name":"InvalidCanceller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"6609:16:41","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6609:18:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7433,"nodeType":"RevertStatement","src":"6602:25:41"}]}},{"assignments":[7437],"declarations":[{"constant":false,"id":7437,"mutability":"mutable","name":"orderHash","nameLocation":"6753:9:41","nodeType":"VariableDeclaration","scope":7514,"src":"6745:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7436,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6745:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7477,"initialValue":{"arguments":[{"arguments":[{"id":7440,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"6844:7:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7441,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"6877:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":5298,"src":"6877:11:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7443,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"6914:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":5300,"src":"6914:16:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7445,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"6956:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":5302,"src":"6956:14:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7447,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"6996:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":5304,"src":"6996:12:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7449,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7034:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":5306,"src":"7034:14:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7451,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7074:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":5308,"src":"7074:15:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7453,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7115:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"endTime","nodeType":"MemberAccess","referencedDeclaration":5310,"src":"7115:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7455,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7154:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":5312,"src":"7154:14:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7457,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7194:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5314,"src":"7194:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7459,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7233:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5316,"src":"7233:12:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7461,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7271:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":5318,"src":"7271:11:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7463,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7308:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":5320,"src":"7308:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7465,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7347:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":5322,"src":"7347:9:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7467,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7382:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawFee","nodeType":"MemberAccess","referencedDeclaration":5324,"src":"7382:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7469,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7425:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":5326,"src":"7425:10:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7471,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7461:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":5328,"src":"7461:16:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"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"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7439,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"6803:15:41","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OrderParameters_$5366_storage_ptr_$","typeString":"type(struct OrderParameters storage pointer)"}},"id":7473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6803:696:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_memory_ptr","typeString":"struct OrderParameters memory"}},{"expression":{"id":7474,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"7521:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":7475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"counter","nodeType":"MemberAccess","referencedDeclaration":5330,"src":"7521:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_memory_ptr","typeString":"struct OrderParameters memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7438,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"6765:16:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$5366_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":7476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6765:787:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6745:807:41"},{"expression":{"id":7482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7478,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"7646:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":7479,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6907,"src":"7660:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":7481,"indexExpression":{"id":7480,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7437,"src":"7673:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7660:23:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage","typeString":"struct OrderStatus storage ref"}},"src":"7646:37:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7483,"nodeType":"ExpressionStatement","src":"7646:37:41"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7484,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"7706:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":5384,"src":"7706:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7730:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7706:25:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7493,"nodeType":"IfStatement","src":"7702:109:41","trueBody":{"id":7492,"nodeType":"Block","src":"7733:78:41","statements":[{"errorCall":{"arguments":[{"id":7489,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7437,"src":"7782:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7488,"name":"OrderAlreadyStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"7762:19:41","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":7490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7762:30:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7491,"nodeType":"RevertStatement","src":"7755:37:41"}]}},{"expression":{"id":7498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7494,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"7900:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7496,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":5374,"src":"7900:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":7497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7926:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"7900:31:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7499,"nodeType":"ExpressionStatement","src":"7900:31:41"},{"expression":{"id":7504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7500,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"7949:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isCancelled","nodeType":"MemberAccess","referencedDeclaration":5376,"src":"7949:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7975:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7949:30:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7505,"nodeType":"ExpressionStatement","src":"7949:30:41"},{"eventCall":{"arguments":[{"id":7507,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7437,"src":"8097:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7508,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"8108:7:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7506,"name":"OrderCancelled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"8082:14:41","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":7509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8082:34:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7510,"nodeType":"EmitStatement","src":"8077:39:41"},{"expression":{"id":7512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8212:3:41","subExpression":{"id":7511,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"8214:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7513,"nodeType":"ExpressionStatement","src":"8212:3:41"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7412,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"6374:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7413,"name":"totalOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7404,"src":"6378:11:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6374:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7515,"initializationExpression":{"assignments":[7409],"declarations":[{"constant":false,"id":7409,"mutability":"mutable","name":"i","nameLocation":"6367:1:41","nodeType":"VariableDeclaration","scope":7515,"src":"6359:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7408,"name":"uint256","nodeType":"ElementaryTypeName","src":"6359:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7411,"initialValue":{"hexValue":"30","id":7410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6371:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6359:13:41"},"nodeType":"ForStatement","src":"6354:1876:41"}]},{"expression":{"id":7519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7517,"name":"cancelled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7391,"src":"8330:9:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8342:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"8330:16:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7520,"nodeType":"ExpressionStatement","src":"8330:16:41"}]},"id":7522,"implemented":true,"kind":"function","modifiers":[],"name":"_cancel","nameLocation":"5767:7:41","nodeType":"FunctionDefinition","parameters":{"id":7389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7388,"mutability":"mutable","name":"orders","nameLocation":"5802:6:41","nodeType":"VariableDeclaration","scope":7522,"src":"5775:33:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents[]"},"typeName":{"baseType":{"id":7386,"nodeType":"UserDefinedTypeName","pathNode":{"id":7385,"name":"OrderComponents","nodeType":"IdentifierPath","referencedDeclaration":5331,"src":"5775:15:41"},"referencedDeclaration":5331,"src":"5775:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$5331_storage_ptr","typeString":"struct OrderComponents"}},"id":7387,"nodeType":"ArrayTypeName","src":"5775:17:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$5331_storage_$dyn_storage_ptr","typeString":"struct OrderComponents[]"}},"visibility":"internal"}],"src":"5774:35:41"},"returnParameters":{"id":7392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7391,"mutability":"mutable","name":"cancelled","nameLocation":"5849:9:41","nodeType":"VariableDeclaration","scope":7522,"src":"5844:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7390,"name":"bool","nodeType":"ElementaryTypeName","src":"5844:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5843:16:41"},"scope":7713,"src":"5758:2595:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7664,"nodeType":"Block","src":"8457:3280:41","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7531,"name":"_assertNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"8533:19:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":7532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8533:21:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7533,"nodeType":"ExpressionStatement","src":"8533:21:41"},{"assignments":[7536],"declarations":[{"constant":false,"id":7536,"mutability":"mutable","name":"orderStatus","nameLocation":"8635:11:41","nodeType":"VariableDeclaration","scope":7664,"src":"8615:31:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":7535,"nodeType":"UserDefinedTypeName","pathNode":{"id":7534,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"8615:11:41"},"referencedDeclaration":5389,"src":"8615:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":7537,"nodeType":"VariableDeclarationStatement","src":"8615:31:41"},{"assignments":[7539],"declarations":[{"constant":false,"id":7539,"mutability":"mutable","name":"orderHash","nameLocation":"8664:9:41","nodeType":"VariableDeclaration","scope":7664,"src":"8656:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8656:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7540,"nodeType":"VariableDeclarationStatement","src":"8656:17:41"},{"assignments":[7542],"declarations":[{"constant":false,"id":7542,"mutability":"mutable","name":"offerer","nameLocation":"8691:7:41","nodeType":"VariableDeclaration","scope":7664,"src":"8683:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7541,"name":"address","nodeType":"ElementaryTypeName","src":"8683:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7543,"nodeType":"VariableDeclarationStatement","src":"8683:15:41"},{"id":7659,"nodeType":"UncheckedBlock","src":"8781:2843:41","statements":[{"assignments":[7545],"declarations":[{"constant":false,"id":7545,"mutability":"mutable","name":"totalOrders","nameLocation":"8892:11:41","nodeType":"VariableDeclaration","scope":7659,"src":"8884:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7544,"name":"uint256","nodeType":"ElementaryTypeName","src":"8884:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7548,"initialValue":{"expression":{"id":7546,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7526,"src":"8906:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order calldata[] calldata"}},"id":7547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8906:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8884:35:41"},{"body":{"id":7657,"nodeType":"Block","src":"9013:2601:41","statements":[{"assignments":[7558],"declarations":[{"constant":false,"id":7558,"mutability":"mutable","name":"order","nameLocation":"9085:5:41","nodeType":"VariableDeclaration","scope":7657,"src":"9070:20:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order"},"typeName":{"id":7557,"nodeType":"UserDefinedTypeName","pathNode":{"id":7556,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":5372,"src":"9070:5:41"},"referencedDeclaration":5372,"src":"9070:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_storage_ptr","typeString":"struct Order"}},"visibility":"internal"}],"id":7562,"initialValue":{"baseExpression":{"id":7559,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7526,"src":"9093:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order calldata[] calldata"}},"id":7561,"indexExpression":{"id":7560,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7550,"src":"9100:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9093:9:41","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"}},"nodeType":"VariableDeclarationStatement","src":"9070:32:41"},{"assignments":[7565],"declarations":[{"constant":false,"id":7565,"mutability":"mutable","name":"orderParameters","nameLocation":"9196:15:41","nodeType":"VariableDeclaration","scope":7657,"src":"9171:40:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":7564,"nodeType":"UserDefinedTypeName","pathNode":{"id":7563,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":5366,"src":"9171:15:41"},"referencedDeclaration":5366,"src":"9171:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"id":7568,"initialValue":{"expression":{"id":7566,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7558,"src":"9214:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"}},"id":7567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":5369,"src":"9214:16:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"nodeType":"VariableDeclarationStatement","src":"9171:59:41"},{"expression":{"id":7572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7569,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"9307:7:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7570,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9317:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"9317:23:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9307:33:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7573,"nodeType":"ExpressionStatement","src":"9307:33:41"},{"expression":{"id":7616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7574,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7539,"src":"9439:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7577,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"9530:7:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7578,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9563:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":5335,"src":"9563:21:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7580,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9610:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":5337,"src":"9610:26:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7582,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9662:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":5339,"src":"9662:24:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7584,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9712:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":5341,"src":"9712:22:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7586,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9760:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":5343,"src":"9760:24:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7588,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9810:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":5345,"src":"9810:25:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7590,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9861:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"endTime","nodeType":"MemberAccess","referencedDeclaration":5347,"src":"9861:23:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7592,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9910:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":5349,"src":"9910:24:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7594,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9960:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":5351,"src":"9960:23:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7596,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10009:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"10009:22:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7598,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10057:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":5355,"src":"10057:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7600,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10104:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":5357,"src":"10104:23:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7602,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10153:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":5359,"src":"10153:19:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7604,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10198:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawFee","nodeType":"MemberAccess","referencedDeclaration":5361,"src":"10198:27:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7606,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10251:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":5363,"src":"10251:20:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7608,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10297:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":5365,"src":"10297:26:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"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"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7576,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"9489:15:41","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OrderParameters_$5366_storage_ptr_$","typeString":"type(struct OrderParameters storage pointer)"}},"id":7610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9489:856:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_memory_ptr","typeString":"struct OrderParameters memory"}},{"arguments":[{"expression":{"id":7612,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10379:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$5366_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":7613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"10379:23:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7611,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5441,"src":"10367:11:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10367:36:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$5366_memory_ptr","typeString":"struct OrderParameters memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7575,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"9451:16:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$5366_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":7615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9451:970:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9439:982:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7617,"nodeType":"ExpressionStatement","src":"9439:982:41"},{"expression":{"id":7622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7618,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7536,"src":"10515:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":7619,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6907,"src":"10529:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":7621,"indexExpression":{"id":7620,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7539,"src":"10542:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10529:23:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage","typeString":"struct OrderStatus storage ref"}},"src":"10515:37:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7623,"nodeType":"ExpressionStatement","src":"10515:37:41"},{"expression":{"arguments":[{"id":7625,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7539,"src":"10687:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7626,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7536,"src":"10718:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},{"hexValue":"74727565","id":7627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10751:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"74727565","id":7628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10830:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7624,"name":"_verifyOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8437,"src":"10647:18:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$","typeString":"function (bytes32,struct OrderStatus storage pointer,bool,bool) view returns (bool)"}},"id":7629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10647:253:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7630,"nodeType":"ExpressionStatement","src":"10647:253:41"},{"condition":{"id":7633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10989:24:41","subExpression":{"expression":{"id":7631,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7536,"src":"10990:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7632,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":5374,"src":"10990:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7653,"nodeType":"IfStatement","src":"10985:512:41","trueBody":{"id":7652,"nodeType":"Block","src":"11015:482:41","statements":[{"expression":{"arguments":[{"id":7635,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"11108:7:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7636,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7539,"src":"11117:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7637,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7558,"src":"11128:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_calldata_ptr","typeString":"struct Order calldata"}},"id":7638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"signature","nodeType":"MemberAccess","referencedDeclaration":5371,"src":"11128:15:41","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":7634,"name":"_verifySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8358,"src":"11091:16:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes32,bytes memory) view"}},"id":7639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11091:53:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7640,"nodeType":"ExpressionStatement","src":"11091:53:41"},{"expression":{"id":7645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7641,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7536,"src":"11238:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":5374,"src":"11238:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11264:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11238:30:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7646,"nodeType":"ExpressionStatement","src":"11238:30:41"},{"eventCall":{"arguments":[{"id":7648,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7539,"src":"11414:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7649,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"11449:7:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7647,"name":"OrderValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4045,"src":"11374:14:41","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":7650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11374:104:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7651,"nodeType":"EmitStatement","src":"11369:109:41"}]}},{"expression":{"id":7655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11596:3:41","subExpression":{"id":7654,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7550,"src":"11598:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7656,"nodeType":"ExpressionStatement","src":"11596:3:41"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7553,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7550,"src":"8994:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7554,"name":"totalOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7545,"src":"8998:11:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8994:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7658,"initializationExpression":{"assignments":[7550],"declarations":[{"constant":false,"id":7550,"mutability":"mutable","name":"i","nameLocation":"8987:1:41","nodeType":"VariableDeclaration","scope":7658,"src":"8979:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7549,"name":"uint256","nodeType":"ElementaryTypeName","src":"8979:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7552,"initialValue":{"hexValue":"30","id":7551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8991:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8979:13:41"},"nodeType":"ForStatement","src":"8974:2640:41"}]},{"expression":{"id":7662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7660,"name":"validated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7529,"src":"11714:9:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11726:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11714:16:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7663,"nodeType":"ExpressionStatement","src":"11714:16:41"}]},"id":7665,"implemented":true,"kind":"function","modifiers":[],"name":"_validate","nameLocation":"8368:9:41","nodeType":"FunctionDefinition","parameters":{"id":7527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7526,"mutability":"mutable","name":"orders","nameLocation":"8395:6:41","nodeType":"VariableDeclaration","scope":7665,"src":"8378:23:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order[]"},"typeName":{"baseType":{"id":7524,"nodeType":"UserDefinedTypeName","pathNode":{"id":7523,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":5372,"src":"8378:5:41"},"referencedDeclaration":5372,"src":"8378:5:41","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$5372_storage_ptr","typeString":"struct Order"}},"id":7525,"nodeType":"ArrayTypeName","src":"8378:7:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$5372_storage_$dyn_storage_ptr","typeString":"struct Order[]"}},"visibility":"internal"}],"src":"8377:25:41"},"returnParameters":{"id":7530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7529,"mutability":"mutable","name":"validated","nameLocation":"8442:9:41","nodeType":"VariableDeclaration","scope":7665,"src":"8437:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7528,"name":"bool","nodeType":"ElementaryTypeName","src":"8437:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8436:16:41"},"scope":7713,"src":"8359:3378:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7711,"nodeType":"Block","src":"12088:385:41","statements":[{"assignments":[7688],"declarations":[{"constant":false,"id":7688,"mutability":"mutable","name":"orderStatus","nameLocation":"12118:11:41","nodeType":"VariableDeclaration","scope":7711,"src":"12098:31:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":7687,"nodeType":"UserDefinedTypeName","pathNode":{"id":7686,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"12098:11:41"},"referencedDeclaration":5389,"src":"12098:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":7692,"initialValue":{"baseExpression":{"id":7689,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6907,"src":"12132:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$5389_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":7691,"indexExpression":{"id":7690,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"12145:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12132:23:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage","typeString":"struct OrderStatus storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12098:57:41"},{"expression":{"components":[{"expression":{"id":7693,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"12186:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7694,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":5374,"src":"12186:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7695,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"12223:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isCancelled","nodeType":"MemberAccess","referencedDeclaration":5376,"src":"12223:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7697,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"12260:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isFinalized","nodeType":"MemberAccess","referencedDeclaration":5378,"src":"12260:23:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7699,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"12297:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isBroken","nodeType":"MemberAccess","referencedDeclaration":5380,"src":"12297:20:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7701,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"12331:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fulfiller","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"12331:21:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7703,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"12366:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":5384,"src":"12366:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7705,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"12401:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":5386,"src":"12401:20:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7707,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"12435:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":7708,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"12435:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7709,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12172:294:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,bool,bool,bool,address,uint256,uint256,uint256)"}},"functionReturnParameters":7685,"id":7710,"nodeType":"Return","src":"12165:301:41"}]},"id":7712,"implemented":true,"kind":"function","modifiers":[],"name":"_getOrderStatus","nameLocation":"11752:15:41","nodeType":"FunctionDefinition","parameters":{"id":7668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7667,"mutability":"mutable","name":"orderHash","nameLocation":"11776:9:41","nodeType":"VariableDeclaration","scope":7712,"src":"11768:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7666,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11768:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11767:19:41"},"returnParameters":{"id":7685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7670,"mutability":"mutable","name":"isValidated","nameLocation":"11852:11:41","nodeType":"VariableDeclaration","scope":7712,"src":"11847:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7669,"name":"bool","nodeType":"ElementaryTypeName","src":"11847:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7672,"mutability":"mutable","name":"isCancelled","nameLocation":"11882:11:41","nodeType":"VariableDeclaration","scope":7712,"src":"11877:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7671,"name":"bool","nodeType":"ElementaryTypeName","src":"11877:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7674,"mutability":"mutable","name":"isFinalized","nameLocation":"11912:11:41","nodeType":"VariableDeclaration","scope":7712,"src":"11907:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7673,"name":"bool","nodeType":"ElementaryTypeName","src":"11907:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7676,"mutability":"mutable","name":"isBroken","nameLocation":"11942:8:41","nodeType":"VariableDeclaration","scope":7712,"src":"11937:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7675,"name":"bool","nodeType":"ElementaryTypeName","src":"11937:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7678,"mutability":"mutable","name":"fulfiller","nameLocation":"11972:9:41","nodeType":"VariableDeclaration","scope":7712,"src":"11964:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7677,"name":"address","nodeType":"ElementaryTypeName","src":"11964:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7680,"mutability":"mutable","name":"startedAt","nameLocation":"12003:9:41","nodeType":"VariableDeclaration","scope":7712,"src":"11995:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7679,"name":"uint256","nodeType":"ElementaryTypeName","src":"11995:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7682,"mutability":"mutable","name":"shadowId","nameLocation":"12034:8:41","nodeType":"VariableDeclaration","scope":7712,"src":"12026:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7681,"name":"uint256","nodeType":"ElementaryTypeName","src":"12026:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7684,"mutability":"mutable","name":"paidTimes","nameLocation":"12064:9:41","nodeType":"VariableDeclaration","scope":7712,"src":"12056:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7683,"name":"uint256","nodeType":"ElementaryTypeName","src":"12056:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11833:250:41"},"scope":7713,"src":"11743:730:41","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7714,"src":"297:12178:41","usedErrors":[4057,4061,4065,4069,4072,4079,4082,4087,4096,4099,4106,4109,4114,4119,4122,4125,4130,4133,4136,4139,4143,4147,4151,4155,4157,4246,4255,4258,4261,4264,4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"32:12444:41"},"id":41},"contracts/lib/ReentrancyGuard.sol":{"ast":{"absolutePath":"contracts/lib/ReentrancyGuard.sol","exportedSymbols":{"AccumulatorArmed":[5193],"AccumulatorDisarmed":[5190],"Accumulator_array_length_ptr":[5205],"Accumulator_array_offset":[5211],"Accumulator_array_offset_ptr":[5202],"Accumulator_conduitKey_ptr":[5196],"Accumulator_itemSizeOffsetDifference":[5208],"Accumulator_selector_ptr":[5199],"AdditionalRecipients_size":[4910],"AdvancedOrder_numerator_offset":[4862],"AlmostOneWord":[4865],"BadContractSignature_error_length":[5276],"BadContractSignature_error_signature":[5273],"BadSignatureV_error_length":[5255],"BadSignatureV_error_offset":[5252],"BadSignatureV_error_signature":[5249],"BasicOrder_additionalRecipients_data_cdPtr":[5001],"BasicOrder_additionalRecipients_head_cdPtr":[4992],"BasicOrder_additionalRecipients_head_ptr":[5061],"BasicOrder_additionalRecipients_length_cdPtr":[4998],"BasicOrder_basicOrderType_cdPtr":[4977],"BasicOrder_basicOrderType_range":[5007],"BasicOrder_common_params_size":[4901],"BasicOrder_considerationAmount_cdPtr":[4962],"BasicOrder_considerationHashesArray_ptr":[4904],"BasicOrder_considerationItem_endAmount_ptr":[5025],"BasicOrder_considerationItem_identifier_ptr":[5019],"BasicOrder_considerationItem_itemType_ptr":[5013],"BasicOrder_considerationItem_startAmount_ptr":[5022],"BasicOrder_considerationItem_token_ptr":[5016],"BasicOrder_considerationItem_typeHash_ptr":[5010],"BasicOrder_considerationToken_cdPtr":[4959],"BasicOrder_endAmount_cdPtr":[4898],"BasicOrder_fulfillerConduit_cdPtr":[4986],"BasicOrder_offerAmount_cdPtr":[4974],"BasicOrder_offerItem_endAmount_ptr":[5037],"BasicOrder_offerItem_itemType_ptr":[5031],"BasicOrder_offerItem_token_ptr":[5034],"BasicOrder_offerItem_typeHash_ptr":[5028],"BasicOrder_offerToken_cdPtr":[4971],"BasicOrder_offererConduit_cdPtr":[4983],"BasicOrder_offerer_cdPtr":[4965],"BasicOrder_order_considerationHashes_ptr":[5049],"BasicOrder_order_counter_ptr":[5058],"BasicOrder_order_offerHashes_ptr":[5046],"BasicOrder_order_offerer_ptr":[5043],"BasicOrder_order_orderType_ptr":[5052],"BasicOrder_order_startTime_ptr":[5055],"BasicOrder_order_typeHash_ptr":[5040],"BasicOrder_parameters_cdPtr":[4956],"BasicOrder_parameters_ptr":[5004],"BasicOrder_signature_cdPtr":[4995],"BasicOrder_signature_ptr":[5064],"BasicOrder_startTime_cdPtr":[4980],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[4989],"BasicOrder_zone_cdPtr":[4968],"Common_amount_offset":[4793],"Common_identifier_offset":[4790],"Common_token_offset":[4787],"Conduit_execute_ConduitTransfer_length":[5160],"Conduit_execute_ConduitTransfer_length_ptr":[5166],"Conduit_execute_ConduitTransfer_offset_ptr":[5163],"Conduit_execute_ConduitTransfer_ptr":[5157],"Conduit_execute_signature":[5148],"Conduit_execute_transferAmount_ptr":[5184],"Conduit_execute_transferFrom_ptr":[5175],"Conduit_execute_transferIdentifier_ptr":[5181],"Conduit_execute_transferItemType_ptr":[5169],"Conduit_execute_transferTo_ptr":[5178],"Conduit_execute_transferToken_ptr":[5172],"Conduit_transferItem_amount_ptr":[5229],"Conduit_transferItem_from_ptr":[5220],"Conduit_transferItem_identifier_ptr":[5226],"Conduit_transferItem_size":[5214],"Conduit_transferItem_to_ptr":[5223],"Conduit_transferItem_token_ptr":[5217],"ConsiderItem_recipient_offset":[4811],"ConsiderationItem_recipient_offset":[4808],"CostPerWord":[5123],"Create2AddressDerivation_length":[5132],"Create2AddressDerivation_ptr":[5129],"DefaultFreeMemoryPointer":[4889],"ECDSA_MaxLength":[5075],"ECDSA_signature_s_offset":[5078],"ECDSA_signature_v_offset":[5081],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[5072],"EIP1271_isValidSignature_calldata_baseLength":[5097],"EIP1271_isValidSignature_digest_negativeOffset":[5091],"EIP1271_isValidSignature_selector":[5085],"EIP1271_isValidSignature_selector_negativeOffset":[5094],"EIP1271_isValidSignature_signatureHead_negativeOffset":[5088],"EIP1271_isValidSignature_signature_head_offset":[5100],"EIP2098_allButHighestBitMask":[5068],"EIP712_DigestPayload_size":[4919],"EIP712_DomainSeparator_offset":[4913],"EIP712_OrderHash_offset":[4916],"EIP712_Order_size":[4907],"EIP_712_PREFIX":[5117],"Ecrecover_args_size":[5242],"Ecrecover_precompile":[5239],"Execution_conduit_offset":[4817],"Execution_offerer_offset":[4814],"ExtraGasBuffer":[5120],"FiveWords":[4880],"FourWords":[4877],"FreeMemoryPointerSlot":[4883],"Fulfillment_itemIndex_offset":[4859],"InexactFraction_error_len":[5236],"InexactFraction_error_signature":[5233],"InvalidFulfillmentComponentData_error_len":[4824],"InvalidFulfillmentComponentData_error_signature":[4821],"InvalidSignature_error_length":[5269],"InvalidSignature_error_signature":[5266],"InvalidSigner_error_length":[5262],"InvalidSigner_error_signature":[5259],"MaskOverByteTwelve":[5136],"MaskOverFirstFourBytes":[5144],"MaskOverLastTwentyBytes":[5140],"MaxUint120":[5154],"MaxUint8":[5151],"MemoryExpansionCoefficient":[5126],"MissingItemAmount_error_len":[4844],"MissingItemAmount_error_signature":[4841],"NameLengthPtr":[4766],"NameWithLength":[4769],"NoContract_error_length":[5113],"NoContract_error_sig_ptr":[5107],"NoContract_error_signature":[5104],"NoContract_error_token_ptr":[5110],"NonMatchSelector_MagicModulus":[5282],"NonMatchSelector_MagicRemainder":[5285],"NumBitsAfterSelector":[5279],"OneConduitExecute_size":[5187],"OneWord":[4868],"OrderFulfilled_baseOffset":[4932],"OrderFulfilled_baseSize":[4925],"OrderFulfilled_consideration_body_offset":[4953],"OrderFulfilled_consideration_head_offset":[4950],"OrderFulfilled_consideration_length_baseOffset":[4935],"OrderFulfilled_fulfiller_offset":[4941],"OrderFulfilled_offer_body_offset":[4947],"OrderFulfilled_offer_head_offset":[4944],"OrderFulfilled_offer_length_baseOffset":[4938],"OrderFulfilled_selector":[4929],"OrderParameters_conduit_offset":[4853],"OrderParameters_consideration_head_offset":[4850],"OrderParameters_counter_offset":[4856],"OrderParameters_offer_head_offset":[4847],"Panic_arithmetic":[4837],"Panic_error_length":[4834],"Panic_error_offset":[4831],"Panic_error_signature":[4828],"ReceivedItem_CommonParams_size":[4805],"ReceivedItem_amount_offset":[4799],"ReceivedItem_recipient_offset":[4802],"ReceivedItem_size":[4796],"ReentrancyErrors":[4247],"ReentrancyGuard":[7767],"Signature_lower_v":[5245],"Slot0x80":[4892],"Slot0xA0":[4895],"ThreeWords":[4874],"TwoWords":[4871],"Version":[4772],"Version_length":[4775],"Version_shift":[4778],"ZeroSlot":[4886],"_ENTERED":[4784],"_NOT_ENTERED":[4781],"receivedItemsHash_ptr":[4922]},"id":7768,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7715,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:42"},{"absolutePath":"contracts/interfaces/ReentrancyErrors.sol","file":"../interfaces/ReentrancyErrors.sol","id":7717,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7768,"sourceUnit":4248,"src":"58:70:42","symbolAliases":[{"foreign":{"id":7716,"name":"ReentrancyErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"67:16:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":7718,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7768,"sourceUnit":5286,"src":"130:38:42","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7720,"name":"ReentrancyErrors","nodeType":"IdentifierPath","referencedDeclaration":4247,"src":"375:16:42"},"id":7721,"nodeType":"InheritanceSpecifier","src":"375:16:42"}],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","documentation":{"id":7719,"nodeType":"StructuredDocumentation","src":"170:176:42","text":" @title ReentrancyGuard\n @author 0age\n @notice ReentrancyGuard contains a storage variable and related functionality\n         for protecting against reentrancy."},"fullyImplemented":true,"id":7767,"linearizedBaseContracts":[7767,4247],"name":"ReentrancyGuard","nameLocation":"356:15:42","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7723,"mutability":"mutable","name":"_reentrancyGuard","nameLocation":"469:16:42","nodeType":"VariableDeclaration","scope":7767,"src":"453:32:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7722,"name":"uint256","nodeType":"ElementaryTypeName","src":"453:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":7731,"nodeType":"Block","src":"585:111:42","statements":[{"expression":{"id":7729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7727,"name":"_reentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"658:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7728,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"677:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"658:31:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7730,"nodeType":"ExpressionStatement","src":"658:31:42"}]},"documentation":{"id":7724,"nodeType":"StructuredDocumentation","src":"492:74:42","text":" @dev Initialize the reentrancy guard during deployment."},"id":7732,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7725,"nodeType":"ParameterList","parameters":[],"src":"582:2:42"},"returnParameters":{"id":7726,"nodeType":"ParameterList","parameters":[],"src":"585:0:42"},"scope":7767,"src":"571:125:42","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7743,"nodeType":"Block","src":"957:177:42","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7736,"name":"_assertNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"1031:19:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":7737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1031:21:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7738,"nodeType":"ExpressionStatement","src":"1031:21:42"},{"expression":{"id":7741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7739,"name":"_reentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"1100:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7740,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4784,"src":"1119:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1100:27:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7742,"nodeType":"ExpressionStatement","src":"1100:27:42"}]},"documentation":{"id":7733,"nodeType":"StructuredDocumentation","src":"702:210:42","text":" @dev Internal function to ensure that the sentinel value for the\n      reentrancy guard is not currently set and, if not, to set the\n      sentinel value for the reentrancy guard."},"id":7744,"implemented":true,"kind":"function","modifiers":[],"name":"_setReentrancyGuard","nameLocation":"926:19:42","nodeType":"FunctionDefinition","parameters":{"id":7734,"nodeType":"ParameterList","parameters":[],"src":"945:2:42"},"returnParameters":{"id":7735,"nodeType":"ParameterList","parameters":[],"src":"957:0:42"},"scope":7767,"src":"917:217:42","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7752,"nodeType":"Block","src":"1274:87:42","statements":[{"expression":{"id":7750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7748,"name":"_reentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"1323:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7749,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"1342:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1323:31:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7751,"nodeType":"ExpressionStatement","src":"1323:31:42"}]},"documentation":{"id":7745,"nodeType":"StructuredDocumentation","src":"1140:87:42","text":" @dev Internal function to unset the reentrancy guard sentinel value."},"id":7753,"implemented":true,"kind":"function","modifiers":[],"name":"_clearReentrancyGuard","nameLocation":"1241:21:42","nodeType":"FunctionDefinition","parameters":{"id":7746,"nodeType":"ParameterList","parameters":[],"src":"1262:2:42"},"returnParameters":{"id":7747,"nodeType":"ParameterList","parameters":[],"src":"1274:0:42"},"scope":7767,"src":"1232:129:42","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7765,"nodeType":"Block","src":"1556:170:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7757,"name":"_reentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"1636:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7758,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"1656:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1636:32:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7764,"nodeType":"IfStatement","src":"1632:88:42","trueBody":{"id":7763,"nodeType":"Block","src":"1670:50:42","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7760,"name":"NoReentrantCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4246,"src":"1691:16:42","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1691:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7762,"nodeType":"RevertStatement","src":"1684:25:42"}]}}]},"documentation":{"id":7754,"nodeType":"StructuredDocumentation","src":"1367:139:42","text":" @dev Internal view function to ensure that the sentinel value for the\nreentrancy guard is not currently set."},"id":7766,"implemented":true,"kind":"function","modifiers":[],"name":"_assertNonReentrant","nameLocation":"1520:19:42","nodeType":"FunctionDefinition","parameters":{"id":7755,"nodeType":"ParameterList","parameters":[],"src":"1539:2:42"},"returnParameters":{"id":7756,"nodeType":"ParameterList","parameters":[],"src":"1556:0:42"},"scope":7767,"src":"1511:215:42","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7768,"src":"347:1381:42","usedErrors":[4246]}],"src":"32:1697:42"},"id":42},"contracts/lib/Shadow.sol":{"ast":{"absolutePath":"contracts/lib/Shadow.sol","exportedSymbols":{"IERC4907A":[10558],"IMintBurnableERC4907":[7788],"Shadow":[7881]},"id":7882,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7769,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:43"},{"absolutePath":"erc721a/contracts/extensions/IERC4907A.sol","file":"erc721a/contracts/extensions/IERC4907A.sol","id":7771,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7882,"sourceUnit":10559,"src":"58:71:43","symbolAliases":[{"foreign":{"id":7770,"name":"IERC4907A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10558,"src":"67:9:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IMintBurnableERC4907","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":7788,"linearizedBaseContracts":[7788],"name":"IMintBurnableERC4907","nameLocation":"141:20:43","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c6c3bbe6","id":7782,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"177:4:43","nodeType":"FunctionDefinition","parameters":{"id":7778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7773,"mutability":"mutable","name":"to","nameLocation":"190:2:43","nodeType":"VariableDeclaration","scope":7782,"src":"182:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7772,"name":"address","nodeType":"ElementaryTypeName","src":"182:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7775,"mutability":"mutable","name":"tokenAddress","nameLocation":"202:12:43","nodeType":"VariableDeclaration","scope":7782,"src":"194:20:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7774,"name":"address","nodeType":"ElementaryTypeName","src":"194:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7777,"mutability":"mutable","name":"tokenId","nameLocation":"224:7:43","nodeType":"VariableDeclaration","scope":7782,"src":"216:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7776,"name":"uint256","nodeType":"ElementaryTypeName","src":"216:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"181:51:43"},"returnParameters":{"id":7781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7782,"src":"251:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7779,"name":"uint256","nodeType":"ElementaryTypeName","src":"251:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"250:9:43"},"scope":7788,"src":"168:92:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"42966c68","id":7787,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"274:4:43","nodeType":"FunctionDefinition","parameters":{"id":7785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7784,"mutability":"mutable","name":"tokenId","nameLocation":"287:7:43","nodeType":"VariableDeclaration","scope":7787,"src":"279:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7783,"name":"uint256","nodeType":"ElementaryTypeName","src":"279:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"278:17:43"},"returnParameters":{"id":7786,"nodeType":"ParameterList","parameters":[],"src":"304:0:43"},"scope":7788,"src":"265:40:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7882,"src":"131:176:43","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"Shadow","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":7881,"linearizedBaseContracts":[7881],"name":"Shadow","nameLocation":"318:6:43","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"ffc5d97a","id":7790,"mutability":"immutable","name":"shadowToken","nameLocation":"361:11:43","nodeType":"VariableDeclaration","scope":7881,"src":"336:36:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7789,"name":"address","nodeType":"ElementaryTypeName","src":"336:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":7799,"nodeType":"Block","src":"407:37:43","statements":[{"expression":{"id":7797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7795,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"417:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7796,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"431:6:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"417:20:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7798,"nodeType":"ExpressionStatement","src":"417:20:43"}]},"id":7800,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7792,"mutability":"mutable","name":"_token","nameLocation":"399:6:43","nodeType":"VariableDeclaration","scope":7800,"src":"391:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7791,"name":"address","nodeType":"ElementaryTypeName","src":"391:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"390:16:43"},"returnParameters":{"id":7794,"nodeType":"ParameterList","parameters":[],"src":"407:0:43"},"scope":7881,"src":"379:65:43","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7844,"nodeType":"Block","src":"600:208:43","statements":[{"assignments":[7814],"declarations":[{"constant":false,"id":7814,"mutability":"mutable","name":"tid","nameLocation":"618:3:43","nodeType":"VariableDeclaration","scope":7844,"src":"610:11:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7813,"name":"uint256","nodeType":"ElementaryTypeName","src":"610:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7826,"initialValue":{"arguments":[{"arguments":[{"id":7821,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"671:4:43","typeDescriptions":{"typeIdentifier":"t_contract$_Shadow_$7881","typeString":"contract Shadow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Shadow_$7881","typeString":"contract Shadow"}],"id":7820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"663:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7819,"name":"address","nodeType":"ElementaryTypeName","src":"663:7:43","typeDescriptions":{}}},"id":7822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"663:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7823,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7804,"src":"678:5:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7824,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7806,"src":"685:10:43","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":7816,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"645:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7815,"name":"IMintBurnableERC4907","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7788,"src":"624:20:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMintBurnableERC4907_$7788_$","typeString":"type(contract IMintBurnableERC4907)"}},"id":7817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"624:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMintBurnableERC4907_$7788","typeString":"contract IMintBurnableERC4907"}},"id":7818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":7782,"src":"624:38:43","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) external returns (uint256)"}},"id":7825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"624:72:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"610:86:43"},{"expression":{"arguments":[{"id":7831,"name":"tid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7814,"src":"737:3:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7832,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7802,"src":"742:2:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7835,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7808,"src":"753:8:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":7836,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"764:5:43","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"764:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"753:26:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"746:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":7833,"name":"uint64","nodeType":"ElementaryTypeName","src":"746:6:43","typeDescriptions":{}}},"id":7839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"746:34:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"arguments":[{"id":7828,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"716:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7827,"name":"IERC4907A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10558,"src":"706:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4907A_$10558_$","typeString":"type(contract IERC4907A)"}},"id":7829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"706:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4907A_$10558","typeString":"contract IERC4907A"}},"id":7830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setUser","nodeType":"MemberAccess","referencedDeclaration":10541,"src":"706:30:43","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint64_$returns$__$","typeString":"function (uint256,address,uint64) external"}},"id":7840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"706:75:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7841,"nodeType":"ExpressionStatement","src":"706:75:43"},{"expression":{"id":7842,"name":"tid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7814,"src":"798:3:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7812,"id":7843,"nodeType":"Return","src":"791:10:43"}]},"id":7845,"implemented":true,"kind":"function","modifiers":[],"name":"_mintToken","nameLocation":"459:10:43","nodeType":"FunctionDefinition","parameters":{"id":7809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7802,"mutability":"mutable","name":"to","nameLocation":"487:2:43","nodeType":"VariableDeclaration","scope":7845,"src":"479:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7801,"name":"address","nodeType":"ElementaryTypeName","src":"479:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7804,"mutability":"mutable","name":"token","nameLocation":"507:5:43","nodeType":"VariableDeclaration","scope":7845,"src":"499:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7803,"name":"address","nodeType":"ElementaryTypeName","src":"499:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7806,"mutability":"mutable","name":"identifier","nameLocation":"530:10:43","nodeType":"VariableDeclaration","scope":7845,"src":"522:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7805,"name":"uint256","nodeType":"ElementaryTypeName","src":"522:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7808,"mutability":"mutable","name":"duration","nameLocation":"558:8:43","nodeType":"VariableDeclaration","scope":7845,"src":"550:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7807,"name":"uint256","nodeType":"ElementaryTypeName","src":"550:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"469:103:43"},"returnParameters":{"id":7812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7845,"src":"591:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7810,"name":"uint256","nodeType":"ElementaryTypeName","src":"591:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"590:9:43"},"scope":7881,"src":"450:358:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7866,"nodeType":"Block","src":"891:77:43","statements":[{"expression":{"arguments":[{"id":7858,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"932:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7859,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7847,"src":"941:2:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7862,"name":"expires","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7851,"src":"952:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"945:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":7860,"name":"uint64","nodeType":"ElementaryTypeName","src":"945:6:43","typeDescriptions":{}}},"id":7863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"945:15:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"arguments":[{"id":7855,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"911:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7854,"name":"IERC4907A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10558,"src":"901:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4907A_$10558_$","typeString":"type(contract IERC4907A)"}},"id":7856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"901:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4907A_$10558","typeString":"contract IERC4907A"}},"id":7857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setUser","nodeType":"MemberAccess","referencedDeclaration":10541,"src":"901:30:43","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint64_$returns$__$","typeString":"function (uint256,address,uint64) external"}},"id":7864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"901:60:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7865,"nodeType":"ExpressionStatement","src":"901:60:43"}]},"id":7867,"implemented":true,"kind":"function","modifiers":[],"name":"_extendToken","nameLocation":"823:12:43","nodeType":"FunctionDefinition","parameters":{"id":7852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7847,"mutability":"mutable","name":"to","nameLocation":"844:2:43","nodeType":"VariableDeclaration","scope":7867,"src":"836:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7846,"name":"address","nodeType":"ElementaryTypeName","src":"836:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7849,"mutability":"mutable","name":"tokenId","nameLocation":"856:7:43","nodeType":"VariableDeclaration","scope":7867,"src":"848:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7848,"name":"uint256","nodeType":"ElementaryTypeName","src":"848:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7851,"mutability":"mutable","name":"expires","nameLocation":"873:7:43","nodeType":"VariableDeclaration","scope":7867,"src":"865:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7850,"name":"uint256","nodeType":"ElementaryTypeName","src":"865:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"835:46:43"},"returnParameters":{"id":7853,"nodeType":"ParameterList","parameters":[],"src":"891:0:43"},"scope":7881,"src":"814:154:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7879,"nodeType":"Block","src":"1020:64:43","statements":[{"expression":{"arguments":[{"id":7876,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7869,"src":"1069:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7873,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7790,"src":"1051:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7872,"name":"IMintBurnableERC4907","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7788,"src":"1030:20:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMintBurnableERC4907_$7788_$","typeString":"type(contract IMintBurnableERC4907)"}},"id":7874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1030:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMintBurnableERC4907_$7788","typeString":"contract IMintBurnableERC4907"}},"id":7875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":7787,"src":"1030:38:43","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":7877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1030:47:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7878,"nodeType":"ExpressionStatement","src":"1030:47:43"}]},"id":7880,"implemented":true,"kind":"function","modifiers":[],"name":"_burnToken","nameLocation":"983:10:43","nodeType":"FunctionDefinition","parameters":{"id":7870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7869,"mutability":"mutable","name":"tokenId","nameLocation":"1002:7:43","nodeType":"VariableDeclaration","scope":7880,"src":"994:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7868,"name":"uint256","nodeType":"ElementaryTypeName","src":"994:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"993:17:43"},"returnParameters":{"id":7871,"nodeType":"ParameterList","parameters":[],"src":"1020:0:43"},"scope":7881,"src":"974:110:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":7882,"src":"309:777:43","usedErrors":[]}],"src":"32:1054:43"},"id":43},"contracts/lib/SignatureVerification.sol":{"ast":{"absolutePath":"contracts/lib/SignatureVerification.sol","exportedSymbols":{"AccumulatorArmed":[5193],"AccumulatorDisarmed":[5190],"Accumulator_array_length_ptr":[5205],"Accumulator_array_offset":[5211],"Accumulator_array_offset_ptr":[5202],"Accumulator_conduitKey_ptr":[5196],"Accumulator_itemSizeOffsetDifference":[5208],"Accumulator_selector_ptr":[5199],"AdditionalRecipients_size":[4910],"AdvancedOrder_numerator_offset":[4862],"AlmostOneWord":[4865],"BadContractSignature_error_length":[5276],"BadContractSignature_error_signature":[5273],"BadSignatureV_error_length":[5255],"BadSignatureV_error_offset":[5252],"BadSignatureV_error_signature":[5249],"BasicOrder_additionalRecipients_data_cdPtr":[5001],"BasicOrder_additionalRecipients_head_cdPtr":[4992],"BasicOrder_additionalRecipients_head_ptr":[5061],"BasicOrder_additionalRecipients_length_cdPtr":[4998],"BasicOrder_basicOrderType_cdPtr":[4977],"BasicOrder_basicOrderType_range":[5007],"BasicOrder_common_params_size":[4901],"BasicOrder_considerationAmount_cdPtr":[4962],"BasicOrder_considerationHashesArray_ptr":[4904],"BasicOrder_considerationItem_endAmount_ptr":[5025],"BasicOrder_considerationItem_identifier_ptr":[5019],"BasicOrder_considerationItem_itemType_ptr":[5013],"BasicOrder_considerationItem_startAmount_ptr":[5022],"BasicOrder_considerationItem_token_ptr":[5016],"BasicOrder_considerationItem_typeHash_ptr":[5010],"BasicOrder_considerationToken_cdPtr":[4959],"BasicOrder_endAmount_cdPtr":[4898],"BasicOrder_fulfillerConduit_cdPtr":[4986],"BasicOrder_offerAmount_cdPtr":[4974],"BasicOrder_offerItem_endAmount_ptr":[5037],"BasicOrder_offerItem_itemType_ptr":[5031],"BasicOrder_offerItem_token_ptr":[5034],"BasicOrder_offerItem_typeHash_ptr":[5028],"BasicOrder_offerToken_cdPtr":[4971],"BasicOrder_offererConduit_cdPtr":[4983],"BasicOrder_offerer_cdPtr":[4965],"BasicOrder_order_considerationHashes_ptr":[5049],"BasicOrder_order_counter_ptr":[5058],"BasicOrder_order_offerHashes_ptr":[5046],"BasicOrder_order_offerer_ptr":[5043],"BasicOrder_order_orderType_ptr":[5052],"BasicOrder_order_startTime_ptr":[5055],"BasicOrder_order_typeHash_ptr":[5040],"BasicOrder_parameters_cdPtr":[4956],"BasicOrder_parameters_ptr":[5004],"BasicOrder_signature_cdPtr":[4995],"BasicOrder_signature_ptr":[5064],"BasicOrder_startTime_cdPtr":[4980],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[4989],"BasicOrder_zone_cdPtr":[4968],"Common_amount_offset":[4793],"Common_identifier_offset":[4790],"Common_token_offset":[4787],"Conduit_execute_ConduitTransfer_length":[5160],"Conduit_execute_ConduitTransfer_length_ptr":[5166],"Conduit_execute_ConduitTransfer_offset_ptr":[5163],"Conduit_execute_ConduitTransfer_ptr":[5157],"Conduit_execute_signature":[5148],"Conduit_execute_transferAmount_ptr":[5184],"Conduit_execute_transferFrom_ptr":[5175],"Conduit_execute_transferIdentifier_ptr":[5181],"Conduit_execute_transferItemType_ptr":[5169],"Conduit_execute_transferTo_ptr":[5178],"Conduit_execute_transferToken_ptr":[5172],"Conduit_transferItem_amount_ptr":[5229],"Conduit_transferItem_from_ptr":[5220],"Conduit_transferItem_identifier_ptr":[5226],"Conduit_transferItem_size":[5214],"Conduit_transferItem_to_ptr":[5223],"Conduit_transferItem_token_ptr":[5217],"ConsiderItem_recipient_offset":[4811],"ConsiderationItem_recipient_offset":[4808],"CostPerWord":[5123],"Create2AddressDerivation_length":[5132],"Create2AddressDerivation_ptr":[5129],"DefaultFreeMemoryPointer":[4889],"ECDSA_MaxLength":[5075],"ECDSA_signature_s_offset":[5078],"ECDSA_signature_v_offset":[5081],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[5072],"EIP1271Interface":[4170],"EIP1271_isValidSignature_calldata_baseLength":[5097],"EIP1271_isValidSignature_digest_negativeOffset":[5091],"EIP1271_isValidSignature_selector":[5085],"EIP1271_isValidSignature_selector_negativeOffset":[5094],"EIP1271_isValidSignature_signatureHead_negativeOffset":[5088],"EIP1271_isValidSignature_signature_head_offset":[5100],"EIP2098_allButHighestBitMask":[5068],"EIP712_DigestPayload_size":[4919],"EIP712_DomainSeparator_offset":[4913],"EIP712_OrderHash_offset":[4916],"EIP712_Order_size":[4907],"EIP_712_PREFIX":[5117],"Ecrecover_args_size":[5242],"Ecrecover_precompile":[5239],"Execution_conduit_offset":[4817],"Execution_offerer_offset":[4814],"ExtraGasBuffer":[5120],"FiveWords":[4880],"FourWords":[4877],"FreeMemoryPointerSlot":[4883],"Fulfillment_itemIndex_offset":[4859],"InexactFraction_error_len":[5236],"InexactFraction_error_signature":[5233],"InvalidFulfillmentComponentData_error_len":[4824],"InvalidFulfillmentComponentData_error_signature":[4821],"InvalidSignature_error_length":[5269],"InvalidSignature_error_signature":[5266],"InvalidSigner_error_length":[5262],"InvalidSigner_error_signature":[5259],"LowLevelHelpers":[6071],"MaskOverByteTwelve":[5136],"MaskOverFirstFourBytes":[5144],"MaskOverLastTwentyBytes":[5140],"MaxUint120":[5154],"MaxUint8":[5151],"MemoryExpansionCoefficient":[5126],"MissingItemAmount_error_len":[4844],"MissingItemAmount_error_signature":[4841],"NameLengthPtr":[4766],"NameWithLength":[4769],"NoContract_error_length":[5113],"NoContract_error_sig_ptr":[5107],"NoContract_error_signature":[5104],"NoContract_error_token_ptr":[5110],"NonMatchSelector_MagicModulus":[5282],"NonMatchSelector_MagicRemainder":[5285],"NumBitsAfterSelector":[5279],"OneConduitExecute_size":[5187],"OneWord":[4868],"OrderFulfilled_baseOffset":[4932],"OrderFulfilled_baseSize":[4925],"OrderFulfilled_consideration_body_offset":[4953],"OrderFulfilled_consideration_head_offset":[4950],"OrderFulfilled_consideration_length_baseOffset":[4935],"OrderFulfilled_fulfiller_offset":[4941],"OrderFulfilled_offer_body_offset":[4947],"OrderFulfilled_offer_head_offset":[4944],"OrderFulfilled_offer_length_baseOffset":[4938],"OrderFulfilled_selector":[4929],"OrderParameters_conduit_offset":[4853],"OrderParameters_consideration_head_offset":[4850],"OrderParameters_counter_offset":[4856],"OrderParameters_offer_head_offset":[4847],"Panic_arithmetic":[4837],"Panic_error_length":[4834],"Panic_error_offset":[4831],"Panic_error_signature":[4828],"ReceivedItem_CommonParams_size":[4805],"ReceivedItem_amount_offset":[4799],"ReceivedItem_recipient_offset":[4802],"ReceivedItem_size":[4796],"SignatureVerification":[7919],"SignatureVerificationErrors":[4265],"Signature_lower_v":[5245],"Slot0x80":[4892],"Slot0xA0":[4895],"ThreeWords":[4874],"TwoWords":[4871],"Version":[4772],"Version_length":[4775],"Version_shift":[4778],"ZeroSlot":[4886],"_ENTERED":[4784],"_NOT_ENTERED":[4781],"receivedItemsHash_ptr":[4922]},"id":7920,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7883,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:44"},{"absolutePath":"contracts/interfaces/EIP1271Interface.sol","file":"../interfaces/EIP1271Interface.sol","id":7885,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7920,"sourceUnit":4171,"src":"58:70:44","symbolAliases":[{"foreign":{"id":7884,"name":"EIP1271Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4170,"src":"67:16:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/SignatureVerificationErrors.sol","file":"../interfaces/SignatureVerificationErrors.sol","id":7887,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7920,"sourceUnit":4266,"src":"130:96:44","symbolAliases":[{"foreign":{"id":7886,"name":"SignatureVerificationErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"143:27:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/LowLevelHelpers.sol","file":"./LowLevelHelpers.sol","id":7889,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7920,"sourceUnit":6072,"src":"228:56:44","symbolAliases":[{"foreign":{"id":7888,"name":"LowLevelHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6071,"src":"237:15:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":7890,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7920,"sourceUnit":5286,"src":"286:38:44","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7892,"name":"SignatureVerificationErrors","nodeType":"IdentifierPath","referencedDeclaration":4265,"src":"490:27:44"},"id":7893,"nodeType":"InheritanceSpecifier","src":"490:27:44"},{"baseName":{"id":7894,"name":"LowLevelHelpers","nodeType":"IdentifierPath","referencedDeclaration":6071,"src":"519:15:44"},"id":7895,"nodeType":"InheritanceSpecifier","src":"519:15:44"}],"canonicalName":"SignatureVerification","contractDependencies":[],"contractKind":"contract","documentation":{"id":7891,"nodeType":"StructuredDocumentation","src":"326:129:44","text":" @title SignatureVerification\n @author 0age\n @notice SignatureVerification contains logic for verifying signatures."},"fullyImplemented":true,"id":7919,"linearizedBaseContracts":[7919,6071,4265],"name":"SignatureVerification","nameLocation":"465:21:44","nodeType":"ContractDefinition","nodes":[{"body":{"id":7917,"nodeType":"Block","src":"1197:9788:44","statements":[{"assignments":[7906],"declarations":[{"constant":false,"id":7906,"mutability":"mutable","name":"success","nameLocation":"1289:7:44","nodeType":"VariableDeclaration","scope":7917,"src":"1284:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7905,"name":"bool","nodeType":"ElementaryTypeName","src":"1284:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7907,"nodeType":"VariableDeclarationStatement","src":"1284:12:44"},{"AST":{"nodeType":"YulBlock","src":"1395:9161:44","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1481:1:44","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1484:1:44","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1474:6:44"},"nodeType":"YulFunctionCall","src":"1474:12:44"},"nodeType":"YulExpressionStatement","src":"1474:12:44"},{"nodeType":"YulVariableDeclaration","src":"1556:5:44","variables":[{"name":"v","nodeType":"YulTypedName","src":"1560:1:44","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1623:39:44","value":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"1652:9:44"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1646:5:44"},"nodeType":"YulFunctionCall","src":"1646:16:44"},"variables":[{"name":"signatureLength","nodeType":"YulTypedName","src":"1627:15:44","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1909:53:44","value":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"1943:9:44"},{"name":"OneWord","nodeType":"YulIdentifier","src":"1954:7:44"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1939:3:44"},"nodeType":"YulFunctionCall","src":"1939:23:44"},"variables":[{"name":"wordBeforeSignaturePtr","nodeType":"YulTypedName","src":"1913:22:44","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2057:62:44","value":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"2096:22:44"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2090:5:44"},"nodeType":"YulFunctionCall","src":"2090:29:44"},"variables":[{"name":"cachedWordBeforeSignature","nodeType":"YulTypedName","src":"2061:25:44","type":""}]},{"nodeType":"YulBlock","src":"2214:4296:44","statements":[{"nodeType":"YulVariableDeclaration","src":"2527:52:44","value":{"arguments":[{"name":"ECDSA_MaxLength","nodeType":"YulIdentifier","src":"2546:15:44"},{"name":"signatureLength","nodeType":"YulIdentifier","src":"2563:15:44"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2542:3:44"},"nodeType":"YulFunctionCall","src":"2542:37:44"},"variables":[{"name":"lenDiff","nodeType":"YulTypedName","src":"2531:7:44","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2655:19:44","variables":[{"name":"recoveredSigner","nodeType":"YulTypedName","src":"2659:15:44","type":""}]},{"body":{"nodeType":"YulBlock","src":"2828:3356:44","statements":[{"nodeType":"YulVariableDeclaration","src":"2903:119:44","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2964:9:44"},{"name":"ECDSA_signature_s_offset","nodeType":"YulIdentifier","src":"2975:24:44"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2960:3:44"},"nodeType":"YulFunctionCall","src":"2960:40:44"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2929:5:44"},"nodeType":"YulFunctionCall","src":"2929:93:44"},"variables":[{"name":"originalSignatureS","nodeType":"YulTypedName","src":"2907:18:44","type":""}]},{"nodeType":"YulAssignment","src":"3324:131:44","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3359:1:44","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3396:9:44"},{"name":"ECDSA_signature_v_offset","nodeType":"YulIdentifier","src":"3407:24:44"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3392:3:44"},"nodeType":"YulFunctionCall","src":"3392:40:44"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3386:5:44"},"nodeType":"YulFunctionCall","src":"3386:47:44"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"3329:4:44"},"nodeType":"YulFunctionCall","src":"3329:126:44"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"3324:1:44"}]},{"body":{"nodeType":"YulBlock","src":"3562:809:44","statements":[{"nodeType":"YulAssignment","src":"3702:144:44","value":{"arguments":[{"arguments":[{"name":"MaxUint8","nodeType":"YulIdentifier","src":"3744:8:44"},{"name":"originalSignatureS","nodeType":"YulIdentifier","src":"3754:18:44"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3740:3:44"},"nodeType":"YulFunctionCall","src":"3740:33:44"},{"name":"Signature_lower_v","nodeType":"YulIdentifier","src":"3803:17:44"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3707:3:44"},"nodeType":"YulFunctionCall","src":"3707:139:44"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"3702:1:44"}]},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4110:9:44"},{"name":"ECDSA_signature_s_offset","nodeType":"YulIdentifier","src":"4121:24:44"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4106:3:44"},"nodeType":"YulFunctionCall","src":"4106:40:44"},{"arguments":[{"name":"originalSignatureS","nodeType":"YulIdentifier","src":"4213:18:44"},{"name":"EIP2098_allButHighestBitMask","nodeType":"YulIdentifier","src":"4265:28:44"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4176:3:44"},"nodeType":"YulFunctionCall","src":"4176:147:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4070:6:44"},"nodeType":"YulFunctionCall","src":"4070:279:44"},"nodeType":"YulExpressionStatement","src":"4070:279:44"}]},"condition":{"name":"lenDiff","nodeType":"YulIdentifier","src":"3554:7:44"},"nodeType":"YulIf","src":"3551:820:44"},{"expression":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4545:9:44"},{"name":"v","nodeType":"YulIdentifier","src":"4556:1:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4538:6:44"},"nodeType":"YulFunctionCall","src":"4538:20:44"},"nodeType":"YulExpressionStatement","src":"4538:20:44"},{"expression":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"4744:22:44"},{"name":"digest","nodeType":"YulIdentifier","src":"4768:6:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4737:6:44"},"nodeType":"YulFunctionCall","src":"4737:38:44"},"nodeType":"YulExpressionStatement","src":"4737:38:44"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"5088:3:44"},"nodeType":"YulFunctionCall","src":"5088:5:44"},{"name":"Ecrecover_precompile","nodeType":"YulIdentifier","src":"5123:20:44"},{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"5203:22:44"},{"name":"Ecrecover_args_size","nodeType":"YulIdentifier","src":"5284:19:44"},{"kind":"number","nodeType":"YulLiteral","src":"5365:1:44","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"5430:7:44"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"5048:10:44"},"nodeType":"YulFunctionCall","src":"5048:451:44"}],"functionName":{"name":"pop","nodeType":"YulIdentifier","src":"5019:3:44"},"nodeType":"YulFunctionCall","src":"5019:502:44"},"nodeType":"YulExpressionStatement","src":"5019:502:44"},{"expression":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"5611:22:44"},{"name":"cachedWordBeforeSignature","nodeType":"YulIdentifier","src":"5635:25:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5604:6:44"},"nodeType":"YulFunctionCall","src":"5604:57:44"},"nodeType":"YulExpressionStatement","src":"5604:57:44"},{"expression":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"5746:9:44"},{"name":"signatureLength","nodeType":"YulIdentifier","src":"5757:15:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5739:6:44"},"nodeType":"YulFunctionCall","src":"5739:34:44"},"nodeType":"YulExpressionStatement","src":"5739:34:44"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"5890:9:44"},{"name":"ECDSA_signature_s_offset","nodeType":"YulIdentifier","src":"5901:24:44"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5886:3:44"},"nodeType":"YulFunctionCall","src":"5886:40:44"},{"name":"originalSignatureS","nodeType":"YulIdentifier","src":"5952:18:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5854:6:44"},"nodeType":"YulFunctionCall","src":"5854:138:44"},"nodeType":"YulExpressionStatement","src":"5854:138:44"},{"nodeType":"YulAssignment","src":"6139:27:44","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6164:1:44","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6158:5:44"},"nodeType":"YulFunctionCall","src":"6158:8:44"},"variableNames":[{"name":"recoveredSigner","nodeType":"YulIdentifier","src":"6139:15:44"}]}]},"condition":{"arguments":[{"arguments":[{"name":"lenDiff","nodeType":"YulIdentifier","src":"2815:7:44"},{"kind":"number","nodeType":"YulLiteral","src":"2824:1:44","type":"","value":"1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2812:2:44"},"nodeType":"YulFunctionCall","src":"2812:14:44"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2805:6:44"},"nodeType":"YulFunctionCall","src":"2805:22:44"},"nodeType":"YulIf","src":"2802:3382:44"},{"nodeType":"YulAssignment","src":"6438:58:44","value":{"arguments":[{"arguments":[{"name":"signer","nodeType":"YulIdentifier","src":"6456:6:44"},{"name":"recoveredSigner","nodeType":"YulIdentifier","src":"6464:15:44"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6453:2:44"},"nodeType":"YulFunctionCall","src":"6453:27:44"},{"arguments":[{"name":"signer","nodeType":"YulIdentifier","src":"6485:6:44"},{"kind":"number","nodeType":"YulLiteral","src":"6493:1:44","type":"","value":"0"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6482:2:44"},"nodeType":"YulFunctionCall","src":"6482:13:44"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6449:3:44"},"nodeType":"YulFunctionCall","src":"6449:47:44"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"6438:7:44"}]}]},{"body":{"nodeType":"YulBlock","src":"6621:3925:44","statements":[{"expression":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"6877:22:44"},{"name":"EIP1271_isValidSignature_signature_head_offset","nodeType":"YulIdentifier","src":"6921:46:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6849:6:44"},"nodeType":"YulFunctionCall","src":"6849:136:44"},"nodeType":"YulExpressionStatement","src":"6849:136:44"},{"nodeType":"YulVariableDeclaration","src":"7081:141:44","value":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"7125:9:44"},{"name":"EIP1271_isValidSignature_selector_negativeOffset","nodeType":"YulIdentifier","src":"7156:48:44"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7100:3:44"},"nodeType":"YulFunctionCall","src":"7100:122:44"},"variables":[{"name":"selectorPtr","nodeType":"YulTypedName","src":"7085:11:44","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7317:57:44","value":{"arguments":[{"name":"selectorPtr","nodeType":"YulIdentifier","src":"7362:11:44"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7356:5:44"},"nodeType":"YulFunctionCall","src":"7356:18:44"},"variables":[{"name":"cachedWordOverwrittenBySelector","nodeType":"YulTypedName","src":"7321:31:44","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7472:137:44","value":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"7514:9:44"},{"name":"EIP1271_isValidSignature_digest_negativeOffset","nodeType":"YulIdentifier","src":"7545:46:44"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7489:3:44"},"nodeType":"YulFunctionCall","src":"7489:120:44"},"variables":[{"name":"digestPtr","nodeType":"YulTypedName","src":"7476:9:44","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7702:53:44","value":{"arguments":[{"name":"digestPtr","nodeType":"YulIdentifier","src":"7745:9:44"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7739:5:44"},"nodeType":"YulFunctionCall","src":"7739:16:44"},"variables":[{"name":"cachedWordOverwrittenByDigest","nodeType":"YulTypedName","src":"7706:29:44","type":""}]},{"expression":{"arguments":[{"name":"selectorPtr","nodeType":"YulIdentifier","src":"7855:11:44"},{"name":"EIP1271_isValidSignature_selector","nodeType":"YulIdentifier","src":"7868:33:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7848:6:44"},"nodeType":"YulFunctionCall","src":"7848:54:44"},"nodeType":"YulExpressionStatement","src":"7848:54:44"},{"expression":{"arguments":[{"name":"digestPtr","nodeType":"YulIdentifier","src":"7970:9:44"},{"name":"digest","nodeType":"YulIdentifier","src":"7981:6:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7963:6:44"},"nodeType":"YulFunctionCall","src":"7963:25:44"},"nodeType":"YulExpressionStatement","src":"7963:25:44"},{"nodeType":"YulAssignment","src":"8084:337:44","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"8127:3:44"},"nodeType":"YulFunctionCall","src":"8127:5:44"},{"name":"signer","nodeType":"YulIdentifier","src":"8154:6:44"},{"name":"selectorPtr","nodeType":"YulIdentifier","src":"8182:11:44"},{"arguments":[{"name":"signatureLength","nodeType":"YulIdentifier","src":"8244:15:44"},{"name":"EIP1271_isValidSignature_calldata_baseLength","nodeType":"YulIdentifier","src":"8285:44:44"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8215:3:44"},"nodeType":"YulFunctionCall","src":"8215:136:44"},{"kind":"number","nodeType":"YulLiteral","src":"8373:1:44","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"8396:7:44"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"8095:10:44"},"nodeType":"YulFunctionCall","src":"8095:326:44"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"8084:7:44"}]},{"body":{"nodeType":"YulBlock","src":"8526:1681:44","statements":[{"body":{"nodeType":"YulBlock","src":"8738:1451:44","statements":[{"body":{"nodeType":"YulBlock","src":"8865:231:44","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8957:1:44","type":"","value":"0"},{"name":"BadContractSignature_error_signature","nodeType":"YulIdentifier","src":"8960:36:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8950:6:44"},"nodeType":"YulFunctionCall","src":"8950:47:44"},"nodeType":"YulExpressionStatement","src":"8950:47:44"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9033:1:44","type":"","value":"0"},{"name":"BadContractSignature_error_length","nodeType":"YulIdentifier","src":"9036:33:44"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9026:6:44"},"nodeType":"YulFunctionCall","src":"9026:44:44"},"nodeType":"YulExpressionStatement","src":"9026:44:44"}]},"condition":{"arguments":[{"name":"signer","nodeType":"YulIdentifier","src":"8857:6:44"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"8845:11:44"},"nodeType":"YulFunctionCall","src":"8845:19:44"},"nodeType":"YulIf","src":"8842:254:44"},{"body":{"nodeType":"YulBlock","src":"9236:244:44","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9349:1:44","type":"","value":"0"},{"name":"InvalidSignature_error_signature","nodeType":"YulIdentifier","src":"9352:32:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9342:6:44"},"nodeType":"YulFunctionCall","src":"9342:43:44"},"nodeType":"YulExpressionStatement","src":"9342:43:44"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9421:1:44","type":"","value":"0"},{"name":"InvalidSignature_error_length","nodeType":"YulIdentifier","src":"9424:29:44"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9414:6:44"},"nodeType":"YulFunctionCall","src":"9414:40:44"},"nodeType":"YulExpressionStatement","src":"9414:40:44"}]},"condition":{"arguments":[{"arguments":[{"name":"ECDSA_MaxLength","nodeType":"YulIdentifier","src":"9198:15:44"},{"name":"signatureLength","nodeType":"YulIdentifier","src":"9215:15:44"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9194:3:44"},"nodeType":"YulFunctionCall","src":"9194:37:44"},{"kind":"number","nodeType":"YulLiteral","src":"9233:1:44","type":"","value":"1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9191:2:44"},"nodeType":"YulFunctionCall","src":"9191:44:44"},"nodeType":"YulIf","src":"9188:292:44"},{"body":{"nodeType":"YulBlock","src":"9674:288:44","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9771:1:44","type":"","value":"0"},{"name":"BadSignatureV_error_signature","nodeType":"YulIdentifier","src":"9774:29:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9764:6:44"},"nodeType":"YulFunctionCall","src":"9764:40:44"},"nodeType":"YulExpressionStatement","src":"9764:40:44"},{"expression":{"arguments":[{"name":"BadSignatureV_error_offset","nodeType":"YulIdentifier","src":"9840:26:44"},{"name":"v","nodeType":"YulIdentifier","src":"9868:1:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9833:6:44"},"nodeType":"YulFunctionCall","src":"9833:37:44"},"nodeType":"YulExpressionStatement","src":"9833:37:44"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9906:1:44","type":"","value":"0"},{"name":"BadSignatureV_error_length","nodeType":"YulIdentifier","src":"9909:26:44"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9899:6:44"},"nodeType":"YulFunctionCall","src":"9899:37:44"},"nodeType":"YulExpressionStatement","src":"9899:37:44"}]},"condition":{"arguments":[{"arguments":[{"name":"v","nodeType":"YulIdentifier","src":"9601:1:44"},{"name":"ECDSA_twentySeventhAndTwentyEighthBytesSet","nodeType":"YulIdentifier","src":"9604:42:44"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"9596:4:44"},"nodeType":"YulFunctionCall","src":"9596:51:44"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9560:6:44"},"nodeType":"YulFunctionCall","src":"9560:113:44"},"nodeType":"YulIf","src":"9557:405:44"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10072:1:44","type":"","value":"0"},{"name":"InvalidSigner_error_signature","nodeType":"YulIdentifier","src":"10075:29:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10065:6:44"},"nodeType":"YulFunctionCall","src":"10065:40:44"},"nodeType":"YulExpressionStatement","src":"10065:40:44"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10137:1:44","type":"","value":"0"},{"name":"InvalidSigner_error_length","nodeType":"YulIdentifier","src":"10140:26:44"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10130:6:44"},"nodeType":"YulFunctionCall","src":"10130:37:44"},"nodeType":"YulExpressionStatement","src":"10130:37:44"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8698:1:44","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8692:5:44"},"nodeType":"YulFunctionCall","src":"8692:8:44"},{"name":"EIP1271_isValidSignature_selector","nodeType":"YulIdentifier","src":"8702:33:44"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8689:2:44"},"nodeType":"YulFunctionCall","src":"8689:47:44"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8682:6:44"},"nodeType":"YulFunctionCall","src":"8682:55:44"},"nodeType":"YulIf","src":"8679:1510:44"}]},"condition":{"name":"success","nodeType":"YulIdentifier","src":"8518:7:44"},"nodeType":"YulIf","src":"8515:1692:44"},{"expression":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"10348:22:44"},{"name":"cachedWordBeforeSignature","nodeType":"YulIdentifier","src":"10372:25:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10341:6:44"},"nodeType":"YulFunctionCall","src":"10341:57:44"},"nodeType":"YulExpressionStatement","src":"10341:57:44"},{"expression":{"arguments":[{"name":"selectorPtr","nodeType":"YulIdentifier","src":"10422:11:44"},{"name":"cachedWordOverwrittenBySelector","nodeType":"YulIdentifier","src":"10435:31:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10415:6:44"},"nodeType":"YulFunctionCall","src":"10415:52:44"},"nodeType":"YulExpressionStatement","src":"10415:52:44"},{"expression":{"arguments":[{"name":"digestPtr","nodeType":"YulIdentifier","src":"10491:9:44"},{"name":"cachedWordOverwrittenByDigest","nodeType":"YulIdentifier","src":"10502:29:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10484:6:44"},"nodeType":"YulFunctionCall","src":"10484:48:44"},"nodeType":"YulExpressionStatement","src":"10484:48:44"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"6612:7:44"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6605:6:44"},"nodeType":"YulFunctionCall","src":"6605:15:44"},"nodeType":"YulIf","src":"6602:3944:44"}]},"evmVersion":"london","externalReferences":[{"declaration":5276,"isOffset":false,"isSlot":false,"src":"9036:33:44","valueSize":1},{"declaration":5273,"isOffset":false,"isSlot":false,"src":"8960:36:44","valueSize":1},{"declaration":5255,"isOffset":false,"isSlot":false,"src":"9909:26:44","valueSize":1},{"declaration":5252,"isOffset":false,"isSlot":false,"src":"9840:26:44","valueSize":1},{"declaration":5249,"isOffset":false,"isSlot":false,"src":"9774:29:44","valueSize":1},{"declaration":5075,"isOffset":false,"isSlot":false,"src":"2546:15:44","valueSize":1},{"declaration":5075,"isOffset":false,"isSlot":false,"src":"9198:15:44","valueSize":1},{"declaration":5078,"isOffset":false,"isSlot":false,"src":"2975:24:44","valueSize":1},{"declaration":5078,"isOffset":false,"isSlot":false,"src":"4121:24:44","valueSize":1},{"declaration":5078,"isOffset":false,"isSlot":false,"src":"5901:24:44","valueSize":1},{"declaration":5081,"isOffset":false,"isSlot":false,"src":"3407:24:44","valueSize":1},{"declaration":5072,"isOffset":false,"isSlot":false,"src":"9604:42:44","valueSize":1},{"declaration":5097,"isOffset":false,"isSlot":false,"src":"8285:44:44","valueSize":1},{"declaration":5091,"isOffset":false,"isSlot":false,"src":"7545:46:44","valueSize":1},{"declaration":5085,"isOffset":false,"isSlot":false,"src":"7868:33:44","valueSize":1},{"declaration":5085,"isOffset":false,"isSlot":false,"src":"8702:33:44","valueSize":1},{"declaration":5094,"isOffset":false,"isSlot":false,"src":"7156:48:44","valueSize":1},{"declaration":5100,"isOffset":false,"isSlot":false,"src":"6921:46:44","valueSize":1},{"declaration":5068,"isOffset":false,"isSlot":false,"src":"4265:28:44","valueSize":1},{"declaration":5242,"isOffset":false,"isSlot":false,"src":"5284:19:44","valueSize":1},{"declaration":5239,"isOffset":false,"isSlot":false,"src":"5123:20:44","valueSize":1},{"declaration":5269,"isOffset":false,"isSlot":false,"src":"9424:29:44","valueSize":1},{"declaration":5266,"isOffset":false,"isSlot":false,"src":"9352:32:44","valueSize":1},{"declaration":5262,"isOffset":false,"isSlot":false,"src":"10140:26:44","valueSize":1},{"declaration":5259,"isOffset":false,"isSlot":false,"src":"10075:29:44","valueSize":1},{"declaration":5151,"isOffset":false,"isSlot":false,"src":"3744:8:44","valueSize":1},{"declaration":4868,"isOffset":false,"isSlot":false,"src":"1954:7:44","valueSize":1},{"declaration":4868,"isOffset":false,"isSlot":false,"src":"5430:7:44","valueSize":1},{"declaration":4868,"isOffset":false,"isSlot":false,"src":"8396:7:44","valueSize":1},{"declaration":5245,"isOffset":false,"isSlot":false,"src":"3803:17:44","valueSize":1},{"declaration":7900,"isOffset":false,"isSlot":false,"src":"4768:6:44","valueSize":1},{"declaration":7900,"isOffset":false,"isSlot":false,"src":"7981:6:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"1652:9:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"1943:9:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"2964:9:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"3396:9:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"4110:9:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"4545:9:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"5746:9:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"5890:9:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"7125:9:44","valueSize":1},{"declaration":7902,"isOffset":false,"isSlot":false,"src":"7514:9:44","valueSize":1},{"declaration":7898,"isOffset":false,"isSlot":false,"src":"6456:6:44","valueSize":1},{"declaration":7898,"isOffset":false,"isSlot":false,"src":"6485:6:44","valueSize":1},{"declaration":7898,"isOffset":false,"isSlot":false,"src":"8154:6:44","valueSize":1},{"declaration":7898,"isOffset":false,"isSlot":false,"src":"8857:6:44","valueSize":1},{"declaration":7906,"isOffset":false,"isSlot":false,"src":"6438:7:44","valueSize":1},{"declaration":7906,"isOffset":false,"isSlot":false,"src":"6612:7:44","valueSize":1},{"declaration":7906,"isOffset":false,"isSlot":false,"src":"8084:7:44","valueSize":1},{"declaration":7906,"isOffset":false,"isSlot":false,"src":"8518:7:44","valueSize":1}],"id":7908,"nodeType":"InlineAssembly","src":"1386:9170:44"},{"condition":{"id":7910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10603:8:44","subExpression":{"id":7909,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7906,"src":"10604:7:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7916,"nodeType":"IfStatement","src":"10599:380:44","trueBody":{"id":7915,"nodeType":"Block","src":"10613:366:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7911,"name":"_revertWithReasonIfOneIsReturned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"10692:32:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":7912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10692:34:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7913,"nodeType":"ExpressionStatement","src":"10692:34:44"},{"AST":{"nodeType":"YulBlock","src":"10829:140:44","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10854:1:44","type":"","value":"0"},{"name":"BadContractSignature_error_signature","nodeType":"YulIdentifier","src":"10857:36:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10847:6:44"},"nodeType":"YulFunctionCall","src":"10847:47:44"},"nodeType":"YulExpressionStatement","src":"10847:47:44"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10918:1:44","type":"","value":"0"},{"name":"BadContractSignature_error_length","nodeType":"YulIdentifier","src":"10921:33:44"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10911:6:44"},"nodeType":"YulFunctionCall","src":"10911:44:44"},"nodeType":"YulExpressionStatement","src":"10911:44:44"}]},"evmVersion":"london","externalReferences":[{"declaration":5276,"isOffset":false,"isSlot":false,"src":"10921:33:44","valueSize":1},{"declaration":5273,"isOffset":false,"isSlot":false,"src":"10857:36:44","valueSize":1}],"id":7914,"nodeType":"InlineAssembly","src":"10820:149:44"}]}}]},"documentation":{"id":7896,"nodeType":"StructuredDocumentation","src":"541:520:44","text":" @dev Internal view function to verify the signature of an order. An\n      ERC-1271 fallback will be attempted if either the signature length\n      is not 64 or 65 bytes or if the recovered signer does not match the\n      supplied signer.\n @param signer    The signer for the order.\n @param digest    The digest to verify the signature against.\n @param signature A signature from the signer indicating that the order\n                  has been approved."},"id":7918,"implemented":true,"kind":"function","modifiers":[],"name":"_assertValidSignature","nameLocation":"1075:21:44","nodeType":"FunctionDefinition","parameters":{"id":7903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7898,"mutability":"mutable","name":"signer","nameLocation":"1114:6:44","nodeType":"VariableDeclaration","scope":7918,"src":"1106:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7897,"name":"address","nodeType":"ElementaryTypeName","src":"1106:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7900,"mutability":"mutable","name":"digest","nameLocation":"1138:6:44","nodeType":"VariableDeclaration","scope":7918,"src":"1130:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1130:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7902,"mutability":"mutable","name":"signature","nameLocation":"1167:9:44","nodeType":"VariableDeclaration","scope":7918,"src":"1154:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7901,"name":"bytes","nodeType":"ElementaryTypeName","src":"1154:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1096:86:44"},"returnParameters":{"id":7904,"nodeType":"ParameterList","parameters":[],"src":"1197:0:44"},"scope":7919,"src":"1066:9919:44","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7920,"src":"456:10531:44","usedErrors":[4255,4258,4261,4264]}],"src":"32:10956:44"},"id":44},"contracts/lib/TokenTransferrer.sol":{"ast":{"absolutePath":"contracts/lib/TokenTransferrer.sol","exportedSymbols":{"AlmostOneWord":[8000],"BadReturnValueFromERC20OnTransfer_error_amount_ptr":[8181],"BadReturnValueFromERC20OnTransfer_error_from_ptr":[8175],"BadReturnValueFromERC20OnTransfer_error_length":[8184],"BadReturnValueFromERC20OnTransfer_error_sig_ptr":[8169],"BadReturnValueFromERC20OnTransfer_error_signature":[8166],"BadReturnValueFromERC20OnTransfer_error_to_ptr":[8178],"BadReturnValueFromERC20OnTransfer_error_token_ptr":[8172],"BatchTransfer1155Params_amounts_head_ptr":[8202],"BatchTransfer1155Params_amounts_length_baseOffset":[8220],"BatchTransfer1155Params_calldata_baseSize":[8211],"BatchTransfer1155Params_data_head_ptr":[8205],"BatchTransfer1155Params_data_length_baseOffset":[8223],"BatchTransfer1155Params_data_length_basePtr":[8208],"BatchTransfer1155Params_ids_head_ptr":[8199],"BatchTransfer1155Params_ids_length_offset":[8217],"BatchTransfer1155Params_ids_length_ptr":[8214],"BatchTransfer1155Params_ptr":[8196],"ConduitBatch1155Transfer":[3673],"ConduitBatch1155Transfer_amounts_head_offset":[8235],"ConduitBatch1155Transfer_amounts_length_baseOffset":[8241],"ConduitBatch1155Transfer_calldata_baseSize":[8244],"ConduitBatch1155Transfer_from_offset":[8229],"ConduitBatch1155Transfer_ids_head_offset":[8232],"ConduitBatch1155Transfer_ids_length_offset":[8238],"ConduitBatch1155Transfer_usable_head_size":[8226],"ConduitBatchTransfer_amounts_head_offset":[8247],"CostPerWord":[8190],"DefaultFreeMemoryPointer":[8018],"ERC1155BatchTransferGenericFailure_error_signature":[8261],"ERC1155BatchTransferGenericFailure_ids_offset":[8267],"ERC1155BatchTransferGenericFailure_token_ptr":[8264],"ERC1155_safeBatchTransferFrom_selector":[8106],"ERC1155_safeBatchTransferFrom_signature":[8097],"ERC1155_safeTransferFrom_amount_ptr":[8081],"ERC1155_safeTransferFrom_data_length_offset":[8093],"ERC1155_safeTransferFrom_data_length_ptr":[8087],"ERC1155_safeTransferFrom_data_offset_ptr":[8084],"ERC1155_safeTransferFrom_from_ptr":[8072],"ERC1155_safeTransferFrom_id_ptr":[8078],"ERC1155_safeTransferFrom_length":[8090],"ERC1155_safeTransferFrom_sig_ptr":[8069],"ERC1155_safeTransferFrom_signature":[8066],"ERC1155_safeTransferFrom_to_ptr":[8075],"ERC20_transferFrom_amount_ptr":[8043],"ERC20_transferFrom_from_ptr":[8037],"ERC20_transferFrom_length":[8046],"ERC20_transferFrom_sig_ptr":[8034],"ERC20_transferFrom_signature":[8031],"ERC20_transferFrom_to_ptr":[8040],"ERC20_transfer_amount_ptr":[8059],"ERC20_transfer_length":[8062],"ERC20_transfer_sig_ptr":[8053],"ERC20_transfer_signature":[8050],"ERC20_transfer_to_ptr":[8056],"ERC721_transferFrom_from_ptr":[8115],"ERC721_transferFrom_id_ptr":[8121],"ERC721_transferFrom_length":[8124],"ERC721_transferFrom_sig_ptr":[8112],"ERC721_transferFrom_signature":[8109],"ERC721_transferFrom_to_ptr":[8118],"ExtraGasBuffer":[8187],"FreeMemoryPointerSlot":[8012],"Invalid1155BatchTransferEncoding_length":[8253],"Invalid1155BatchTransferEncoding_ptr":[8250],"Invalid1155BatchTransferEncoding_selector":[8257],"MemoryExpansionCoefficient":[8193],"NoContract_error_length":[8137],"NoContract_error_sig_ptr":[8131],"NoContract_error_signature":[8128],"NoContract_error_token_ptr":[8134],"OneWord":[8003],"Slot0x80":[8021],"Slot0xA0":[8024],"Slot0xC0":[8027],"ThreeWords":[8009],"TokenTransferGenericFailure_error_amount_ptr":[8159],"TokenTransferGenericFailure_error_from_ptr":[8150],"TokenTransferGenericFailure_error_id_ptr":[8156],"TokenTransferGenericFailure_error_length":[8162],"TokenTransferGenericFailure_error_sig_ptr":[8144],"TokenTransferGenericFailure_error_signature":[8141],"TokenTransferGenericFailure_error_to_ptr":[8153],"TokenTransferGenericFailure_error_token_ptr":[8147],"TokenTransferrer":[7995],"TokenTransferrerErrors":[4325],"TwoWords":[8006],"ZeroSlot":[8015]},"id":7996,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7921,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:45"},{"absolutePath":"contracts/lib/TokenTransferrerConstants.sol","file":"./TokenTransferrerConstants.sol","id":7922,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7996,"sourceUnit":8268,"src":"57:41:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/TokenTransferrerErrors.sol","file":"../interfaces/TokenTransferrerErrors.sol","id":7924,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7996,"sourceUnit":4326,"src":"100:86:45","symbolAliases":[{"foreign":{"id":7923,"name":"TokenTransferrerErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"113:22:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/conduit/lib/ConduitStructs.sol","file":"../conduit/lib/ConduitStructs.sol","id":7926,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7996,"sourceUnit":3674,"src":"188:77:45","symbolAliases":[{"foreign":{"id":7925,"name":"ConduitBatch1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"197:24:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7928,"name":"TokenTransferrerErrors","nodeType":"IdentifierPath","referencedDeclaration":4325,"src":"858:22:45"},"id":7929,"nodeType":"InheritanceSpecifier","src":"858:22:45"}],"canonicalName":"TokenTransferrer","contractDependencies":[],"contractKind":"contract","documentation":{"id":7927,"nodeType":"StructuredDocumentation","src":"267:561:45","text":" @title TokenTransferrer\n @author 0age\n @custom:coauthor d1ll0n\n @custom:coauthor transmissions11\n @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\n         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\n         by conduits deployed by the ConduitController. Use great caution when\n         considering these functions for use in other codebases, as there are\n         significant side effects and edge cases that need to be thoroughly\n         understood and carefully addressed."},"fullyImplemented":true,"id":7995,"linearizedBaseContracts":[7995,4325],"name":"TokenTransferrer","nameLocation":"838:16:45","nodeType":"ContractDefinition","nodes":[{"body":{"id":7942,"nodeType":"Block","src":"1460:9480:45","statements":[{"AST":{"nodeType":"YulBlock","src":"1553:9381:45","statements":[{"nodeType":"YulVariableDeclaration","src":"1727:46:45","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"1751:21:45"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1745:5:45"},"nodeType":"YulFunctionCall","src":"1745:28:45"},"variables":[{"name":"memPointer","nodeType":"YulTypedName","src":"1731:10:45","type":""}]},{"expression":{"arguments":[{"name":"ERC20_transferFrom_sig_ptr","nodeType":"YulIdentifier","src":"1871:26:45"},{"name":"ERC20_transferFrom_signature","nodeType":"YulIdentifier","src":"1899:28:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1864:6:45"},"nodeType":"YulFunctionCall","src":"1864:64:45"},"nodeType":"YulExpressionStatement","src":"1864:64:45"},{"expression":{"arguments":[{"name":"ERC20_transferFrom_from_ptr","nodeType":"YulIdentifier","src":"1948:27:45"},{"name":"from","nodeType":"YulIdentifier","src":"1977:4:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1941:6:45"},"nodeType":"YulFunctionCall","src":"1941:41:45"},"nodeType":"YulExpressionStatement","src":"1941:41:45"},{"expression":{"arguments":[{"name":"ERC20_transferFrom_to_ptr","nodeType":"YulIdentifier","src":"2002:25:45"},{"name":"to","nodeType":"YulIdentifier","src":"2029:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1995:6:45"},"nodeType":"YulFunctionCall","src":"1995:37:45"},"nodeType":"YulExpressionStatement","src":"1995:37:45"},{"expression":{"arguments":[{"name":"ERC20_transferFrom_amount_ptr","nodeType":"YulIdentifier","src":"2052:29:45"},{"name":"amount","nodeType":"YulIdentifier","src":"2083:6:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2045:6:45"},"nodeType":"YulFunctionCall","src":"2045:45:45"},"nodeType":"YulExpressionStatement","src":"2045:45:45"},{"nodeType":"YulVariableDeclaration","src":"2566:232:45","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"2606:3:45"},"nodeType":"YulFunctionCall","src":"2606:5:45"},{"name":"token","nodeType":"YulIdentifier","src":"2629:5:45"},{"kind":"number","nodeType":"YulLiteral","src":"2652:1:45","type":"","value":"0"},{"name":"ERC20_transferFrom_sig_ptr","nodeType":"YulIdentifier","src":"2671:26:45"},{"name":"ERC20_transferFrom_length","nodeType":"YulIdentifier","src":"2715:25:45"},{"kind":"number","nodeType":"YulLiteral","src":"2758:1:45","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"2777:7:45"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"2584:4:45"},"nodeType":"YulFunctionCall","src":"2584:214:45"},"variables":[{"name":"callStatus","nodeType":"YulTypedName","src":"2570:10:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2892:407:45","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3160:1:45","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3154:5:45"},"nodeType":"YulFunctionCall","src":"3154:8:45"},{"kind":"number","nodeType":"YulLiteral","src":"3164:1:45","type":"","value":"1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3151:2:45"},"nodeType":"YulFunctionCall","src":"3151:15:45"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3171:14:45"},"nodeType":"YulFunctionCall","src":"3171:16:45"},{"kind":"number","nodeType":"YulLiteral","src":"3189:2:45","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3168:2:45"},"nodeType":"YulFunctionCall","src":"3168:24:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3147:3:45"},"nodeType":"YulFunctionCall","src":"3147:46:45"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3222:14:45"},"nodeType":"YulFunctionCall","src":"3222:16:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3215:6:45"},"nodeType":"YulFunctionCall","src":"3215:24:45"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3123:2:45"},"nodeType":"YulFunctionCall","src":"3123:134:45"},{"name":"callStatus","nodeType":"YulIdentifier","src":"3275:10:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2907:3:45"},"nodeType":"YulFunctionCall","src":"2907:392:45"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"2896:7:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"3681:7052:45","statements":[{"body":{"nodeType":"YulBlock","src":"3991:6522:45","statements":[{"body":{"nodeType":"YulBlock","src":"4079:6113:45","statements":[{"body":{"nodeType":"YulBlock","src":"4181:4737:45","statements":[{"body":{"nodeType":"YulBlock","src":"4376:3302:45","statements":[{"nodeType":"YulVariableDeclaration","src":"4788:179:45","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4856:14:45"},"nodeType":"YulFunctionCall","src":"4856:16:45"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"4874:13:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4852:3:45"},"nodeType":"YulFunctionCall","src":"4852:36:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"4926:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4811:3:45"},"nodeType":"YulFunctionCall","src":"4811:156:45"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"4792:15:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5298:42:45","value":{"arguments":[{"name":"memPointer","nodeType":"YulIdentifier","src":"5320:10:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"5332:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"5316:3:45"},"nodeType":"YulFunctionCall","src":"5316:24:45"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"5302:10:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5455:45:45","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"5471:11:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"5484:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5467:3:45"},"nodeType":"YulFunctionCall","src":"5467:33:45"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"5459:4:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"5649:1258:45","statements":[{"nodeType":"YulAssignment","src":"5687:1186:45","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"5740:4:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"5945:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"6014:10:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5888:3:45"},"nodeType":"YulFunctionCall","src":"5888:186:45"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"6124:11:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5835:3:45"},"nodeType":"YulFunctionCall","src":"5835:346:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"6398:15:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"6471:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6337:3:45"},"nodeType":"YulFunctionCall","src":"6337:203:45"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"6598:10:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"6610:10:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6594:3:45"},"nodeType":"YulFunctionCall","src":"6594:27:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6280:3:45"},"nodeType":"YulFunctionCall","src":"6280:391:45"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"6721:26:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6227:3:45"},"nodeType":"YulFunctionCall","src":"6227:566:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5786:3:45"},"nodeType":"YulFunctionCall","src":"5786:1049:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5695:3:45"},"nodeType":"YulFunctionCall","src":"5695:1178:45"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"5687:4:45"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"5620:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"5637:10:45"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5617:2:45"},"nodeType":"YulFunctionCall","src":"5617:31:45"},"nodeType":"YulIf","src":"5614:1293:45"},{"body":{"nodeType":"YulBlock","src":"7206:442:45","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7391:1:45","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7394:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"7397:14:45"},"nodeType":"YulFunctionCall","src":"7397:16:45"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"7376:14:45"},"nodeType":"YulFunctionCall","src":"7376:38:45"},"nodeType":"YulExpressionStatement","src":"7376:38:45"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7594:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"7597:14:45"},"nodeType":"YulFunctionCall","src":"7597:16:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7587:6:45"},"nodeType":"YulFunctionCall","src":"7587:27:45"},"nodeType":"YulExpressionStatement","src":"7587:27:45"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"7176:4:45"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"7182:14:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7172:3:45"},"nodeType":"YulFunctionCall","src":"7172:25:45"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"7199:3:45"},"nodeType":"YulFunctionCall","src":"7199:5:45"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7169:2:45"},"nodeType":"YulFunctionCall","src":"7169:36:45"},"nodeType":"YulIf","src":"7166:482:45"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4359:14:45"},"nodeType":"YulFunctionCall","src":"4359:16:45"},"nodeType":"YulIf","src":"4356:3322:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"7826:41:45"},{"name":"TokenTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"7901:43:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7786:6:45"},"nodeType":"YulFunctionCall","src":"7786:188:45"},"nodeType":"YulExpressionStatement","src":"7786:188:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_token_ptr","nodeType":"YulIdentifier","src":"8043:43:45"},{"name":"token","nodeType":"YulIdentifier","src":"8120:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8003:6:45"},"nodeType":"YulFunctionCall","src":"8003:152:45"},"nodeType":"YulExpressionStatement","src":"8003:152:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_from_ptr","nodeType":"YulIdentifier","src":"8224:42:45"},{"name":"from","nodeType":"YulIdentifier","src":"8300:4:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8184:6:45"},"nodeType":"YulFunctionCall","src":"8184:150:45"},"nodeType":"YulExpressionStatement","src":"8184:150:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_to_ptr","nodeType":"YulIdentifier","src":"8370:40:45"},{"name":"to","nodeType":"YulIdentifier","src":"8412:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8363:6:45"},"nodeType":"YulFunctionCall","src":"8363:52:45"},"nodeType":"YulExpressionStatement","src":"8363:52:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_id_ptr","nodeType":"YulIdentifier","src":"8451:40:45"},{"kind":"number","nodeType":"YulLiteral","src":"8493:1:45","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8444:6:45"},"nodeType":"YulFunctionCall","src":"8444:51:45"},"nodeType":"YulExpressionStatement","src":"8444:51:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_amount_ptr","nodeType":"YulIdentifier","src":"8564:44:45"},{"name":"amount","nodeType":"YulIdentifier","src":"8642:6:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8524:6:45"},"nodeType":"YulFunctionCall","src":"8524:154:45"},"nodeType":"YulExpressionStatement","src":"8524:154:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"8747:41:45"},{"name":"TokenTransferGenericFailure_error_length","nodeType":"YulIdentifier","src":"8822:40:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8707:6:45"},"nodeType":"YulFunctionCall","src":"8707:185:45"},"nodeType":"YulExpressionStatement","src":"8707:185:45"}]},"condition":{"arguments":[{"name":"callStatus","nodeType":"YulIdentifier","src":"4169:10:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4162:6:45"},"nodeType":"YulFunctionCall","src":"4162:18:45"},"nodeType":"YulIf","src":"4159:4759:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nodeType":"YulIdentifier","src":"9130:47:45"},{"name":"BadReturnValueFromERC20OnTransfer_error_signature","nodeType":"YulIdentifier","src":"9207:49:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9094:6:45"},"nodeType":"YulFunctionCall","src":"9094:188:45"},"nodeType":"YulExpressionStatement","src":"9094:188:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_token_ptr","nodeType":"YulIdentifier","src":"9343:49:45"},{"name":"token","nodeType":"YulIdentifier","src":"9422:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9307:6:45"},"nodeType":"YulFunctionCall","src":"9307:146:45"},"nodeType":"YulExpressionStatement","src":"9307:146:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_from_ptr","nodeType":"YulIdentifier","src":"9514:48:45"},{"name":"from","nodeType":"YulIdentifier","src":"9592:4:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9478:6:45"},"nodeType":"YulFunctionCall","src":"9478:144:45"},"nodeType":"YulExpressionStatement","src":"9478:144:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_to_ptr","nodeType":"YulIdentifier","src":"9683:46:45"},{"name":"to","nodeType":"YulIdentifier","src":"9759:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9647:6:45"},"nodeType":"YulFunctionCall","src":"9647:140:45"},"nodeType":"YulExpressionStatement","src":"9647:140:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_amount_ptr","nodeType":"YulIdentifier","src":"9848:50:45"},{"name":"amount","nodeType":"YulIdentifier","src":"9928:6:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9812:6:45"},"nodeType":"YulFunctionCall","src":"9812:148:45"},"nodeType":"YulExpressionStatement","src":"9812:148:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nodeType":"YulIdentifier","src":"10021:47:45"},{"name":"BadReturnValueFromERC20OnTransfer_error_length","nodeType":"YulIdentifier","src":"10098:46:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9985:6:45"},"nodeType":"YulFunctionCall","src":"9985:185:45"},"nodeType":"YulExpressionStatement","src":"9985:185:45"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"4070:7:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4063:6:45"},"nodeType":"YulFunctionCall","src":"4063:15:45"},"nodeType":"YulIf","src":"4060:6132:45"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"10302:24:45"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"10328:26:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10295:6:45"},"nodeType":"YulFunctionCall","src":"10295:60:45"},"nodeType":"YulExpressionStatement","src":"10295:60:45"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"10383:26:45"},{"name":"token","nodeType":"YulIdentifier","src":"10411:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10376:6:45"},"nodeType":"YulFunctionCall","src":"10376:41:45"},"nodeType":"YulExpressionStatement","src":"10376:41:45"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"10445:24:45"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"10471:23:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10438:6:45"},"nodeType":"YulFunctionCall","src":"10438:57:45"},"nodeType":"YulExpressionStatement","src":"10438:57:45"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"3971:5:45"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"3959:11:45"},"nodeType":"YulFunctionCall","src":"3959:18:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3952:6:45"},"nodeType":"YulFunctionCall","src":"3952:26:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3945:6:45"},"nodeType":"YulFunctionCall","src":"3945:34:45"},{"name":"success","nodeType":"YulIdentifier","src":"3981:7:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3941:3:45"},"nodeType":"YulFunctionCall","src":"3941:48:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3934:6:45"},"nodeType":"YulFunctionCall","src":"3934:56:45"},"nodeType":"YulIf","src":"3931:6582:45"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"3637:7:45"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3660:14:45"},"nodeType":"YulFunctionCall","src":"3660:16:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3653:6:45"},"nodeType":"YulFunctionCall","src":"3653:24:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3646:6:45"},"nodeType":"YulFunctionCall","src":"3646:32:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3633:3:45"},"nodeType":"YulFunctionCall","src":"3633:46:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3626:6:45"},"nodeType":"YulFunctionCall","src":"3626:54:45"},"nodeType":"YulIf","src":"3623:7110:45"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"10811:21:45"},{"name":"memPointer","nodeType":"YulIdentifier","src":"10834:10:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10804:6:45"},"nodeType":"YulFunctionCall","src":"10804:41:45"},"nodeType":"YulExpressionStatement","src":"10804:41:45"},{"expression":{"arguments":[{"name":"ZeroSlot","nodeType":"YulIdentifier","src":"10912:8:45"},{"kind":"number","nodeType":"YulLiteral","src":"10922:1:45","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10905:6:45"},"nodeType":"YulFunctionCall","src":"10905:19:45"},"nodeType":"YulExpressionStatement","src":"10905:19:45"}]},"evmVersion":"london","externalReferences":[{"declaration":8000,"isOffset":false,"isSlot":false,"src":"4874:13:45","valueSize":1},{"declaration":8181,"isOffset":false,"isSlot":false,"src":"9848:50:45","valueSize":1},{"declaration":8175,"isOffset":false,"isSlot":false,"src":"9514:48:45","valueSize":1},{"declaration":8184,"isOffset":false,"isSlot":false,"src":"10098:46:45","valueSize":1},{"declaration":8169,"isOffset":false,"isSlot":false,"src":"10021:47:45","valueSize":1},{"declaration":8169,"isOffset":false,"isSlot":false,"src":"9130:47:45","valueSize":1},{"declaration":8166,"isOffset":false,"isSlot":false,"src":"9207:49:45","valueSize":1},{"declaration":8178,"isOffset":false,"isSlot":false,"src":"9683:46:45","valueSize":1},{"declaration":8172,"isOffset":false,"isSlot":false,"src":"9343:49:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"5471:11:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"6124:11:45","valueSize":1},{"declaration":8043,"isOffset":false,"isSlot":false,"src":"2052:29:45","valueSize":1},{"declaration":8037,"isOffset":false,"isSlot":false,"src":"1948:27:45","valueSize":1},{"declaration":8046,"isOffset":false,"isSlot":false,"src":"2715:25:45","valueSize":1},{"declaration":8034,"isOffset":false,"isSlot":false,"src":"1871:26:45","valueSize":1},{"declaration":8034,"isOffset":false,"isSlot":false,"src":"2671:26:45","valueSize":1},{"declaration":8031,"isOffset":false,"isSlot":false,"src":"1899:28:45","valueSize":1},{"declaration":8040,"isOffset":false,"isSlot":false,"src":"2002:25:45","valueSize":1},{"declaration":8187,"isOffset":false,"isSlot":false,"src":"7182:14:45","valueSize":1},{"declaration":8012,"isOffset":false,"isSlot":false,"src":"10811:21:45","valueSize":1},{"declaration":8012,"isOffset":false,"isSlot":false,"src":"1751:21:45","valueSize":1},{"declaration":8193,"isOffset":false,"isSlot":false,"src":"6721:26:45","valueSize":1},{"declaration":8137,"isOffset":false,"isSlot":false,"src":"10471:23:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"10302:24:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"10445:24:45","valueSize":1},{"declaration":8128,"isOffset":false,"isSlot":false,"src":"10328:26:45","valueSize":1},{"declaration":8134,"isOffset":false,"isSlot":false,"src":"10383:26:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"2777:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"4926:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"5332:7:45","valueSize":1},{"declaration":8159,"isOffset":false,"isSlot":false,"src":"8564:44:45","valueSize":1},{"declaration":8150,"isOffset":false,"isSlot":false,"src":"8224:42:45","valueSize":1},{"declaration":8156,"isOffset":false,"isSlot":false,"src":"8451:40:45","valueSize":1},{"declaration":8162,"isOffset":false,"isSlot":false,"src":"8822:40:45","valueSize":1},{"declaration":8144,"isOffset":false,"isSlot":false,"src":"7826:41:45","valueSize":1},{"declaration":8144,"isOffset":false,"isSlot":false,"src":"8747:41:45","valueSize":1},{"declaration":8141,"isOffset":false,"isSlot":false,"src":"7901:43:45","valueSize":1},{"declaration":8153,"isOffset":false,"isSlot":false,"src":"8370:40:45","valueSize":1},{"declaration":8147,"isOffset":false,"isSlot":false,"src":"8043:43:45","valueSize":1},{"declaration":8015,"isOffset":false,"isSlot":false,"src":"10912:8:45","valueSize":1},{"declaration":7938,"isOffset":false,"isSlot":false,"src":"2083:6:45","valueSize":1},{"declaration":7938,"isOffset":false,"isSlot":false,"src":"8642:6:45","valueSize":1},{"declaration":7938,"isOffset":false,"isSlot":false,"src":"9928:6:45","valueSize":1},{"declaration":7934,"isOffset":false,"isSlot":false,"src":"1977:4:45","valueSize":1},{"declaration":7934,"isOffset":false,"isSlot":false,"src":"8300:4:45","valueSize":1},{"declaration":7934,"isOffset":false,"isSlot":false,"src":"9592:4:45","valueSize":1},{"declaration":7936,"isOffset":false,"isSlot":false,"src":"2029:2:45","valueSize":1},{"declaration":7936,"isOffset":false,"isSlot":false,"src":"8412:2:45","valueSize":1},{"declaration":7936,"isOffset":false,"isSlot":false,"src":"9759:2:45","valueSize":1},{"declaration":7932,"isOffset":false,"isSlot":false,"src":"10411:5:45","valueSize":1},{"declaration":7932,"isOffset":false,"isSlot":false,"src":"2629:5:45","valueSize":1},{"declaration":7932,"isOffset":false,"isSlot":false,"src":"3971:5:45","valueSize":1},{"declaration":7932,"isOffset":false,"isSlot":false,"src":"8120:5:45","valueSize":1},{"declaration":7932,"isOffset":false,"isSlot":false,"src":"9422:5:45","valueSize":1}],"id":7941,"nodeType":"InlineAssembly","src":"1544:9390:45"}]},"documentation":{"id":7930,"nodeType":"StructuredDocumentation","src":"887:433:45","text":" @dev Internal function to transfer ERC20 tokens from a given originator\n      to a given recipient. Sufficient approvals must be set on the\n      contract performing the transfer.\n @param token      The ERC20 token to transfer.\n @param from       The originator of the transfer.\n @param to         The recipient of the transfer.\n @param amount     The amount to transfer."},"id":7943,"implemented":true,"kind":"function","modifiers":[],"name":"_performERC20Transfer","nameLocation":"1334:21:45","nodeType":"FunctionDefinition","parameters":{"id":7939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7932,"mutability":"mutable","name":"token","nameLocation":"1373:5:45","nodeType":"VariableDeclaration","scope":7943,"src":"1365:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7931,"name":"address","nodeType":"ElementaryTypeName","src":"1365:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7934,"mutability":"mutable","name":"from","nameLocation":"1396:4:45","nodeType":"VariableDeclaration","scope":7943,"src":"1388:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7933,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7936,"mutability":"mutable","name":"to","nameLocation":"1418:2:45","nodeType":"VariableDeclaration","scope":7943,"src":"1410:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7935,"name":"address","nodeType":"ElementaryTypeName","src":"1410:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7938,"mutability":"mutable","name":"amount","nameLocation":"1438:6:45","nodeType":"VariableDeclaration","scope":7943,"src":"1430:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7937,"name":"uint256","nodeType":"ElementaryTypeName","src":"1430:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1355:95:45"},"returnParameters":{"id":7940,"nodeType":"ParameterList","parameters":[],"src":"1460:0:45"},"scope":7995,"src":"1325:9615:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7953,"nodeType":"Block","src":"11063:9412:45","statements":[{"AST":{"nodeType":"YulBlock","src":"11156:9313:45","statements":[{"nodeType":"YulVariableDeclaration","src":"11330:46:45","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"11354:21:45"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11348:5:45"},"nodeType":"YulFunctionCall","src":"11348:28:45"},"variables":[{"name":"memPointer","nodeType":"YulTypedName","src":"11334:10:45","type":""}]},{"expression":{"arguments":[{"name":"ERC20_transfer_sig_ptr","nodeType":"YulIdentifier","src":"11474:22:45"},{"name":"ERC20_transfer_signature","nodeType":"YulIdentifier","src":"11498:24:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11467:6:45"},"nodeType":"YulFunctionCall","src":"11467:56:45"},"nodeType":"YulExpressionStatement","src":"11467:56:45"},{"expression":{"arguments":[{"name":"ERC20_transfer_to_ptr","nodeType":"YulIdentifier","src":"11543:21:45"},{"name":"to","nodeType":"YulIdentifier","src":"11566:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11536:6:45"},"nodeType":"YulFunctionCall","src":"11536:33:45"},"nodeType":"YulExpressionStatement","src":"11536:33:45"},{"expression":{"arguments":[{"name":"ERC20_transfer_amount_ptr","nodeType":"YulIdentifier","src":"11589:25:45"},{"name":"amount","nodeType":"YulIdentifier","src":"11616:6:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11582:6:45"},"nodeType":"YulFunctionCall","src":"11582:41:45"},"nodeType":"YulExpressionStatement","src":"11582:41:45"},{"nodeType":"YulVariableDeclaration","src":"12099:224:45","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"12139:3:45"},"nodeType":"YulFunctionCall","src":"12139:5:45"},{"name":"token","nodeType":"YulIdentifier","src":"12162:5:45"},{"kind":"number","nodeType":"YulLiteral","src":"12185:1:45","type":"","value":"0"},{"name":"ERC20_transfer_sig_ptr","nodeType":"YulIdentifier","src":"12204:22:45"},{"name":"ERC20_transfer_length","nodeType":"YulIdentifier","src":"12244:21:45"},{"kind":"number","nodeType":"YulLiteral","src":"12283:1:45","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"12302:7:45"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"12117:4:45"},"nodeType":"YulFunctionCall","src":"12117:206:45"},"variables":[{"name":"callStatus","nodeType":"YulTypedName","src":"12103:10:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12417:407:45","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12685:1:45","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12679:5:45"},"nodeType":"YulFunctionCall","src":"12679:8:45"},{"kind":"number","nodeType":"YulLiteral","src":"12689:1:45","type":"","value":"1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12676:2:45"},"nodeType":"YulFunctionCall","src":"12676:15:45"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"12696:14:45"},"nodeType":"YulFunctionCall","src":"12696:16:45"},{"kind":"number","nodeType":"YulLiteral","src":"12714:2:45","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12693:2:45"},"nodeType":"YulFunctionCall","src":"12693:24:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12672:3:45"},"nodeType":"YulFunctionCall","src":"12672:46:45"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"12747:14:45"},"nodeType":"YulFunctionCall","src":"12747:16:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12740:6:45"},"nodeType":"YulFunctionCall","src":"12740:24:45"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"12648:2:45"},"nodeType":"YulFunctionCall","src":"12648:134:45"},{"name":"callStatus","nodeType":"YulIdentifier","src":"12800:10:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12432:3:45"},"nodeType":"YulFunctionCall","src":"12432:392:45"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"12421:7:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"13206:7062:45","statements":[{"body":{"nodeType":"YulBlock","src":"13516:6532:45","statements":[{"body":{"nodeType":"YulBlock","src":"13604:6123:45","statements":[{"body":{"nodeType":"YulBlock","src":"13706:4742:45","statements":[{"body":{"nodeType":"YulBlock","src":"13901:3302:45","statements":[{"nodeType":"YulVariableDeclaration","src":"14313:179:45","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14381:14:45"},"nodeType":"YulFunctionCall","src":"14381:16:45"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"14399:13:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14377:3:45"},"nodeType":"YulFunctionCall","src":"14377:36:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"14451:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"14336:3:45"},"nodeType":"YulFunctionCall","src":"14336:156:45"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"14317:15:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14823:42:45","value":{"arguments":[{"name":"memPointer","nodeType":"YulIdentifier","src":"14845:10:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"14857:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"14841:3:45"},"nodeType":"YulFunctionCall","src":"14841:24:45"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"14827:10:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14980:45:45","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"14996:11:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15009:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"14992:3:45"},"nodeType":"YulFunctionCall","src":"14992:33:45"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"14984:4:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"15174:1258:45","statements":[{"nodeType":"YulAssignment","src":"15212:1186:45","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"15265:4:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15470:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"15539:10:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15413:3:45"},"nodeType":"YulFunctionCall","src":"15413:186:45"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"15649:11:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15360:3:45"},"nodeType":"YulFunctionCall","src":"15360:346:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15923:15:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15996:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15862:3:45"},"nodeType":"YulFunctionCall","src":"15862:203:45"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"16123:10:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"16135:10:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"16119:3:45"},"nodeType":"YulFunctionCall","src":"16119:27:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15805:3:45"},"nodeType":"YulFunctionCall","src":"15805:391:45"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"16246:26:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"15752:3:45"},"nodeType":"YulFunctionCall","src":"15752:566:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15311:3:45"},"nodeType":"YulFunctionCall","src":"15311:1049:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15220:3:45"},"nodeType":"YulFunctionCall","src":"15220:1178:45"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"15212:4:45"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15145:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"15162:10:45"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15142:2:45"},"nodeType":"YulFunctionCall","src":"15142:31:45"},"nodeType":"YulIf","src":"15139:1293:45"},{"body":{"nodeType":"YulBlock","src":"16731:442:45","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16916:1:45","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16919:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"16922:14:45"},"nodeType":"YulFunctionCall","src":"16922:16:45"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"16901:14:45"},"nodeType":"YulFunctionCall","src":"16901:38:45"},"nodeType":"YulExpressionStatement","src":"16901:38:45"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17119:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"17122:14:45"},"nodeType":"YulFunctionCall","src":"17122:16:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17112:6:45"},"nodeType":"YulFunctionCall","src":"17112:27:45"},"nodeType":"YulExpressionStatement","src":"17112:27:45"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"16701:4:45"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"16707:14:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16697:3:45"},"nodeType":"YulFunctionCall","src":"16697:25:45"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"16724:3:45"},"nodeType":"YulFunctionCall","src":"16724:5:45"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16694:2:45"},"nodeType":"YulFunctionCall","src":"16694:36:45"},"nodeType":"YulIf","src":"16691:482:45"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"13884:14:45"},"nodeType":"YulFunctionCall","src":"13884:16:45"},"nodeType":"YulIf","src":"13881:3322:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"17351:41:45"},{"name":"TokenTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"17426:43:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17311:6:45"},"nodeType":"YulFunctionCall","src":"17311:188:45"},"nodeType":"YulExpressionStatement","src":"17311:188:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_token_ptr","nodeType":"YulIdentifier","src":"17568:43:45"},{"name":"token","nodeType":"YulIdentifier","src":"17645:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17528:6:45"},"nodeType":"YulFunctionCall","src":"17528:152:45"},"nodeType":"YulExpressionStatement","src":"17528:152:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_from_ptr","nodeType":"YulIdentifier","src":"17749:42:45"},{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"17825:7:45"},"nodeType":"YulFunctionCall","src":"17825:9:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17709:6:45"},"nodeType":"YulFunctionCall","src":"17709:155:45"},"nodeType":"YulExpressionStatement","src":"17709:155:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_to_ptr","nodeType":"YulIdentifier","src":"17900:40:45"},{"name":"to","nodeType":"YulIdentifier","src":"17942:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17893:6:45"},"nodeType":"YulFunctionCall","src":"17893:52:45"},"nodeType":"YulExpressionStatement","src":"17893:52:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_id_ptr","nodeType":"YulIdentifier","src":"17981:40:45"},{"kind":"number","nodeType":"YulLiteral","src":"18023:1:45","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17974:6:45"},"nodeType":"YulFunctionCall","src":"17974:51:45"},"nodeType":"YulExpressionStatement","src":"17974:51:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_amount_ptr","nodeType":"YulIdentifier","src":"18094:44:45"},{"name":"amount","nodeType":"YulIdentifier","src":"18172:6:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18054:6:45"},"nodeType":"YulFunctionCall","src":"18054:154:45"},"nodeType":"YulExpressionStatement","src":"18054:154:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"18277:41:45"},{"name":"TokenTransferGenericFailure_error_length","nodeType":"YulIdentifier","src":"18352:40:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18237:6:45"},"nodeType":"YulFunctionCall","src":"18237:185:45"},"nodeType":"YulExpressionStatement","src":"18237:185:45"}]},"condition":{"arguments":[{"name":"callStatus","nodeType":"YulIdentifier","src":"13694:10:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13687:6:45"},"nodeType":"YulFunctionCall","src":"13687:18:45"},"nodeType":"YulIf","src":"13684:4764:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nodeType":"YulIdentifier","src":"18660:47:45"},{"name":"BadReturnValueFromERC20OnTransfer_error_signature","nodeType":"YulIdentifier","src":"18737:49:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18624:6:45"},"nodeType":"YulFunctionCall","src":"18624:188:45"},"nodeType":"YulExpressionStatement","src":"18624:188:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_token_ptr","nodeType":"YulIdentifier","src":"18873:49:45"},{"name":"token","nodeType":"YulIdentifier","src":"18952:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18837:6:45"},"nodeType":"YulFunctionCall","src":"18837:146:45"},"nodeType":"YulExpressionStatement","src":"18837:146:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_from_ptr","nodeType":"YulIdentifier","src":"19044:48:45"},{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"19122:7:45"},"nodeType":"YulFunctionCall","src":"19122:9:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19008:6:45"},"nodeType":"YulFunctionCall","src":"19008:149:45"},"nodeType":"YulExpressionStatement","src":"19008:149:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_to_ptr","nodeType":"YulIdentifier","src":"19218:46:45"},{"name":"to","nodeType":"YulIdentifier","src":"19294:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19182:6:45"},"nodeType":"YulFunctionCall","src":"19182:140:45"},"nodeType":"YulExpressionStatement","src":"19182:140:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_amount_ptr","nodeType":"YulIdentifier","src":"19383:50:45"},{"name":"amount","nodeType":"YulIdentifier","src":"19463:6:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19347:6:45"},"nodeType":"YulFunctionCall","src":"19347:148:45"},"nodeType":"YulExpressionStatement","src":"19347:148:45"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nodeType":"YulIdentifier","src":"19556:47:45"},{"name":"BadReturnValueFromERC20OnTransfer_error_length","nodeType":"YulIdentifier","src":"19633:46:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19520:6:45"},"nodeType":"YulFunctionCall","src":"19520:185:45"},"nodeType":"YulExpressionStatement","src":"19520:185:45"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"13595:7:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13588:6:45"},"nodeType":"YulFunctionCall","src":"13588:15:45"},"nodeType":"YulIf","src":"13585:6142:45"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"19837:24:45"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"19863:26:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19830:6:45"},"nodeType":"YulFunctionCall","src":"19830:60:45"},"nodeType":"YulExpressionStatement","src":"19830:60:45"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"19918:26:45"},{"name":"token","nodeType":"YulIdentifier","src":"19946:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19911:6:45"},"nodeType":"YulFunctionCall","src":"19911:41:45"},"nodeType":"YulExpressionStatement","src":"19911:41:45"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"19980:24:45"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"20006:23:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19973:6:45"},"nodeType":"YulFunctionCall","src":"19973:57:45"},"nodeType":"YulExpressionStatement","src":"19973:57:45"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"13496:5:45"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"13484:11:45"},"nodeType":"YulFunctionCall","src":"13484:18:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13477:6:45"},"nodeType":"YulFunctionCall","src":"13477:26:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13470:6:45"},"nodeType":"YulFunctionCall","src":"13470:34:45"},{"name":"success","nodeType":"YulIdentifier","src":"13506:7:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13466:3:45"},"nodeType":"YulFunctionCall","src":"13466:48:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13459:6:45"},"nodeType":"YulFunctionCall","src":"13459:56:45"},"nodeType":"YulIf","src":"13456:6592:45"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"13162:7:45"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"13185:14:45"},"nodeType":"YulFunctionCall","src":"13185:16:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13178:6:45"},"nodeType":"YulFunctionCall","src":"13178:24:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13171:6:45"},"nodeType":"YulFunctionCall","src":"13171:32:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13158:3:45"},"nodeType":"YulFunctionCall","src":"13158:46:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13151:6:45"},"nodeType":"YulFunctionCall","src":"13151:54:45"},"nodeType":"YulIf","src":"13148:7120:45"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"20346:21:45"},{"name":"memPointer","nodeType":"YulIdentifier","src":"20369:10:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20339:6:45"},"nodeType":"YulFunctionCall","src":"20339:41:45"},"nodeType":"YulExpressionStatement","src":"20339:41:45"},{"expression":{"arguments":[{"name":"ZeroSlot","nodeType":"YulIdentifier","src":"20447:8:45"},{"kind":"number","nodeType":"YulLiteral","src":"20457:1:45","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20440:6:45"},"nodeType":"YulFunctionCall","src":"20440:19:45"},"nodeType":"YulExpressionStatement","src":"20440:19:45"}]},"evmVersion":"london","externalReferences":[{"declaration":8000,"isOffset":false,"isSlot":false,"src":"14399:13:45","valueSize":1},{"declaration":8181,"isOffset":false,"isSlot":false,"src":"19383:50:45","valueSize":1},{"declaration":8175,"isOffset":false,"isSlot":false,"src":"19044:48:45","valueSize":1},{"declaration":8184,"isOffset":false,"isSlot":false,"src":"19633:46:45","valueSize":1},{"declaration":8169,"isOffset":false,"isSlot":false,"src":"18660:47:45","valueSize":1},{"declaration":8169,"isOffset":false,"isSlot":false,"src":"19556:47:45","valueSize":1},{"declaration":8166,"isOffset":false,"isSlot":false,"src":"18737:49:45","valueSize":1},{"declaration":8178,"isOffset":false,"isSlot":false,"src":"19218:46:45","valueSize":1},{"declaration":8172,"isOffset":false,"isSlot":false,"src":"18873:49:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"14996:11:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"15649:11:45","valueSize":1},{"declaration":8059,"isOffset":false,"isSlot":false,"src":"11589:25:45","valueSize":1},{"declaration":8062,"isOffset":false,"isSlot":false,"src":"12244:21:45","valueSize":1},{"declaration":8053,"isOffset":false,"isSlot":false,"src":"11474:22:45","valueSize":1},{"declaration":8053,"isOffset":false,"isSlot":false,"src":"12204:22:45","valueSize":1},{"declaration":8050,"isOffset":false,"isSlot":false,"src":"11498:24:45","valueSize":1},{"declaration":8056,"isOffset":false,"isSlot":false,"src":"11543:21:45","valueSize":1},{"declaration":8187,"isOffset":false,"isSlot":false,"src":"16707:14:45","valueSize":1},{"declaration":8012,"isOffset":false,"isSlot":false,"src":"11354:21:45","valueSize":1},{"declaration":8012,"isOffset":false,"isSlot":false,"src":"20346:21:45","valueSize":1},{"declaration":8193,"isOffset":false,"isSlot":false,"src":"16246:26:45","valueSize":1},{"declaration":8137,"isOffset":false,"isSlot":false,"src":"20006:23:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"19837:24:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"19980:24:45","valueSize":1},{"declaration":8128,"isOffset":false,"isSlot":false,"src":"19863:26:45","valueSize":1},{"declaration":8134,"isOffset":false,"isSlot":false,"src":"19918:26:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"12302:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"14451:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"14857:7:45","valueSize":1},{"declaration":8159,"isOffset":false,"isSlot":false,"src":"18094:44:45","valueSize":1},{"declaration":8150,"isOffset":false,"isSlot":false,"src":"17749:42:45","valueSize":1},{"declaration":8156,"isOffset":false,"isSlot":false,"src":"17981:40:45","valueSize":1},{"declaration":8162,"isOffset":false,"isSlot":false,"src":"18352:40:45","valueSize":1},{"declaration":8144,"isOffset":false,"isSlot":false,"src":"17351:41:45","valueSize":1},{"declaration":8144,"isOffset":false,"isSlot":false,"src":"18277:41:45","valueSize":1},{"declaration":8141,"isOffset":false,"isSlot":false,"src":"17426:43:45","valueSize":1},{"declaration":8153,"isOffset":false,"isSlot":false,"src":"17900:40:45","valueSize":1},{"declaration":8147,"isOffset":false,"isSlot":false,"src":"17568:43:45","valueSize":1},{"declaration":8015,"isOffset":false,"isSlot":false,"src":"20447:8:45","valueSize":1},{"declaration":7949,"isOffset":false,"isSlot":false,"src":"11616:6:45","valueSize":1},{"declaration":7949,"isOffset":false,"isSlot":false,"src":"18172:6:45","valueSize":1},{"declaration":7949,"isOffset":false,"isSlot":false,"src":"19463:6:45","valueSize":1},{"declaration":7947,"isOffset":false,"isSlot":false,"src":"11566:2:45","valueSize":1},{"declaration":7947,"isOffset":false,"isSlot":false,"src":"17942:2:45","valueSize":1},{"declaration":7947,"isOffset":false,"isSlot":false,"src":"19294:2:45","valueSize":1},{"declaration":7945,"isOffset":false,"isSlot":false,"src":"12162:5:45","valueSize":1},{"declaration":7945,"isOffset":false,"isSlot":false,"src":"13496:5:45","valueSize":1},{"declaration":7945,"isOffset":false,"isSlot":false,"src":"17645:5:45","valueSize":1},{"declaration":7945,"isOffset":false,"isSlot":false,"src":"18952:5:45","valueSize":1},{"declaration":7945,"isOffset":false,"isSlot":false,"src":"19946:5:45","valueSize":1}],"id":7952,"nodeType":"InlineAssembly","src":"11147:9322:45"}]},"id":7954,"implemented":true,"kind":"function","modifiers":[],"name":"_performSelfERC20Transfer","nameLocation":"10955:25:45","nodeType":"FunctionDefinition","parameters":{"id":7950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7945,"mutability":"mutable","name":"token","nameLocation":"10998:5:45","nodeType":"VariableDeclaration","scope":7954,"src":"10990:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7944,"name":"address","nodeType":"ElementaryTypeName","src":"10990:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7947,"mutability":"mutable","name":"to","nameLocation":"11021:2:45","nodeType":"VariableDeclaration","scope":7954,"src":"11013:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7946,"name":"address","nodeType":"ElementaryTypeName","src":"11013:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7949,"mutability":"mutable","name":"amount","nameLocation":"11041:6:45","nodeType":"VariableDeclaration","scope":7954,"src":"11033:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7948,"name":"uint256","nodeType":"ElementaryTypeName","src":"11033:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10980:73:45"},"returnParameters":{"id":7951,"nodeType":"ParameterList","parameters":[],"src":"11063:0:45"},"scope":7995,"src":"10946:9529:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7967,"nodeType":"Block","src":"21219:4774:45","statements":[{"AST":{"nodeType":"YulBlock","src":"21313:4674:45","statements":[{"body":{"nodeType":"YulBlock","src":"21406:224:45","statements":[{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"21431:24:45"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"21457:26:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21424:6:45"},"nodeType":"YulFunctionCall","src":"21424:60:45"},"nodeType":"YulExpressionStatement","src":"21424:60:45"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"21508:26:45"},{"name":"token","nodeType":"YulIdentifier","src":"21536:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21501:6:45"},"nodeType":"YulFunctionCall","src":"21501:41:45"},"nodeType":"YulExpressionStatement","src":"21501:41:45"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"21566:24:45"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"21592:23:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"21559:6:45"},"nodeType":"YulFunctionCall","src":"21559:57:45"},"nodeType":"YulExpressionStatement","src":"21559:57:45"}]},"condition":{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"21398:5:45"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"21386:11:45"},"nodeType":"YulFunctionCall","src":"21386:18:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"21379:6:45"},"nodeType":"YulFunctionCall","src":"21379:26:45"},"nodeType":"YulIf","src":"21376:254:45"},{"nodeType":"YulVariableDeclaration","src":"21804:46:45","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"21828:21:45"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21822:5:45"},"nodeType":"YulFunctionCall","src":"21822:28:45"},"variables":[{"name":"memPointer","nodeType":"YulTypedName","src":"21808:10:45","type":""}]},{"expression":{"arguments":[{"name":"ERC721_transferFrom_sig_ptr","nodeType":"YulIdentifier","src":"21945:27:45"},{"name":"ERC721_transferFrom_signature","nodeType":"YulIdentifier","src":"21974:29:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21938:6:45"},"nodeType":"YulFunctionCall","src":"21938:66:45"},"nodeType":"YulExpressionStatement","src":"21938:66:45"},{"expression":{"arguments":[{"name":"ERC721_transferFrom_from_ptr","nodeType":"YulIdentifier","src":"22024:28:45"},{"name":"from","nodeType":"YulIdentifier","src":"22054:4:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22017:6:45"},"nodeType":"YulFunctionCall","src":"22017:42:45"},"nodeType":"YulExpressionStatement","src":"22017:42:45"},{"expression":{"arguments":[{"name":"ERC721_transferFrom_to_ptr","nodeType":"YulIdentifier","src":"22079:26:45"},{"name":"to","nodeType":"YulIdentifier","src":"22107:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22072:6:45"},"nodeType":"YulFunctionCall","src":"22072:38:45"},"nodeType":"YulExpressionStatement","src":"22072:38:45"},{"expression":{"arguments":[{"name":"ERC721_transferFrom_id_ptr","nodeType":"YulIdentifier","src":"22130:26:45"},{"name":"identifier","nodeType":"YulIdentifier","src":"22158:10:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22123:6:45"},"nodeType":"YulFunctionCall","src":"22123:46:45"},"nodeType":"YulExpressionStatement","src":"22123:46:45"},{"nodeType":"YulVariableDeclaration","src":"22238:225:45","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"22275:3:45"},"nodeType":"YulFunctionCall","src":"22275:5:45"},{"name":"token","nodeType":"YulIdentifier","src":"22298:5:45"},{"kind":"number","nodeType":"YulLiteral","src":"22321:1:45","type":"","value":"0"},{"name":"ERC721_transferFrom_sig_ptr","nodeType":"YulIdentifier","src":"22340:27:45"},{"name":"ERC721_transferFrom_length","nodeType":"YulIdentifier","src":"22385:26:45"},{"kind":"number","nodeType":"YulLiteral","src":"22429:1:45","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22448:1:45","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"22253:4:45"},"nodeType":"YulFunctionCall","src":"22253:210:45"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"22242:7:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"22537:3249:45","statements":[{"body":{"nodeType":"YulBlock","src":"22696:2308:45","statements":[{"nodeType":"YulVariableDeclaration","src":"23007:143:45","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"23063:14:45"},"nodeType":"YulFunctionCall","src":"23063:16:45"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"23081:13:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23059:3:45"},"nodeType":"YulFunctionCall","src":"23059:36:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"23121:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"23030:3:45"},"nodeType":"YulFunctionCall","src":"23030:120:45"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"23011:15:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"23398:42:45","value":{"arguments":[{"name":"memPointer","nodeType":"YulIdentifier","src":"23420:10:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"23432:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"23416:3:45"},"nodeType":"YulFunctionCall","src":"23416:24:45"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"23402:10:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"23531:45:45","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"23547:11:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"23560:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"23543:3:45"},"nodeType":"YulFunctionCall","src":"23543:33:45"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"23535:4:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"23701:734:45","statements":[{"nodeType":"YulAssignment","src":"23727:686:45","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"23768:4:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"23884:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"23901:10:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23880:3:45"},"nodeType":"YulFunctionCall","src":"23880:32:45"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"23950:11:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"23839:3:45"},"nodeType":"YulFunctionCall","src":"23839:156:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"24119:15:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"24136:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"24115:3:45"},"nodeType":"YulFunctionCall","src":"24115:37:45"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"24198:10:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"24210:10:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"24194:3:45"},"nodeType":"YulFunctionCall","src":"24194:27:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24070:3:45"},"nodeType":"YulFunctionCall","src":"24070:189:45"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"24297:26:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"24029:3:45"},"nodeType":"YulFunctionCall","src":"24029:328:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23802:3:45"},"nodeType":"YulFunctionCall","src":"23802:585:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23735:3:45"},"nodeType":"YulFunctionCall","src":"23735:678:45"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"23727:4:45"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"23672:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"23689:10:45"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23669:2:45"},"nodeType":"YulFunctionCall","src":"23669:31:45"},"nodeType":"YulIf","src":"23666:769:45"},{"body":{"nodeType":"YulBlock","src":"24686:300:45","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24808:1:45","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24811:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"24814:14:45"},"nodeType":"YulFunctionCall","src":"24814:16:45"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"24793:14:45"},"nodeType":"YulFunctionCall","src":"24793:38:45"},"nodeType":"YulExpressionStatement","src":"24793:38:45"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24944:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"24947:14:45"},"nodeType":"YulFunctionCall","src":"24947:16:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24937:6:45"},"nodeType":"YulFunctionCall","src":"24937:27:45"},"nodeType":"YulExpressionStatement","src":"24937:27:45"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"24656:4:45"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"24662:14:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24652:3:45"},"nodeType":"YulFunctionCall","src":"24652:25:45"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"24679:3:45"},"nodeType":"YulFunctionCall","src":"24679:5:45"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"24649:2:45"},"nodeType":"YulFunctionCall","src":"24649:36:45"},"nodeType":"YulIf","src":"24646:340:45"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"22679:14:45"},"nodeType":"YulFunctionCall","src":"22679:16:45"},"nodeType":"YulIf","src":"22676:2328:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"25116:41:45"},{"name":"TokenTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"25179:43:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25088:6:45"},"nodeType":"YulFunctionCall","src":"25088:152:45"},"nodeType":"YulExpressionStatement","src":"25088:152:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_token_ptr","nodeType":"YulIdentifier","src":"25264:43:45"},{"name":"token","nodeType":"YulIdentifier","src":"25309:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25257:6:45"},"nodeType":"YulFunctionCall","src":"25257:58:45"},"nodeType":"YulExpressionStatement","src":"25257:58:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_from_ptr","nodeType":"YulIdentifier","src":"25339:42:45"},{"name":"from","nodeType":"YulIdentifier","src":"25383:4:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25332:6:45"},"nodeType":"YulFunctionCall","src":"25332:56:45"},"nodeType":"YulExpressionStatement","src":"25332:56:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_to_ptr","nodeType":"YulIdentifier","src":"25412:40:45"},{"name":"to","nodeType":"YulIdentifier","src":"25454:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25405:6:45"},"nodeType":"YulFunctionCall","src":"25405:52:45"},"nodeType":"YulExpressionStatement","src":"25405:52:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_id_ptr","nodeType":"YulIdentifier","src":"25481:40:45"},{"name":"identifier","nodeType":"YulIdentifier","src":"25523:10:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25474:6:45"},"nodeType":"YulFunctionCall","src":"25474:60:45"},"nodeType":"YulExpressionStatement","src":"25474:60:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_amount_ptr","nodeType":"YulIdentifier","src":"25558:44:45"},{"kind":"number","nodeType":"YulLiteral","src":"25604:1:45","type":"","value":"1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25551:6:45"},"nodeType":"YulFunctionCall","src":"25551:55:45"},"nodeType":"YulExpressionStatement","src":"25551:55:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"25651:41:45"},{"name":"TokenTransferGenericFailure_error_length","nodeType":"YulIdentifier","src":"25714:40:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25623:6:45"},"nodeType":"YulFunctionCall","src":"25623:149:45"},"nodeType":"YulExpressionStatement","src":"25623:149:45"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"22528:7:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"22521:6:45"},"nodeType":"YulFunctionCall","src":"22521:15:45"},"nodeType":"YulIf","src":"22518:3268:45"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"25864:21:45"},{"name":"memPointer","nodeType":"YulIdentifier","src":"25887:10:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25857:6:45"},"nodeType":"YulFunctionCall","src":"25857:41:45"},"nodeType":"YulExpressionStatement","src":"25857:41:45"},{"expression":{"arguments":[{"name":"ZeroSlot","nodeType":"YulIdentifier","src":"25965:8:45"},{"kind":"number","nodeType":"YulLiteral","src":"25975:1:45","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25958:6:45"},"nodeType":"YulFunctionCall","src":"25958:19:45"},"nodeType":"YulExpressionStatement","src":"25958:19:45"}]},"evmVersion":"london","externalReferences":[{"declaration":8000,"isOffset":false,"isSlot":false,"src":"23081:13:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"23547:11:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"23950:11:45","valueSize":1},{"declaration":8115,"isOffset":false,"isSlot":false,"src":"22024:28:45","valueSize":1},{"declaration":8121,"isOffset":false,"isSlot":false,"src":"22130:26:45","valueSize":1},{"declaration":8124,"isOffset":false,"isSlot":false,"src":"22385:26:45","valueSize":1},{"declaration":8112,"isOffset":false,"isSlot":false,"src":"21945:27:45","valueSize":1},{"declaration":8112,"isOffset":false,"isSlot":false,"src":"22340:27:45","valueSize":1},{"declaration":8109,"isOffset":false,"isSlot":false,"src":"21974:29:45","valueSize":1},{"declaration":8118,"isOffset":false,"isSlot":false,"src":"22079:26:45","valueSize":1},{"declaration":8187,"isOffset":false,"isSlot":false,"src":"24662:14:45","valueSize":1},{"declaration":8012,"isOffset":false,"isSlot":false,"src":"21828:21:45","valueSize":1},{"declaration":8012,"isOffset":false,"isSlot":false,"src":"25864:21:45","valueSize":1},{"declaration":8193,"isOffset":false,"isSlot":false,"src":"24297:26:45","valueSize":1},{"declaration":8137,"isOffset":false,"isSlot":false,"src":"21592:23:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"21431:24:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"21566:24:45","valueSize":1},{"declaration":8128,"isOffset":false,"isSlot":false,"src":"21457:26:45","valueSize":1},{"declaration":8134,"isOffset":false,"isSlot":false,"src":"21508:26:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"23121:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"23432:7:45","valueSize":1},{"declaration":8159,"isOffset":false,"isSlot":false,"src":"25558:44:45","valueSize":1},{"declaration":8150,"isOffset":false,"isSlot":false,"src":"25339:42:45","valueSize":1},{"declaration":8156,"isOffset":false,"isSlot":false,"src":"25481:40:45","valueSize":1},{"declaration":8162,"isOffset":false,"isSlot":false,"src":"25714:40:45","valueSize":1},{"declaration":8144,"isOffset":false,"isSlot":false,"src":"25116:41:45","valueSize":1},{"declaration":8144,"isOffset":false,"isSlot":false,"src":"25651:41:45","valueSize":1},{"declaration":8141,"isOffset":false,"isSlot":false,"src":"25179:43:45","valueSize":1},{"declaration":8153,"isOffset":false,"isSlot":false,"src":"25412:40:45","valueSize":1},{"declaration":8147,"isOffset":false,"isSlot":false,"src":"25264:43:45","valueSize":1},{"declaration":8015,"isOffset":false,"isSlot":false,"src":"25965:8:45","valueSize":1},{"declaration":7959,"isOffset":false,"isSlot":false,"src":"22054:4:45","valueSize":1},{"declaration":7959,"isOffset":false,"isSlot":false,"src":"25383:4:45","valueSize":1},{"declaration":7963,"isOffset":false,"isSlot":false,"src":"22158:10:45","valueSize":1},{"declaration":7963,"isOffset":false,"isSlot":false,"src":"25523:10:45","valueSize":1},{"declaration":7961,"isOffset":false,"isSlot":false,"src":"22107:2:45","valueSize":1},{"declaration":7961,"isOffset":false,"isSlot":false,"src":"25454:2:45","valueSize":1},{"declaration":7957,"isOffset":false,"isSlot":false,"src":"21398:5:45","valueSize":1},{"declaration":7957,"isOffset":false,"isSlot":false,"src":"21536:5:45","valueSize":1},{"declaration":7957,"isOffset":false,"isSlot":false,"src":"22298:5:45","valueSize":1},{"declaration":7957,"isOffset":false,"isSlot":false,"src":"25309:5:45","valueSize":1}],"id":7966,"nodeType":"InlineAssembly","src":"21304:4683:45"}]},"documentation":{"id":7955,"nodeType":"StructuredDocumentation","src":"20481:593:45","text":" @dev Internal function to transfer an ERC721 token from a given\n      originator to a given recipient. Sufficient approvals must be set on\n      the contract performing the transfer. Note that this function does\n      not check whether the receiver can accept the ERC721 token (i.e. it\n      does not use `safeTransferFrom`).\n @param token      The ERC721 token to transfer.\n @param from       The originator of the transfer.\n @param to         The recipient of the transfer.\n @param identifier The tokenId to transfer."},"id":7968,"implemented":true,"kind":"function","modifiers":[],"name":"_performERC721Transfer","nameLocation":"21088:22:45","nodeType":"FunctionDefinition","parameters":{"id":7964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7957,"mutability":"mutable","name":"token","nameLocation":"21128:5:45","nodeType":"VariableDeclaration","scope":7968,"src":"21120:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7956,"name":"address","nodeType":"ElementaryTypeName","src":"21120:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7959,"mutability":"mutable","name":"from","nameLocation":"21151:4:45","nodeType":"VariableDeclaration","scope":7968,"src":"21143:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7958,"name":"address","nodeType":"ElementaryTypeName","src":"21143:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7961,"mutability":"mutable","name":"to","nameLocation":"21173:2:45","nodeType":"VariableDeclaration","scope":7968,"src":"21165:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7960,"name":"address","nodeType":"ElementaryTypeName","src":"21165:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7963,"mutability":"mutable","name":"identifier","nameLocation":"21193:10:45","nodeType":"VariableDeclaration","scope":7968,"src":"21185:18:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7962,"name":"uint256","nodeType":"ElementaryTypeName","src":"21185:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21110:99:45"},"returnParameters":{"id":7965,"nodeType":"ParameterList","parameters":[],"src":"21219:0:45"},"scope":7995,"src":"21079:4914:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7983,"nodeType":"Block","src":"26806:5455:45","statements":[{"AST":{"nodeType":"YulBlock","src":"26901:5354:45","statements":[{"body":{"nodeType":"YulBlock","src":"26994:224:45","statements":[{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"27019:24:45"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"27045:26:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27012:6:45"},"nodeType":"YulFunctionCall","src":"27012:60:45"},"nodeType":"YulExpressionStatement","src":"27012:60:45"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"27096:26:45"},{"name":"token","nodeType":"YulIdentifier","src":"27124:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27089:6:45"},"nodeType":"YulFunctionCall","src":"27089:41:45"},"nodeType":"YulExpressionStatement","src":"27089:41:45"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"27154:24:45"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"27180:23:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"27147:6:45"},"nodeType":"YulFunctionCall","src":"27147:57:45"},"nodeType":"YulExpressionStatement","src":"27147:57:45"}]},"condition":{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"26986:5:45"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"26974:11:45"},"nodeType":"YulFunctionCall","src":"26974:18:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26967:6:45"},"nodeType":"YulFunctionCall","src":"26967:26:45"},"nodeType":"YulIf","src":"26964:254:45"},{"nodeType":"YulVariableDeclaration","src":"27386:46:45","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"27410:21:45"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27404:5:45"},"nodeType":"YulFunctionCall","src":"27404:28:45"},"variables":[{"name":"memPointer","nodeType":"YulTypedName","src":"27390:10:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"27445:31:45","value":{"arguments":[{"name":"Slot0x80","nodeType":"YulIdentifier","src":"27467:8:45"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27461:5:45"},"nodeType":"YulFunctionCall","src":"27461:15:45"},"variables":[{"name":"slot0x80","nodeType":"YulTypedName","src":"27449:8:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"27489:31:45","value":{"arguments":[{"name":"Slot0xA0","nodeType":"YulIdentifier","src":"27511:8:45"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27505:5:45"},"nodeType":"YulFunctionCall","src":"27505:15:45"},"variables":[{"name":"slot0xA0","nodeType":"YulTypedName","src":"27493:8:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"27533:31:45","value":{"arguments":[{"name":"Slot0xC0","nodeType":"YulIdentifier","src":"27555:8:45"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27549:5:45"},"nodeType":"YulFunctionCall","src":"27549:15:45"},"variables":[{"name":"slot0xC0","nodeType":"YulTypedName","src":"27537:8:45","type":""}]},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_sig_ptr","nodeType":"YulIdentifier","src":"27680:32:45"},{"name":"ERC1155_safeTransferFrom_signature","nodeType":"YulIdentifier","src":"27730:34:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27656:6:45"},"nodeType":"YulFunctionCall","src":"27656:122:45"},"nodeType":"YulExpressionStatement","src":"27656:122:45"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_from_ptr","nodeType":"YulIdentifier","src":"27798:33:45"},{"name":"from","nodeType":"YulIdentifier","src":"27833:4:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27791:6:45"},"nodeType":"YulFunctionCall","src":"27791:47:45"},"nodeType":"YulExpressionStatement","src":"27791:47:45"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_to_ptr","nodeType":"YulIdentifier","src":"27858:31:45"},{"name":"to","nodeType":"YulIdentifier","src":"27891:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27851:6:45"},"nodeType":"YulFunctionCall","src":"27851:43:45"},"nodeType":"YulExpressionStatement","src":"27851:43:45"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_id_ptr","nodeType":"YulIdentifier","src":"27914:31:45"},{"name":"identifier","nodeType":"YulIdentifier","src":"27947:10:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27907:6:45"},"nodeType":"YulFunctionCall","src":"27907:51:45"},"nodeType":"YulExpressionStatement","src":"27907:51:45"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_amount_ptr","nodeType":"YulIdentifier","src":"27978:35:45"},{"name":"amount","nodeType":"YulIdentifier","src":"28015:6:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27971:6:45"},"nodeType":"YulFunctionCall","src":"27971:51:45"},"nodeType":"YulExpressionStatement","src":"27971:51:45"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_data_offset_ptr","nodeType":"YulIdentifier","src":"28059:40:45"},{"name":"ERC1155_safeTransferFrom_data_length_offset","nodeType":"YulIdentifier","src":"28117:43:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28035:6:45"},"nodeType":"YulFunctionCall","src":"28035:139:45"},"nodeType":"YulExpressionStatement","src":"28035:139:45"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_data_length_ptr","nodeType":"YulIdentifier","src":"28194:40:45"},{"kind":"number","nodeType":"YulLiteral","src":"28236:1:45","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28187:6:45"},"nodeType":"YulFunctionCall","src":"28187:51:45"},"nodeType":"YulExpressionStatement","src":"28187:51:45"},{"nodeType":"YulVariableDeclaration","src":"28307:235:45","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"28344:3:45"},"nodeType":"YulFunctionCall","src":"28344:5:45"},{"name":"token","nodeType":"YulIdentifier","src":"28367:5:45"},{"kind":"number","nodeType":"YulLiteral","src":"28390:1:45","type":"","value":"0"},{"name":"ERC1155_safeTransferFrom_sig_ptr","nodeType":"YulIdentifier","src":"28409:32:45"},{"name":"ERC1155_safeTransferFrom_length","nodeType":"YulIdentifier","src":"28459:31:45"},{"kind":"number","nodeType":"YulLiteral","src":"28508:1:45","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28527:1:45","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"28322:4:45"},"nodeType":"YulFunctionCall","src":"28322:220:45"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"28311:7:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"28616:3254:45","statements":[{"body":{"nodeType":"YulBlock","src":"28775:2308:45","statements":[{"nodeType":"YulVariableDeclaration","src":"29086:143:45","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"29142:14:45"},"nodeType":"YulFunctionCall","src":"29142:16:45"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"29160:13:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29138:3:45"},"nodeType":"YulFunctionCall","src":"29138:36:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"29200:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"29109:3:45"},"nodeType":"YulFunctionCall","src":"29109:120:45"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"29090:15:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"29477:42:45","value":{"arguments":[{"name":"memPointer","nodeType":"YulIdentifier","src":"29499:10:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"29511:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"29495:3:45"},"nodeType":"YulFunctionCall","src":"29495:24:45"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"29481:10:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"29610:45:45","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"29626:11:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"29639:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"29622:3:45"},"nodeType":"YulFunctionCall","src":"29622:33:45"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"29614:4:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"29780:734:45","statements":[{"nodeType":"YulAssignment","src":"29806:686:45","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"29847:4:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"29963:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"29980:10:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29959:3:45"},"nodeType":"YulFunctionCall","src":"29959:32:45"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"30029:11:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"29918:3:45"},"nodeType":"YulFunctionCall","src":"29918:156:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"30198:15:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"30215:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"30194:3:45"},"nodeType":"YulFunctionCall","src":"30194:37:45"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"30277:10:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"30289:10:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"30273:3:45"},"nodeType":"YulFunctionCall","src":"30273:27:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"30149:3:45"},"nodeType":"YulFunctionCall","src":"30149:189:45"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"30376:26:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"30108:3:45"},"nodeType":"YulFunctionCall","src":"30108:328:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29881:3:45"},"nodeType":"YulFunctionCall","src":"29881:585:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29814:3:45"},"nodeType":"YulFunctionCall","src":"29814:678:45"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"29806:4:45"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"29751:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"29768:10:45"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"29748:2:45"},"nodeType":"YulFunctionCall","src":"29748:31:45"},"nodeType":"YulIf","src":"29745:769:45"},{"body":{"nodeType":"YulBlock","src":"30765:300:45","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30887:1:45","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30890:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"30893:14:45"},"nodeType":"YulFunctionCall","src":"30893:16:45"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"30872:14:45"},"nodeType":"YulFunctionCall","src":"30872:38:45"},"nodeType":"YulExpressionStatement","src":"30872:38:45"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"31023:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"31026:14:45"},"nodeType":"YulFunctionCall","src":"31026:16:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"31016:6:45"},"nodeType":"YulFunctionCall","src":"31016:27:45"},"nodeType":"YulExpressionStatement","src":"31016:27:45"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"30735:4:45"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"30741:14:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30731:3:45"},"nodeType":"YulFunctionCall","src":"30731:25:45"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"30758:3:45"},"nodeType":"YulFunctionCall","src":"30758:5:45"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"30728:2:45"},"nodeType":"YulFunctionCall","src":"30728:36:45"},"nodeType":"YulIf","src":"30725:340:45"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"28758:14:45"},"nodeType":"YulFunctionCall","src":"28758:16:45"},"nodeType":"YulIf","src":"28755:2328:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"31195:41:45"},{"name":"TokenTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"31258:43:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31167:6:45"},"nodeType":"YulFunctionCall","src":"31167:152:45"},"nodeType":"YulExpressionStatement","src":"31167:152:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_token_ptr","nodeType":"YulIdentifier","src":"31343:43:45"},{"name":"token","nodeType":"YulIdentifier","src":"31388:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31336:6:45"},"nodeType":"YulFunctionCall","src":"31336:58:45"},"nodeType":"YulExpressionStatement","src":"31336:58:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_from_ptr","nodeType":"YulIdentifier","src":"31418:42:45"},{"name":"from","nodeType":"YulIdentifier","src":"31462:4:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31411:6:45"},"nodeType":"YulFunctionCall","src":"31411:56:45"},"nodeType":"YulExpressionStatement","src":"31411:56:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_to_ptr","nodeType":"YulIdentifier","src":"31491:40:45"},{"name":"to","nodeType":"YulIdentifier","src":"31533:2:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31484:6:45"},"nodeType":"YulFunctionCall","src":"31484:52:45"},"nodeType":"YulExpressionStatement","src":"31484:52:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_id_ptr","nodeType":"YulIdentifier","src":"31560:40:45"},{"name":"identifier","nodeType":"YulIdentifier","src":"31602:10:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31553:6:45"},"nodeType":"YulFunctionCall","src":"31553:60:45"},"nodeType":"YulExpressionStatement","src":"31553:60:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_amount_ptr","nodeType":"YulIdentifier","src":"31637:44:45"},{"name":"amount","nodeType":"YulIdentifier","src":"31683:6:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31630:6:45"},"nodeType":"YulFunctionCall","src":"31630:60:45"},"nodeType":"YulExpressionStatement","src":"31630:60:45"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"31735:41:45"},{"name":"TokenTransferGenericFailure_error_length","nodeType":"YulIdentifier","src":"31798:40:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"31707:6:45"},"nodeType":"YulFunctionCall","src":"31707:149:45"},"nodeType":"YulExpressionStatement","src":"31707:149:45"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"28607:7:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"28600:6:45"},"nodeType":"YulFunctionCall","src":"28600:15:45"},"nodeType":"YulIf","src":"28597:3273:45"},{"expression":{"arguments":[{"name":"Slot0x80","nodeType":"YulIdentifier","src":"31891:8:45"},{"name":"slot0x80","nodeType":"YulIdentifier","src":"31901:8:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31884:6:45"},"nodeType":"YulFunctionCall","src":"31884:26:45"},"nodeType":"YulExpressionStatement","src":"31884:26:45"},{"expression":{"arguments":[{"name":"Slot0xA0","nodeType":"YulIdentifier","src":"31952:8:45"},{"name":"slot0xA0","nodeType":"YulIdentifier","src":"31962:8:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31945:6:45"},"nodeType":"YulFunctionCall","src":"31945:26:45"},"nodeType":"YulExpressionStatement","src":"31945:26:45"},{"expression":{"arguments":[{"name":"Slot0xC0","nodeType":"YulIdentifier","src":"32013:8:45"},{"name":"slot0xC0","nodeType":"YulIdentifier","src":"32023:8:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32006:6:45"},"nodeType":"YulFunctionCall","src":"32006:26:45"},"nodeType":"YulExpressionStatement","src":"32006:26:45"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"32132:21:45"},{"name":"memPointer","nodeType":"YulIdentifier","src":"32155:10:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32125:6:45"},"nodeType":"YulFunctionCall","src":"32125:41:45"},"nodeType":"YulExpressionStatement","src":"32125:41:45"},{"expression":{"arguments":[{"name":"ZeroSlot","nodeType":"YulIdentifier","src":"32233:8:45"},{"kind":"number","nodeType":"YulLiteral","src":"32243:1:45","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32226:6:45"},"nodeType":"YulFunctionCall","src":"32226:19:45"},"nodeType":"YulExpressionStatement","src":"32226:19:45"}]},"evmVersion":"london","externalReferences":[{"declaration":8000,"isOffset":false,"isSlot":false,"src":"29160:13:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"29626:11:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"30029:11:45","valueSize":1},{"declaration":8081,"isOffset":false,"isSlot":false,"src":"27978:35:45","valueSize":1},{"declaration":8093,"isOffset":false,"isSlot":false,"src":"28117:43:45","valueSize":1},{"declaration":8087,"isOffset":false,"isSlot":false,"src":"28194:40:45","valueSize":1},{"declaration":8084,"isOffset":false,"isSlot":false,"src":"28059:40:45","valueSize":1},{"declaration":8072,"isOffset":false,"isSlot":false,"src":"27798:33:45","valueSize":1},{"declaration":8078,"isOffset":false,"isSlot":false,"src":"27914:31:45","valueSize":1},{"declaration":8090,"isOffset":false,"isSlot":false,"src":"28459:31:45","valueSize":1},{"declaration":8069,"isOffset":false,"isSlot":false,"src":"27680:32:45","valueSize":1},{"declaration":8069,"isOffset":false,"isSlot":false,"src":"28409:32:45","valueSize":1},{"declaration":8066,"isOffset":false,"isSlot":false,"src":"27730:34:45","valueSize":1},{"declaration":8075,"isOffset":false,"isSlot":false,"src":"27858:31:45","valueSize":1},{"declaration":8187,"isOffset":false,"isSlot":false,"src":"30741:14:45","valueSize":1},{"declaration":8012,"isOffset":false,"isSlot":false,"src":"27410:21:45","valueSize":1},{"declaration":8012,"isOffset":false,"isSlot":false,"src":"32132:21:45","valueSize":1},{"declaration":8193,"isOffset":false,"isSlot":false,"src":"30376:26:45","valueSize":1},{"declaration":8137,"isOffset":false,"isSlot":false,"src":"27180:23:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"27019:24:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"27154:24:45","valueSize":1},{"declaration":8128,"isOffset":false,"isSlot":false,"src":"27045:26:45","valueSize":1},{"declaration":8134,"isOffset":false,"isSlot":false,"src":"27096:26:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"29200:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"29511:7:45","valueSize":1},{"declaration":8021,"isOffset":false,"isSlot":false,"src":"27467:8:45","valueSize":1},{"declaration":8021,"isOffset":false,"isSlot":false,"src":"31891:8:45","valueSize":1},{"declaration":8024,"isOffset":false,"isSlot":false,"src":"27511:8:45","valueSize":1},{"declaration":8024,"isOffset":false,"isSlot":false,"src":"31952:8:45","valueSize":1},{"declaration":8027,"isOffset":false,"isSlot":false,"src":"27555:8:45","valueSize":1},{"declaration":8027,"isOffset":false,"isSlot":false,"src":"32013:8:45","valueSize":1},{"declaration":8159,"isOffset":false,"isSlot":false,"src":"31637:44:45","valueSize":1},{"declaration":8150,"isOffset":false,"isSlot":false,"src":"31418:42:45","valueSize":1},{"declaration":8156,"isOffset":false,"isSlot":false,"src":"31560:40:45","valueSize":1},{"declaration":8162,"isOffset":false,"isSlot":false,"src":"31798:40:45","valueSize":1},{"declaration":8144,"isOffset":false,"isSlot":false,"src":"31195:41:45","valueSize":1},{"declaration":8144,"isOffset":false,"isSlot":false,"src":"31735:41:45","valueSize":1},{"declaration":8141,"isOffset":false,"isSlot":false,"src":"31258:43:45","valueSize":1},{"declaration":8153,"isOffset":false,"isSlot":false,"src":"31491:40:45","valueSize":1},{"declaration":8147,"isOffset":false,"isSlot":false,"src":"31343:43:45","valueSize":1},{"declaration":8015,"isOffset":false,"isSlot":false,"src":"32233:8:45","valueSize":1},{"declaration":7979,"isOffset":false,"isSlot":false,"src":"28015:6:45","valueSize":1},{"declaration":7979,"isOffset":false,"isSlot":false,"src":"31683:6:45","valueSize":1},{"declaration":7973,"isOffset":false,"isSlot":false,"src":"27833:4:45","valueSize":1},{"declaration":7973,"isOffset":false,"isSlot":false,"src":"31462:4:45","valueSize":1},{"declaration":7977,"isOffset":false,"isSlot":false,"src":"27947:10:45","valueSize":1},{"declaration":7977,"isOffset":false,"isSlot":false,"src":"31602:10:45","valueSize":1},{"declaration":7975,"isOffset":false,"isSlot":false,"src":"27891:2:45","valueSize":1},{"declaration":7975,"isOffset":false,"isSlot":false,"src":"31533:2:45","valueSize":1},{"declaration":7971,"isOffset":false,"isSlot":false,"src":"26986:5:45","valueSize":1},{"declaration":7971,"isOffset":false,"isSlot":false,"src":"27124:5:45","valueSize":1},{"declaration":7971,"isOffset":false,"isSlot":false,"src":"28367:5:45","valueSize":1},{"declaration":7971,"isOffset":false,"isSlot":false,"src":"31388:5:45","valueSize":1}],"id":7982,"nodeType":"InlineAssembly","src":"26892:5363:45"}]},"documentation":{"id":7969,"nodeType":"StructuredDocumentation","src":"25999:637:45","text":" @dev Internal function to transfer ERC1155 tokens from a given\n      originator to a given recipient. Sufficient approvals must be set on\n      the contract performing the transfer and contract recipients must\n      implement the ERC1155TokenReceiver interface to indicate that they\n      are willing to accept the transfer.\n @param token      The ERC1155 token to transfer.\n @param from       The originator of the transfer.\n @param to         The recipient of the transfer.\n @param identifier The id to transfer.\n @param amount     The amount to transfer."},"id":7984,"implemented":true,"kind":"function","modifiers":[],"name":"_performERC1155Transfer","nameLocation":"26650:23:45","nodeType":"FunctionDefinition","parameters":{"id":7980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7971,"mutability":"mutable","name":"token","nameLocation":"26691:5:45","nodeType":"VariableDeclaration","scope":7984,"src":"26683:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7970,"name":"address","nodeType":"ElementaryTypeName","src":"26683:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7973,"mutability":"mutable","name":"from","nameLocation":"26714:4:45","nodeType":"VariableDeclaration","scope":7984,"src":"26706:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7972,"name":"address","nodeType":"ElementaryTypeName","src":"26706:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7975,"mutability":"mutable","name":"to","nameLocation":"26736:2:45","nodeType":"VariableDeclaration","scope":7984,"src":"26728:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7974,"name":"address","nodeType":"ElementaryTypeName","src":"26728:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7977,"mutability":"mutable","name":"identifier","nameLocation":"26756:10:45","nodeType":"VariableDeclaration","scope":7984,"src":"26748:18:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7976,"name":"uint256","nodeType":"ElementaryTypeName","src":"26748:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7979,"mutability":"mutable","name":"amount","nameLocation":"26784:6:45","nodeType":"VariableDeclaration","scope":7984,"src":"26776:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7978,"name":"uint256","nodeType":"ElementaryTypeName","src":"26776:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26673:123:45"},"returnParameters":{"id":7981,"nodeType":"ParameterList","parameters":[],"src":"26806:0:45"},"scope":7995,"src":"26641:5620:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7993,"nodeType":"Block","src":"33326:11369:45","statements":[{"AST":{"nodeType":"YulBlock","src":"33416:11273:45","statements":[{"nodeType":"YulVariableDeclaration","src":"33430:32:45","value":{"name":"batchTransfers.length","nodeType":"YulIdentifier","src":"33441:21:45"},"variables":[{"name":"len","nodeType":"YulTypedName","src":"33434:3:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"33702:47:45","value":{"name":"batchTransfers.offset","nodeType":"YulIdentifier","src":"33728:21:45"},"variables":[{"name":"nextElementHeadPtr","nodeType":"YulTypedName","src":"33706:18:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"33988:38:45","value":{"name":"nextElementHeadPtr","nodeType":"YulIdentifier","src":"34008:18:45"},"variables":[{"name":"arrayHeadPtr","nodeType":"YulTypedName","src":"33992:12:45","type":""}]},{"expression":{"arguments":[{"name":"ConduitBatch1155Transfer_from_offset","nodeType":"YulIdentifier","src":"34224:36:45"},{"name":"ERC1155_safeBatchTransferFrom_signature","nodeType":"YulIdentifier","src":"34278:39:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34200:6:45"},"nodeType":"YulFunctionCall","src":"34200:131:45"},"nodeType":"YulExpressionStatement","src":"34200:131:45"},{"body":{"nodeType":"YulBlock","src":"34499:9791:45","statements":[{"nodeType":"YulVariableDeclaration","src":"34736:127:45","value":{"arguments":[{"name":"arrayHeadPtr","nodeType":"YulIdentifier","src":"34779:12:45"},{"arguments":[{"name":"nextElementHeadPtr","nodeType":"YulIdentifier","src":"34826:18:45"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"34813:12:45"},"nodeType":"YulFunctionCall","src":"34813:32:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34754:3:45"},"nodeType":"YulFunctionCall","src":"34754:109:45"},"variables":[{"name":"elementPtr","nodeType":"YulTypedName","src":"34740:10:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"34934:37:45","value":{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"34960:10:45"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"34947:12:45"},"nodeType":"YulFunctionCall","src":"34947:24:45"},"variables":[{"name":"token","nodeType":"YulTypedName","src":"34938:5:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"35072:240:45","statements":[{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"35101:24:45"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"35127:26:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35094:6:45"},"nodeType":"YulFunctionCall","src":"35094:60:45"},"nodeType":"YulExpressionStatement","src":"35094:60:45"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"35182:26:45"},{"name":"token","nodeType":"YulIdentifier","src":"35210:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35175:6:45"},"nodeType":"YulFunctionCall","src":"35175:41:45"},"nodeType":"YulExpressionStatement","src":"35175:41:45"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"35244:24:45"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"35270:23:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"35237:6:45"},"nodeType":"YulFunctionCall","src":"35237:57:45"},"nodeType":"YulExpressionStatement","src":"35237:57:45"}]},"condition":{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"35064:5:45"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"35052:11:45"},"nodeType":"YulFunctionCall","src":"35052:18:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"35045:6:45"},"nodeType":"YulFunctionCall","src":"35045:26:45"},"nodeType":"YulIf","src":"35042:270:45"},{"nodeType":"YulVariableDeclaration","src":"35387:128:45","value":{"arguments":[{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"35442:10:45"},{"name":"ConduitBatch1155Transfer_ids_length_offset","nodeType":"YulIdentifier","src":"35454:42:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35438:3:45"},"nodeType":"YulFunctionCall","src":"35438:59:45"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"35404:12:45"},"nodeType":"YulFunctionCall","src":"35404:111:45"},"variables":[{"name":"idsLength","nodeType":"YulTypedName","src":"35391:9:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"35605:167:45","value":{"arguments":[{"name":"ConduitBatch1155Transfer_amounts_length_baseOffset","nodeType":"YulIdentifier","src":"35659:50:45"},{"arguments":[{"name":"idsLength","nodeType":"YulIdentifier","src":"35735:9:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"35746:7:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"35731:3:45"},"nodeType":"YulFunctionCall","src":"35731:23:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35634:3:45"},"nodeType":"YulFunctionCall","src":"35634:138:45"},"variables":[{"name":"expectedAmountsOffset","nodeType":"YulTypedName","src":"35609:21:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"35835:1341:45","value":{"arguments":[{"arguments":[{"arguments":[{"name":"idsLength","nodeType":"YulIdentifier","src":"36003:9:45"},{"arguments":[{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"36059:10:45"},{"name":"expectedAmountsOffset","nodeType":"YulIdentifier","src":"36071:21:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36055:3:45"},"nodeType":"YulFunctionCall","src":"36055:38:45"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"36042:12:45"},"nodeType":"YulFunctionCall","src":"36042:52:45"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"35971:2:45"},"nodeType":"YulFunctionCall","src":"35971:149:45"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"36360:10:45"},{"name":"ConduitBatch1155Transfer_ids_head_offset","nodeType":"YulIdentifier","src":"36412:40:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36315:3:45"},"nodeType":"YulFunctionCall","src":"36315:175:45"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"36265:12:45"},"nodeType":"YulFunctionCall","src":"36265:259:45"},{"name":"ConduitBatch1155Transfer_ids_length_offset","nodeType":"YulIdentifier","src":"36558:42:45"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"36229:2:45"},"nodeType":"YulFunctionCall","src":"36229:401:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"36861:10:45"},{"name":"ConduitBatchTransfer_amounts_head_offset","nodeType":"YulIdentifier","src":"36913:40:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36816:3:45"},"nodeType":"YulFunctionCall","src":"36816:175:45"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"36766:12:45"},"nodeType":"YulFunctionCall","src":"36766:259:45"},{"name":"expectedAmountsOffset","nodeType":"YulIdentifier","src":"37059:21:45"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"36730:2:45"},"nodeType":"YulFunctionCall","src":"36730:380:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"36146:3:45"},"nodeType":"YulFunctionCall","src":"36146:990:45"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"35886:3:45"},"nodeType":"YulFunctionCall","src":"35886:1272:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"35858:6:45"},"nodeType":"YulFunctionCall","src":"35858:1318:45"},"variables":[{"name":"invalidEncoding","nodeType":"YulTypedName","src":"35839:15:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"37283:373:45","statements":[{"expression":{"arguments":[{"name":"Invalid1155BatchTransferEncoding_ptr","nodeType":"YulIdentifier","src":"37337:36:45"},{"name":"Invalid1155BatchTransferEncoding_selector","nodeType":"YulIdentifier","src":"37399:41:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"37305:6:45"},"nodeType":"YulFunctionCall","src":"37305:157:45"},"nodeType":"YulExpressionStatement","src":"37305:157:45"},{"expression":{"arguments":[{"name":"Invalid1155BatchTransferEncoding_ptr","nodeType":"YulIdentifier","src":"37515:36:45"},{"name":"Invalid1155BatchTransferEncoding_length","nodeType":"YulIdentifier","src":"37577:39:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"37483:6:45"},"nodeType":"YulFunctionCall","src":"37483:155:45"},"nodeType":"YulExpressionStatement","src":"37483:155:45"}]},"condition":{"name":"invalidEncoding","nodeType":"YulIdentifier","src":"37267:15:45"},"nodeType":"YulIf","src":"37264:392:45"},{"nodeType":"YulAssignment","src":"37738:54:45","value":{"arguments":[{"name":"nextElementHeadPtr","nodeType":"YulIdentifier","src":"37764:18:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"37784:7:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37760:3:45"},"nodeType":"YulFunctionCall","src":"37760:32:45"},"variableNames":[{"name":"nextElementHeadPtr","nodeType":"YulIdentifier","src":"37738:18:45"}]},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_ptr","nodeType":"YulIdentifier","src":"37923:27:45"},{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"37976:10:45"},{"name":"ConduitBatch1155Transfer_from_offset","nodeType":"YulIdentifier","src":"37988:36:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37972:3:45"},"nodeType":"YulFunctionCall","src":"37972:53:45"},{"name":"ConduitBatch1155Transfer_usable_head_size","nodeType":"YulIdentifier","src":"38047:41:45"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"37889:12:45"},"nodeType":"YulFunctionCall","src":"37889:217:45"},"nodeType":"YulExpressionStatement","src":"37889:217:45"},{"nodeType":"YulVariableDeclaration","src":"38281:64:45","value":{"arguments":[{"name":"TwoWords","nodeType":"YulIdentifier","src":"38310:8:45"},{"arguments":[{"name":"idsLength","nodeType":"YulIdentifier","src":"38324:9:45"},{"name":"TwoWords","nodeType":"YulIdentifier","src":"38335:8:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"38320:3:45"},"nodeType":"YulFunctionCall","src":"38320:24:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38306:3:45"},"nodeType":"YulFunctionCall","src":"38306:39:45"},"variables":[{"name":"idsAndAmountsSize","nodeType":"YulTypedName","src":"38285:17:45","type":""}]},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_data_head_ptr","nodeType":"YulIdentifier","src":"38458:37:45"},{"arguments":[{"name":"BatchTransfer1155Params_ids_length_offset","nodeType":"YulIdentifier","src":"38546:41:45"},{"name":"idsAndAmountsSize","nodeType":"YulIdentifier","src":"38613:17:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38517:3:45"},"nodeType":"YulFunctionCall","src":"38517:135:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"38430:6:45"},"nodeType":"YulFunctionCall","src":"38430:240:45"},"nodeType":"YulExpressionStatement","src":"38430:240:45"},{"expression":{"arguments":[{"arguments":[{"name":"BatchTransfer1155Params_data_length_basePtr","nodeType":"YulIdentifier","src":"38816:43:45"},{"name":"idsAndAmountsSize","nodeType":"YulIdentifier","src":"38885:17:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38787:3:45"},"nodeType":"YulFunctionCall","src":"38787:137:45"},{"kind":"number","nodeType":"YulLiteral","src":"38946:1:45","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"38759:6:45"},"nodeType":"YulFunctionCall","src":"38759:206:45"},"nodeType":"YulExpressionStatement","src":"38759:206:45"},{"nodeType":"YulVariableDeclaration","src":"39062:147:45","value":{"arguments":[{"name":"BatchTransfer1155Params_calldata_baseSize","nodeType":"YulIdentifier","src":"39111:41:45"},{"name":"idsAndAmountsSize","nodeType":"YulIdentifier","src":"39174:17:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39086:3:45"},"nodeType":"YulFunctionCall","src":"39086:123:45"},"variables":[{"name":"transferDataSize","nodeType":"YulTypedName","src":"39066:16:45","type":""}]},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_ids_length_ptr","nodeType":"YulIdentifier","src":"39340:38:45"},{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"39404:10:45"},{"name":"ConduitBatch1155Transfer_ids_length_offset","nodeType":"YulIdentifier","src":"39416:42:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39400:3:45"},"nodeType":"YulFunctionCall","src":"39400:59:45"},{"name":"idsAndAmountsSize","nodeType":"YulIdentifier","src":"39481:17:45"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"39306:12:45"},"nodeType":"YulFunctionCall","src":"39306:210:45"},"nodeType":"YulExpressionStatement","src":"39306:210:45"},{"nodeType":"YulVariableDeclaration","src":"39595:318:45","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"39636:3:45"},"nodeType":"YulFunctionCall","src":"39636:5:45"},{"name":"token","nodeType":"YulIdentifier","src":"39663:5:45"},{"kind":"number","nodeType":"YulLiteral","src":"39690:1:45","type":"","value":"0"},{"name":"ConduitBatch1155Transfer_from_offset","nodeType":"YulIdentifier","src":"39713:36:45"},{"name":"transferDataSize","nodeType":"YulIdentifier","src":"39794:16:45"},{"kind":"number","nodeType":"YulLiteral","src":"39871:1:45","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"39894:1:45","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"39610:4:45"},"nodeType":"YulFunctionCall","src":"39610:303:45"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"39599:7:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"39995:4281:45","statements":[{"body":{"nodeType":"YulBlock","src":"40166:2976:45","statements":[{"nodeType":"YulVariableDeclaration","src":"40499:155:45","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"40559:14:45"},"nodeType":"YulFunctionCall","src":"40559:16:45"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"40577:13:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40555:3:45"},"nodeType":"YulFunctionCall","src":"40555:36:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"40621:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"40522:3:45"},"nodeType":"YulFunctionCall","src":"40522:132:45"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"40503:15:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"41275:48:45","value":{"arguments":[{"name":"transferDataSize","nodeType":"YulIdentifier","src":"41297:16:45"},{"name":"OneWord","nodeType":"YulIdentifier","src":"41315:7:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"41293:3:45"},"nodeType":"YulFunctionCall","src":"41293:30:45"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"41279:10:45","type":""}]},{"nodeType":"YulVariableDeclaration","src":"41422:45:45","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"41438:11:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"41451:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"41434:3:45"},"nodeType":"YulFunctionCall","src":"41434:33:45"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"41426:4:45","type":""}]},{"body":{"nodeType":"YulBlock","src":"41600:944:45","statements":[{"nodeType":"YulAssignment","src":"41630:888:45","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"41675:4:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"41803:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"41820:10:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"41799:3:45"},"nodeType":"YulFunctionCall","src":"41799:32:45"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"41873:11:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"41754:3:45"},"nodeType":"YulFunctionCall","src":"41754:168:45"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"42107:15:45"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"42172:15:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"42054:3:45"},"nodeType":"YulFunctionCall","src":"42054:179:45"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"42283:10:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"42295:10:45"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"42279:3:45"},"nodeType":"YulFunctionCall","src":"42279:27:45"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"42005:3:45"},"nodeType":"YulFunctionCall","src":"42005:343:45"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"42390:26:45"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"41960:3:45"},"nodeType":"YulFunctionCall","src":"41960:494:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41713:3:45"},"nodeType":"YulFunctionCall","src":"41713:775:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41638:3:45"},"nodeType":"YulFunctionCall","src":"41638:880:45"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"41630:4:45"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"41571:15:45"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"41588:10:45"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"41568:2:45"},"nodeType":"YulFunctionCall","src":"41568:31:45"},"nodeType":"YulIf","src":"41565:979:45"},{"body":{"nodeType":"YulBlock","src":"42811:309:45","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"42934:1:45","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"42937:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"42940:14:45"},"nodeType":"YulFunctionCall","src":"42940:16:45"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"42919:14:45"},"nodeType":"YulFunctionCall","src":"42919:38:45"},"nodeType":"YulExpressionStatement","src":"42919:38:45"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"43074:1:45","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"43077:14:45"},"nodeType":"YulFunctionCall","src":"43077:16:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"43067:6:45"},"nodeType":"YulFunctionCall","src":"43067:27:45"},"nodeType":"YulExpressionStatement","src":"43067:27:45"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"42781:4:45"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"42787:14:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42777:3:45"},"nodeType":"YulFunctionCall","src":"42777:25:45"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"42804:3:45"},"nodeType":"YulFunctionCall","src":"42804:5:45"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"42774:2:45"},"nodeType":"YulFunctionCall","src":"42774:36:45"},"nodeType":"YulIf","src":"42771:349:45"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"40149:14:45"},"nodeType":"YulFunctionCall","src":"40149:16:45"},"nodeType":"YulIf","src":"40146:2996:45"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"43244:1:45","type":"","value":"0"},{"name":"ERC1155BatchTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"43271:50:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43212:6:45"},"nodeType":"YulFunctionCall","src":"43212:131:45"},"nodeType":"YulExpressionStatement","src":"43212:131:45"},{"expression":{"arguments":[{"name":"ERC1155BatchTransferGenericFailure_token_ptr","nodeType":"YulIdentifier","src":"43412:44:45"},{"name":"token","nodeType":"YulIdentifier","src":"43458:5:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43405:6:45"},"nodeType":"YulFunctionCall","src":"43405:59:45"},"nodeType":"YulExpressionStatement","src":"43405:59:45"},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_ids_head_ptr","nodeType":"YulIdentifier","src":"43575:36:45"},{"name":"ERC1155BatchTransferGenericFailure_ids_offset","nodeType":"YulIdentifier","src":"43637:45:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43543:6:45"},"nodeType":"YulFunctionCall","src":"43543:161:45"},"nodeType":"YulExpressionStatement","src":"43543:161:45"},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_amounts_head_ptr","nodeType":"YulIdentifier","src":"43819:40:45"},{"arguments":[{"name":"OneWord","nodeType":"YulIdentifier","src":"43918:7:45"},{"arguments":[{"name":"BatchTransfer1155Params_amounts_head_ptr","nodeType":"YulIdentifier","src":"43961:40:45"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"43955:5:45"},"nodeType":"YulFunctionCall","src":"43955:47:45"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43885:3:45"},"nodeType":"YulFunctionCall","src":"43885:143:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43787:6:45"},"nodeType":"YulFunctionCall","src":"43787:263:45"},"nodeType":"YulExpressionStatement","src":"43787:263:45"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"44238:1:45","type":"","value":"0"},{"name":"transferDataSize","nodeType":"YulIdentifier","src":"44241:16:45"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"44231:6:45"},"nodeType":"YulFunctionCall","src":"44231:27:45"},"nodeType":"YulExpressionStatement","src":"44231:27:45"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"39986:7:45"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"39979:6:45"},"nodeType":"YulFunctionCall","src":"39979:15:45"},"nodeType":"YulIf","src":"39976:4300:45"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"34444:1:45"},{"name":"len","nodeType":"YulIdentifier","src":"34447:3:45"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"34441:2:45"},"nodeType":"YulFunctionCall","src":"34441:10:45"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"34452:46:45","statements":[{"nodeType":"YulAssignment","src":"34470:14:45","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"34479:1:45"},{"kind":"number","nodeType":"YulLiteral","src":"34482:1:45","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34475:3:45"},"nodeType":"YulFunctionCall","src":"34475:9:45"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"34470:1:45"}]}]},"pre":{"nodeType":"YulBlock","src":"34398:42:45","statements":[{"nodeType":"YulVariableDeclaration","src":"34416:10:45","value":{"kind":"number","nodeType":"YulLiteral","src":"34425:1:45","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"34420:1:45","type":""}]}]},"src":"34394:9896:45"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"44631:21:45"},{"name":"DefaultFreeMemoryPointer","nodeType":"YulIdentifier","src":"44654:24:45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"44624:6:45"},"nodeType":"YulFunctionCall","src":"44624:55:45"},"nodeType":"YulExpressionStatement","src":"44624:55:45"}]},"evmVersion":"london","externalReferences":[{"declaration":8000,"isOffset":false,"isSlot":false,"src":"40577:13:45","valueSize":1},{"declaration":8202,"isOffset":false,"isSlot":false,"src":"43819:40:45","valueSize":1},{"declaration":8202,"isOffset":false,"isSlot":false,"src":"43961:40:45","valueSize":1},{"declaration":8211,"isOffset":false,"isSlot":false,"src":"39111:41:45","valueSize":1},{"declaration":8205,"isOffset":false,"isSlot":false,"src":"38458:37:45","valueSize":1},{"declaration":8208,"isOffset":false,"isSlot":false,"src":"38816:43:45","valueSize":1},{"declaration":8199,"isOffset":false,"isSlot":false,"src":"43575:36:45","valueSize":1},{"declaration":8217,"isOffset":false,"isSlot":false,"src":"38546:41:45","valueSize":1},{"declaration":8214,"isOffset":false,"isSlot":false,"src":"39340:38:45","valueSize":1},{"declaration":8196,"isOffset":false,"isSlot":false,"src":"37923:27:45","valueSize":1},{"declaration":8241,"isOffset":false,"isSlot":false,"src":"35659:50:45","valueSize":1},{"declaration":8229,"isOffset":false,"isSlot":false,"src":"34224:36:45","valueSize":1},{"declaration":8229,"isOffset":false,"isSlot":false,"src":"37988:36:45","valueSize":1},{"declaration":8229,"isOffset":false,"isSlot":false,"src":"39713:36:45","valueSize":1},{"declaration":8232,"isOffset":false,"isSlot":false,"src":"36412:40:45","valueSize":1},{"declaration":8238,"isOffset":false,"isSlot":false,"src":"35454:42:45","valueSize":1},{"declaration":8238,"isOffset":false,"isSlot":false,"src":"36558:42:45","valueSize":1},{"declaration":8238,"isOffset":false,"isSlot":false,"src":"39416:42:45","valueSize":1},{"declaration":8226,"isOffset":false,"isSlot":false,"src":"38047:41:45","valueSize":1},{"declaration":8247,"isOffset":false,"isSlot":false,"src":"36913:40:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"41438:11:45","valueSize":1},{"declaration":8190,"isOffset":false,"isSlot":false,"src":"41873:11:45","valueSize":1},{"declaration":8018,"isOffset":false,"isSlot":false,"src":"44654:24:45","valueSize":1},{"declaration":8261,"isOffset":false,"isSlot":false,"src":"43271:50:45","valueSize":1},{"declaration":8267,"isOffset":false,"isSlot":false,"src":"43637:45:45","valueSize":1},{"declaration":8264,"isOffset":false,"isSlot":false,"src":"43412:44:45","valueSize":1},{"declaration":8097,"isOffset":false,"isSlot":false,"src":"34278:39:45","valueSize":1},{"declaration":8187,"isOffset":false,"isSlot":false,"src":"42787:14:45","valueSize":1},{"declaration":8012,"isOffset":false,"isSlot":false,"src":"44631:21:45","valueSize":1},{"declaration":8253,"isOffset":false,"isSlot":false,"src":"37577:39:45","valueSize":1},{"declaration":8250,"isOffset":false,"isSlot":false,"src":"37337:36:45","valueSize":1},{"declaration":8250,"isOffset":false,"isSlot":false,"src":"37515:36:45","valueSize":1},{"declaration":8257,"isOffset":false,"isSlot":false,"src":"37399:41:45","valueSize":1},{"declaration":8193,"isOffset":false,"isSlot":false,"src":"42390:26:45","valueSize":1},{"declaration":8137,"isOffset":false,"isSlot":false,"src":"35270:23:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"35101:24:45","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"35244:24:45","valueSize":1},{"declaration":8128,"isOffset":false,"isSlot":false,"src":"35127:26:45","valueSize":1},{"declaration":8134,"isOffset":false,"isSlot":false,"src":"35182:26:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"35746:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"37784:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"40621:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"41315:7:45","valueSize":1},{"declaration":8003,"isOffset":false,"isSlot":false,"src":"43918:7:45","valueSize":1},{"declaration":8006,"isOffset":false,"isSlot":false,"src":"38310:8:45","valueSize":1},{"declaration":8006,"isOffset":false,"isSlot":false,"src":"38335:8:45","valueSize":1},{"declaration":7989,"isOffset":false,"isSlot":false,"src":"33441:21:45","suffix":"length","valueSize":1},{"declaration":7989,"isOffset":true,"isSlot":false,"src":"33728:21:45","suffix":"offset","valueSize":1}],"id":7992,"nodeType":"InlineAssembly","src":"33407:11282:45"}]},"documentation":{"id":7985,"nodeType":"StructuredDocumentation","src":"32267:940:45","text":" @dev Internal function to transfer ERC1155 tokens from a given\n      originator to a given recipient. Sufficient approvals must be set on\n      the contract performing the transfer and contract recipients must\n      implement the ERC1155TokenReceiver interface to indicate that they\n      are willing to accept the transfer. NOTE: this function is not\n      memory-safe; it will overwrite existing memory, restore the free\n      memory pointer to the default value, and overwrite the zero slot.\n      This function should only be called once memory is no longer\n      required and when uninitialized arrays are not utilized, and memory\n      should be considered fully corrupted (aside from the existence of a\n      default-value free memory pointer) after calling this function.\n @param batchTransfers The group of 1155 batch transfers to perform."},"id":7994,"implemented":true,"kind":"function","modifiers":[],"name":"_performERC1155BatchTransfers","nameLocation":"33221:29:45","nodeType":"FunctionDefinition","parameters":{"id":7990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7989,"mutability":"mutable","name":"batchTransfers","nameLocation":"33296:14:45","nodeType":"VariableDeclaration","scope":7994,"src":"33260:50:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer[]"},"typeName":{"baseType":{"id":7987,"nodeType":"UserDefinedTypeName","pathNode":{"id":7986,"name":"ConduitBatch1155Transfer","nodeType":"IdentifierPath","referencedDeclaration":3673,"src":"33260:24:45"},"referencedDeclaration":3673,"src":"33260:24:45","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitBatch1155Transfer_$3673_storage_ptr","typeString":"struct ConduitBatch1155Transfer"}},"id":7988,"nodeType":"ArrayTypeName","src":"33260:26:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$3673_storage_$dyn_storage_ptr","typeString":"struct ConduitBatch1155Transfer[]"}},"visibility":"internal"}],"src":"33250:66:45"},"returnParameters":{"id":7991,"nodeType":"ParameterList","parameters":[],"src":"33326:0:45"},"scope":7995,"src":"33212:11483:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":7996,"src":"829:43868:45","usedErrors":[4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"32:44666:45"},"id":45},"contracts/lib/TokenTransferrerConstants.sol":{"ast":{"absolutePath":"contracts/lib/TokenTransferrerConstants.sol","exportedSymbols":{"AlmostOneWord":[8000],"BadReturnValueFromERC20OnTransfer_error_amount_ptr":[8181],"BadReturnValueFromERC20OnTransfer_error_from_ptr":[8175],"BadReturnValueFromERC20OnTransfer_error_length":[8184],"BadReturnValueFromERC20OnTransfer_error_sig_ptr":[8169],"BadReturnValueFromERC20OnTransfer_error_signature":[8166],"BadReturnValueFromERC20OnTransfer_error_to_ptr":[8178],"BadReturnValueFromERC20OnTransfer_error_token_ptr":[8172],"BatchTransfer1155Params_amounts_head_ptr":[8202],"BatchTransfer1155Params_amounts_length_baseOffset":[8220],"BatchTransfer1155Params_calldata_baseSize":[8211],"BatchTransfer1155Params_data_head_ptr":[8205],"BatchTransfer1155Params_data_length_baseOffset":[8223],"BatchTransfer1155Params_data_length_basePtr":[8208],"BatchTransfer1155Params_ids_head_ptr":[8199],"BatchTransfer1155Params_ids_length_offset":[8217],"BatchTransfer1155Params_ids_length_ptr":[8214],"BatchTransfer1155Params_ptr":[8196],"ConduitBatch1155Transfer_amounts_head_offset":[8235],"ConduitBatch1155Transfer_amounts_length_baseOffset":[8241],"ConduitBatch1155Transfer_calldata_baseSize":[8244],"ConduitBatch1155Transfer_from_offset":[8229],"ConduitBatch1155Transfer_ids_head_offset":[8232],"ConduitBatch1155Transfer_ids_length_offset":[8238],"ConduitBatch1155Transfer_usable_head_size":[8226],"ConduitBatchTransfer_amounts_head_offset":[8247],"CostPerWord":[8190],"DefaultFreeMemoryPointer":[8018],"ERC1155BatchTransferGenericFailure_error_signature":[8261],"ERC1155BatchTransferGenericFailure_ids_offset":[8267],"ERC1155BatchTransferGenericFailure_token_ptr":[8264],"ERC1155_safeBatchTransferFrom_selector":[8106],"ERC1155_safeBatchTransferFrom_signature":[8097],"ERC1155_safeTransferFrom_amount_ptr":[8081],"ERC1155_safeTransferFrom_data_length_offset":[8093],"ERC1155_safeTransferFrom_data_length_ptr":[8087],"ERC1155_safeTransferFrom_data_offset_ptr":[8084],"ERC1155_safeTransferFrom_from_ptr":[8072],"ERC1155_safeTransferFrom_id_ptr":[8078],"ERC1155_safeTransferFrom_length":[8090],"ERC1155_safeTransferFrom_sig_ptr":[8069],"ERC1155_safeTransferFrom_signature":[8066],"ERC1155_safeTransferFrom_to_ptr":[8075],"ERC20_transferFrom_amount_ptr":[8043],"ERC20_transferFrom_from_ptr":[8037],"ERC20_transferFrom_length":[8046],"ERC20_transferFrom_sig_ptr":[8034],"ERC20_transferFrom_signature":[8031],"ERC20_transferFrom_to_ptr":[8040],"ERC20_transfer_amount_ptr":[8059],"ERC20_transfer_length":[8062],"ERC20_transfer_sig_ptr":[8053],"ERC20_transfer_signature":[8050],"ERC20_transfer_to_ptr":[8056],"ERC721_transferFrom_from_ptr":[8115],"ERC721_transferFrom_id_ptr":[8121],"ERC721_transferFrom_length":[8124],"ERC721_transferFrom_sig_ptr":[8112],"ERC721_transferFrom_signature":[8109],"ERC721_transferFrom_to_ptr":[8118],"ExtraGasBuffer":[8187],"FreeMemoryPointerSlot":[8012],"Invalid1155BatchTransferEncoding_length":[8253],"Invalid1155BatchTransferEncoding_ptr":[8250],"Invalid1155BatchTransferEncoding_selector":[8257],"MemoryExpansionCoefficient":[8193],"NoContract_error_length":[8137],"NoContract_error_sig_ptr":[8131],"NoContract_error_signature":[8128],"NoContract_error_token_ptr":[8134],"OneWord":[8003],"Slot0x80":[8021],"Slot0xA0":[8024],"Slot0xC0":[8027],"ThreeWords":[8009],"TokenTransferGenericFailure_error_amount_ptr":[8159],"TokenTransferGenericFailure_error_from_ptr":[8150],"TokenTransferGenericFailure_error_id_ptr":[8156],"TokenTransferGenericFailure_error_length":[8162],"TokenTransferGenericFailure_error_sig_ptr":[8144],"TokenTransferGenericFailure_error_signature":[8141],"TokenTransferGenericFailure_error_to_ptr":[8153],"TokenTransferGenericFailure_error_token_ptr":[8147],"TwoWords":[8006],"ZeroSlot":[8015]},"id":8268,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7997,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:46"},{"constant":true,"id":8000,"mutability":"constant","name":"AlmostOneWord","nameLocation":"1807:13:46","nodeType":"VariableDeclaration","scope":8268,"src":"1790:37:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7998,"name":"uint256","nodeType":"ElementaryTypeName","src":"1790:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783166","id":7999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1823:4:46","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"0x1f"},"visibility":"internal"},{"constant":true,"id":8003,"mutability":"constant","name":"OneWord","nameLocation":"1846:7:46","nodeType":"VariableDeclaration","scope":8268,"src":"1829:31:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8001,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":8002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:4:46","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":8006,"mutability":"constant","name":"TwoWords","nameLocation":"1879:8:46","nodeType":"VariableDeclaration","scope":8268,"src":"1862:32:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8004,"name":"uint256","nodeType":"ElementaryTypeName","src":"1862:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":8005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:4:46","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":8009,"mutability":"constant","name":"ThreeWords","nameLocation":"1913:10:46","nodeType":"VariableDeclaration","scope":8268,"src":"1896:34:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8007,"name":"uint256","nodeType":"ElementaryTypeName","src":"1896:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":8008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1926:4:46","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":8012,"mutability":"constant","name":"FreeMemoryPointerSlot","nameLocation":"1950:21:46","nodeType":"VariableDeclaration","scope":8268,"src":"1933:45:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8010,"name":"uint256","nodeType":"ElementaryTypeName","src":"1933:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":8011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1974:4:46","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":8015,"mutability":"constant","name":"ZeroSlot","nameLocation":"1997:8:46","nodeType":"VariableDeclaration","scope":8268,"src":"1980:32:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8013,"name":"uint256","nodeType":"ElementaryTypeName","src":"1980:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":8014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2008:4:46","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":8018,"mutability":"constant","name":"DefaultFreeMemoryPointer","nameLocation":"2031:24:46","nodeType":"VariableDeclaration","scope":8268,"src":"2014:48:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8016,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":8017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2058:4:46","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":8021,"mutability":"constant","name":"Slot0x80","nameLocation":"2082:8:46","nodeType":"VariableDeclaration","scope":8268,"src":"2065:32:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8019,"name":"uint256","nodeType":"ElementaryTypeName","src":"2065:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":8020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2093:4:46","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":8024,"mutability":"constant","name":"Slot0xA0","nameLocation":"2116:8:46","nodeType":"VariableDeclaration","scope":8268,"src":"2099:32:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8022,"name":"uint256","nodeType":"ElementaryTypeName","src":"2099:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":8023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2127:4:46","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":8027,"mutability":"constant","name":"Slot0xC0","nameLocation":"2150:8:46","nodeType":"VariableDeclaration","scope":8268,"src":"2133:32:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8025,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":8026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2161:4:46","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":8031,"mutability":"constant","name":"ERC20_transferFrom_signature","nameLocation":"2253:28:46","nodeType":"VariableDeclaration","scope":8268,"src":"2236:122:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8028,"name":"uint256","nodeType":"ElementaryTypeName","src":"2236:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307832336238373264643030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":8029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2290:66:46","typeDescriptions":{"typeIdentifier":"t_rational_16156842317565293874272834530371880720966471053262404558597773956279093428224_by_1","typeString":"int_const 1615...(69 digits omitted)...8224"},"value":"0x23b872dd00000000000000000000000000000000000000000000000000000000"}],"id":8030,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2284:74:46","typeDescriptions":{"typeIdentifier":"t_rational_16156842317565293874272834530371880720966471053262404558597773956279093428224_by_1","typeString":"int_const 1615...(69 digits omitted)...8224"}},"visibility":"internal"},{"constant":true,"id":8034,"mutability":"constant","name":"ERC20_transferFrom_sig_ptr","nameLocation":"2377:26:46","nodeType":"VariableDeclaration","scope":8268,"src":"2360:49:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8032,"name":"uint256","nodeType":"ElementaryTypeName","src":"2360:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":8033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2406:3:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":8037,"mutability":"constant","name":"ERC20_transferFrom_from_ptr","nameLocation":"2428:27:46","nodeType":"VariableDeclaration","scope":8268,"src":"2411:51:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8035,"name":"uint256","nodeType":"ElementaryTypeName","src":"2411:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":8036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2458:4:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":8040,"mutability":"constant","name":"ERC20_transferFrom_to_ptr","nameLocation":"2481:25:46","nodeType":"VariableDeclaration","scope":8268,"src":"2464:49:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8038,"name":"uint256","nodeType":"ElementaryTypeName","src":"2464:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":8039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2509:4:46","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":8043,"mutability":"constant","name":"ERC20_transferFrom_amount_ptr","nameLocation":"2532:29:46","nodeType":"VariableDeclaration","scope":8268,"src":"2515:53:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8041,"name":"uint256","nodeType":"ElementaryTypeName","src":"2515:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":8042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2564:4:46","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":8046,"mutability":"constant","name":"ERC20_transferFrom_length","nameLocation":"2587:25:46","nodeType":"VariableDeclaration","scope":8268,"src":"2570:49:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8044,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":8045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2615:4:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":8050,"mutability":"constant","name":"ERC20_transfer_signature","nameLocation":"2716:24:46","nodeType":"VariableDeclaration","scope":8268,"src":"2699:118:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8047,"name":"uint256","nodeType":"ElementaryTypeName","src":"2699:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307861393035396362623030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":8048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2749:66:46","typeDescriptions":{"typeIdentifier":"t_rational_76450787359836037641860180984291677749980919077056822294353438043884394381312_by_1","typeString":"int_const 7645...(69 digits omitted)...1312"},"value":"0xa9059cbb00000000000000000000000000000000000000000000000000000000"}],"id":8049,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2743:74:46","typeDescriptions":{"typeIdentifier":"t_rational_76450787359836037641860180984291677749980919077056822294353438043884394381312_by_1","typeString":"int_const 7645...(69 digits omitted)...1312"}},"visibility":"internal"},{"constant":true,"id":8053,"mutability":"constant","name":"ERC20_transfer_sig_ptr","nameLocation":"2836:22:46","nodeType":"VariableDeclaration","scope":8268,"src":"2819:45:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8051,"name":"uint256","nodeType":"ElementaryTypeName","src":"2819:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":8052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2861:3:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":8056,"mutability":"constant","name":"ERC20_transfer_to_ptr","nameLocation":"2883:21:46","nodeType":"VariableDeclaration","scope":8268,"src":"2866:45:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8054,"name":"uint256","nodeType":"ElementaryTypeName","src":"2866:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":8055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2907:4:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":8059,"mutability":"constant","name":"ERC20_transfer_amount_ptr","nameLocation":"2930:25:46","nodeType":"VariableDeclaration","scope":8268,"src":"2913:49:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8057,"name":"uint256","nodeType":"ElementaryTypeName","src":"2913:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":8058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2958:4:46","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":8062,"mutability":"constant","name":"ERC20_transfer_length","nameLocation":"2981:21:46","nodeType":"VariableDeclaration","scope":8268,"src":"2964:45:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8060,"name":"uint256","nodeType":"ElementaryTypeName","src":"2964:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":8061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3005:4:46","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":8066,"mutability":"constant","name":"ERC1155_safeTransferFrom_signature","nameLocation":"3147:34:46","nodeType":"VariableDeclaration","scope":8268,"src":"3130:128:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8063,"name":"uint256","nodeType":"ElementaryTypeName","src":"3130:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307866323432343332613030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":8064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3190:66:46","typeDescriptions":{"typeIdentifier":"t_rational_109576784812748834340197573905731726730118698833493337707389013487240318287872_by_1","typeString":"int_const 1095...(70 digits omitted)...7872"},"value":"0xf242432a00000000000000000000000000000000000000000000000000000000"}],"id":8065,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3184:74:46","typeDescriptions":{"typeIdentifier":"t_rational_109576784812748834340197573905731726730118698833493337707389013487240318287872_by_1","typeString":"int_const 1095...(70 digits omitted)...7872"}},"visibility":"internal"},{"constant":true,"id":8069,"mutability":"constant","name":"ERC1155_safeTransferFrom_sig_ptr","nameLocation":"3277:32:46","nodeType":"VariableDeclaration","scope":8268,"src":"3260:55:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8067,"name":"uint256","nodeType":"ElementaryTypeName","src":"3260:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":8068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3312:3:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":8072,"mutability":"constant","name":"ERC1155_safeTransferFrom_from_ptr","nameLocation":"3334:33:46","nodeType":"VariableDeclaration","scope":8268,"src":"3317:57:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8070,"name":"uint256","nodeType":"ElementaryTypeName","src":"3317:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":8071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3370:4:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":8075,"mutability":"constant","name":"ERC1155_safeTransferFrom_to_ptr","nameLocation":"3393:31:46","nodeType":"VariableDeclaration","scope":8268,"src":"3376:55:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8073,"name":"uint256","nodeType":"ElementaryTypeName","src":"3376:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":8074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3427:4:46","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":8078,"mutability":"constant","name":"ERC1155_safeTransferFrom_id_ptr","nameLocation":"3450:31:46","nodeType":"VariableDeclaration","scope":8268,"src":"3433:55:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8076,"name":"uint256","nodeType":"ElementaryTypeName","src":"3433:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":8077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3484:4:46","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":8081,"mutability":"constant","name":"ERC1155_safeTransferFrom_amount_ptr","nameLocation":"3507:35:46","nodeType":"VariableDeclaration","scope":8268,"src":"3490:59:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8079,"name":"uint256","nodeType":"ElementaryTypeName","src":"3490:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":8080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3545:4:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":8084,"mutability":"constant","name":"ERC1155_safeTransferFrom_data_offset_ptr","nameLocation":"3568:40:46","nodeType":"VariableDeclaration","scope":8268,"src":"3551:64:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8082,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":8083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3611:4:46","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":8087,"mutability":"constant","name":"ERC1155_safeTransferFrom_data_length_ptr","nameLocation":"3634:40:46","nodeType":"VariableDeclaration","scope":8268,"src":"3617:64:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8085,"name":"uint256","nodeType":"ElementaryTypeName","src":"3617:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":8086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3677:4:46","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":8090,"mutability":"constant","name":"ERC1155_safeTransferFrom_length","nameLocation":"3700:31:46","nodeType":"VariableDeclaration","scope":8268,"src":"3683:55:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8088,"name":"uint256","nodeType":"ElementaryTypeName","src":"3683:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":8089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3734:4:46","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":8093,"mutability":"constant","name":"ERC1155_safeTransferFrom_data_length_offset","nameLocation":"3778:43:46","nodeType":"VariableDeclaration","scope":8268,"src":"3761:67:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8091,"name":"uint256","nodeType":"ElementaryTypeName","src":"3761:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":8092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:4:46","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":8097,"mutability":"constant","name":"ERC1155_safeBatchTransferFrom_signature","nameLocation":"3955:39:46","nodeType":"VariableDeclaration","scope":8268,"src":"3938:133:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8094,"name":"uint256","nodeType":"ElementaryTypeName","src":"3938:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307832656232633264363030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":8095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4003:66:46","typeDescriptions":{"typeIdentifier":"t_rational_21122234520580670415450416725259358303340482176740656504059893016123987197952_by_1","typeString":"int_const 2112...(69 digits omitted)...7952"},"value":"0x2eb2c2d600000000000000000000000000000000000000000000000000000000"}],"id":8096,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3997:74:46","typeDescriptions":{"typeIdentifier":"t_rational_21122234520580670415450416725259358303340482176740656504059893016123987197952_by_1","typeString":"int_const 2112...(69 digits omitted)...7952"}},"visibility":"internal"},{"constant":true,"id":8106,"mutability":"constant","name":"ERC1155_safeBatchTransferFrom_selector","nameLocation":"4090:38:46","nodeType":"VariableDeclaration","scope":8268,"src":"4074:119:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8098,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4074:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"arguments":[{"arguments":[{"id":8103,"name":"ERC1155_safeBatchTransferFrom_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8097,"src":"4151:39:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4143:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8101,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4143:7:46","typeDescriptions":{}}},"id":8104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4143:48:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4131:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":8099,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4131:6:46","typeDescriptions":{}}},"id":8105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4131:62:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":true,"id":8109,"mutability":"constant","name":"ERC721_transferFrom_signature","nameLocation":"4213:29:46","nodeType":"VariableDeclaration","scope":8268,"src":"4196:77:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8107,"name":"uint256","nodeType":"ElementaryTypeName","src":"4196:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"id":8108,"name":"ERC20_transferFrom_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8031,"src":"4245:28:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":8112,"mutability":"constant","name":"ERC721_transferFrom_sig_ptr","nameLocation":"4292:27:46","nodeType":"VariableDeclaration","scope":8268,"src":"4275:50:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8110,"name":"uint256","nodeType":"ElementaryTypeName","src":"4275:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":8111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4322:3:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":8115,"mutability":"constant","name":"ERC721_transferFrom_from_ptr","nameLocation":"4344:28:46","nodeType":"VariableDeclaration","scope":8268,"src":"4327:52:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8113,"name":"uint256","nodeType":"ElementaryTypeName","src":"4327:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":8114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4375:4:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":8118,"mutability":"constant","name":"ERC721_transferFrom_to_ptr","nameLocation":"4398:26:46","nodeType":"VariableDeclaration","scope":8268,"src":"4381:50:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8116,"name":"uint256","nodeType":"ElementaryTypeName","src":"4381:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":8117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4427:4:46","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":8121,"mutability":"constant","name":"ERC721_transferFrom_id_ptr","nameLocation":"4450:26:46","nodeType":"VariableDeclaration","scope":8268,"src":"4433:50:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8119,"name":"uint256","nodeType":"ElementaryTypeName","src":"4433:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":8120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4479:4:46","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":8124,"mutability":"constant","name":"ERC721_transferFrom_length","nameLocation":"4502:26:46","nodeType":"VariableDeclaration","scope":8268,"src":"4485:50:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8122,"name":"uint256","nodeType":"ElementaryTypeName","src":"4485:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":8123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4531:4:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":8128,"mutability":"constant","name":"NoContract_error_signature","nameLocation":"4626:26:46","nodeType":"VariableDeclaration","scope":8268,"src":"4609:120:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8125,"name":"uint256","nodeType":"ElementaryTypeName","src":"4609:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307835663135643637323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":8126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4661:66:46","typeDescriptions":{"typeIdentifier":"t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1","typeString":"int_const 4300...(69 digits omitted)...7584"},"value":"0x5f15d67200000000000000000000000000000000000000000000000000000000"}],"id":8127,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4655:74:46","typeDescriptions":{"typeIdentifier":"t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1","typeString":"int_const 4300...(69 digits omitted)...7584"}},"visibility":"internal"},{"constant":true,"id":8131,"mutability":"constant","name":"NoContract_error_sig_ptr","nameLocation":"4748:24:46","nodeType":"VariableDeclaration","scope":8268,"src":"4731:47:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8129,"name":"uint256","nodeType":"ElementaryTypeName","src":"4731:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":8130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4775:3:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":8134,"mutability":"constant","name":"NoContract_error_token_ptr","nameLocation":"4797:26:46","nodeType":"VariableDeclaration","scope":8268,"src":"4780:49:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8132,"name":"uint256","nodeType":"ElementaryTypeName","src":"4780:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307834","id":8133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4826:3:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"visibility":"internal"},{"constant":true,"id":8137,"mutability":"constant","name":"NoContract_error_length","nameLocation":"4848:23:46","nodeType":"VariableDeclaration","scope":8268,"src":"4831:47:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8135,"name":"uint256","nodeType":"ElementaryTypeName","src":"4831:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":8136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4874:4:46","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":8141,"mutability":"constant","name":"TokenTransferGenericFailure_error_signature","nameLocation":"5025:43:46","nodeType":"VariableDeclaration","scope":8268,"src":"5008:137:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8138,"name":"uint256","nodeType":"ElementaryTypeName","src":"5008:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307866343836626338373030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":8139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5077:66:46","typeDescriptions":{"typeIdentifier":"t_rational_110602393728903298954583666965654358082204038726121260616145960492056870649856_by_1","typeString":"int_const 1106...(70 digits omitted)...9856"},"value":"0xf486bc8700000000000000000000000000000000000000000000000000000000"}],"id":8140,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5071:74:46","typeDescriptions":{"typeIdentifier":"t_rational_110602393728903298954583666965654358082204038726121260616145960492056870649856_by_1","typeString":"int_const 1106...(70 digits omitted)...9856"}},"visibility":"internal"},{"constant":true,"id":8144,"mutability":"constant","name":"TokenTransferGenericFailure_error_sig_ptr","nameLocation":"5164:41:46","nodeType":"VariableDeclaration","scope":8268,"src":"5147:64:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8142,"name":"uint256","nodeType":"ElementaryTypeName","src":"5147:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":8143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5208:3:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":8147,"mutability":"constant","name":"TokenTransferGenericFailure_error_token_ptr","nameLocation":"5230:43:46","nodeType":"VariableDeclaration","scope":8268,"src":"5213:66:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8145,"name":"uint256","nodeType":"ElementaryTypeName","src":"5213:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307834","id":8146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5276:3:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"visibility":"internal"},{"constant":true,"id":8150,"mutability":"constant","name":"TokenTransferGenericFailure_error_from_ptr","nameLocation":"5298:42:46","nodeType":"VariableDeclaration","scope":8268,"src":"5281:66:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8148,"name":"uint256","nodeType":"ElementaryTypeName","src":"5281:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":8149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5343:4:46","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":8153,"mutability":"constant","name":"TokenTransferGenericFailure_error_to_ptr","nameLocation":"5366:40:46","nodeType":"VariableDeclaration","scope":8268,"src":"5349:64:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8151,"name":"uint256","nodeType":"ElementaryTypeName","src":"5349:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":8152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5409:4:46","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":8156,"mutability":"constant","name":"TokenTransferGenericFailure_error_id_ptr","nameLocation":"5432:40:46","nodeType":"VariableDeclaration","scope":8268,"src":"5415:64:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8154,"name":"uint256","nodeType":"ElementaryTypeName","src":"5415:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":8155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5475:4:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":8159,"mutability":"constant","name":"TokenTransferGenericFailure_error_amount_ptr","nameLocation":"5498:44:46","nodeType":"VariableDeclaration","scope":8268,"src":"5481:68:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8157,"name":"uint256","nodeType":"ElementaryTypeName","src":"5481:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":8158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5545:4:46","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":8162,"mutability":"constant","name":"TokenTransferGenericFailure_error_length","nameLocation":"5590:40:46","nodeType":"VariableDeclaration","scope":8268,"src":"5573:64:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8160,"name":"uint256","nodeType":"ElementaryTypeName","src":"5573:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":8161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5633:4:46","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":8166,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_signature","nameLocation":"5766:49:46","nodeType":"VariableDeclaration","scope":8268,"src":"5749:143:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8163,"name":"uint256","nodeType":"ElementaryTypeName","src":"5749:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307839383839313932333030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":8164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5824:66:46","typeDescriptions":{"typeIdentifier":"t_rational_68993784519787932800265262788752310095870803544120403744274516456007463337984_by_1","typeString":"int_const 6899...(69 digits omitted)...7984"},"value":"0x9889192300000000000000000000000000000000000000000000000000000000"}],"id":8165,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5818:74:46","typeDescriptions":{"typeIdentifier":"t_rational_68993784519787932800265262788752310095870803544120403744274516456007463337984_by_1","typeString":"int_const 6899...(69 digits omitted)...7984"}},"visibility":"internal"},{"constant":true,"id":8169,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nameLocation":"5911:47:46","nodeType":"VariableDeclaration","scope":8268,"src":"5894:70:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8167,"name":"uint256","nodeType":"ElementaryTypeName","src":"5894:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":8168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5961:3:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":8172,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_token_ptr","nameLocation":"5983:49:46","nodeType":"VariableDeclaration","scope":8268,"src":"5966:72:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8170,"name":"uint256","nodeType":"ElementaryTypeName","src":"5966:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307834","id":8171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6035:3:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"visibility":"internal"},{"constant":true,"id":8175,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_from_ptr","nameLocation":"6057:48:46","nodeType":"VariableDeclaration","scope":8268,"src":"6040:72:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8173,"name":"uint256","nodeType":"ElementaryTypeName","src":"6040:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":8174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6108:4:46","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":8178,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_to_ptr","nameLocation":"6131:46:46","nodeType":"VariableDeclaration","scope":8268,"src":"6114:70:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8176,"name":"uint256","nodeType":"ElementaryTypeName","src":"6114:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":8177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6180:4:46","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":8181,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_amount_ptr","nameLocation":"6203:50:46","nodeType":"VariableDeclaration","scope":8268,"src":"6186:74:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8179,"name":"uint256","nodeType":"ElementaryTypeName","src":"6186:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":8180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6256:4:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":8184,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_length","nameLocation":"6301:46:46","nodeType":"VariableDeclaration","scope":8268,"src":"6284:70:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8182,"name":"uint256","nodeType":"ElementaryTypeName","src":"6284:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":8183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6350:4:46","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":8187,"mutability":"constant","name":"ExtraGasBuffer","nameLocation":"6374:14:46","nodeType":"VariableDeclaration","scope":8268,"src":"6357:38:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8185,"name":"uint256","nodeType":"ElementaryTypeName","src":"6357:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":8186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6391:4:46","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":8190,"mutability":"constant","name":"CostPerWord","nameLocation":"6414:11:46","nodeType":"VariableDeclaration","scope":8268,"src":"6397:32:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8188,"name":"uint256","nodeType":"ElementaryTypeName","src":"6397:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":8189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6428:1:46","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":8193,"mutability":"constant","name":"MemoryExpansionCoefficient","nameLocation":"6448:26:46","nodeType":"VariableDeclaration","scope":8268,"src":"6431:51:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8191,"name":"uint256","nodeType":"ElementaryTypeName","src":"6431:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323030","id":8192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6477:5:46","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"visibility":"internal"},{"constant":true,"id":8196,"mutability":"constant","name":"BatchTransfer1155Params_ptr","nameLocation":"6608:27:46","nodeType":"VariableDeclaration","scope":8268,"src":"6591:51:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8194,"name":"uint256","nodeType":"ElementaryTypeName","src":"6591:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":8195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6638:4:46","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":8199,"mutability":"constant","name":"BatchTransfer1155Params_ids_head_ptr","nameLocation":"6661:36:46","nodeType":"VariableDeclaration","scope":8268,"src":"6644:60:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8197,"name":"uint256","nodeType":"ElementaryTypeName","src":"6644:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":8198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6700:4:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":8202,"mutability":"constant","name":"BatchTransfer1155Params_amounts_head_ptr","nameLocation":"6723:40:46","nodeType":"VariableDeclaration","scope":8268,"src":"6706:64:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8200,"name":"uint256","nodeType":"ElementaryTypeName","src":"6706:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":8201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6766:4:46","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":8205,"mutability":"constant","name":"BatchTransfer1155Params_data_head_ptr","nameLocation":"6789:37:46","nodeType":"VariableDeclaration","scope":8268,"src":"6772:61:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8203,"name":"uint256","nodeType":"ElementaryTypeName","src":"6772:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":8204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6829:4:46","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":8208,"mutability":"constant","name":"BatchTransfer1155Params_data_length_basePtr","nameLocation":"6852:43:46","nodeType":"VariableDeclaration","scope":8268,"src":"6835:67:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8206,"name":"uint256","nodeType":"ElementaryTypeName","src":"6835:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":8207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6898:4:46","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":8211,"mutability":"constant","name":"BatchTransfer1155Params_calldata_baseSize","nameLocation":"6921:41:46","nodeType":"VariableDeclaration","scope":8268,"src":"6904:65:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8209,"name":"uint256","nodeType":"ElementaryTypeName","src":"6904:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":8210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6965:4:46","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":8214,"mutability":"constant","name":"BatchTransfer1155Params_ids_length_ptr","nameLocation":"6989:38:46","nodeType":"VariableDeclaration","scope":8268,"src":"6972:62:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8212,"name":"uint256","nodeType":"ElementaryTypeName","src":"6972:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":8213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7030:4:46","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":8217,"mutability":"constant","name":"BatchTransfer1155Params_ids_length_offset","nameLocation":"7054:41:46","nodeType":"VariableDeclaration","scope":8268,"src":"7037:65:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8215,"name":"uint256","nodeType":"ElementaryTypeName","src":"7037:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":8216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7098:4:46","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":8220,"mutability":"constant","name":"BatchTransfer1155Params_amounts_length_baseOffset","nameLocation":"7121:49:46","nodeType":"VariableDeclaration","scope":8268,"src":"7104:73:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8218,"name":"uint256","nodeType":"ElementaryTypeName","src":"7104:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":8219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7173:4:46","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":8223,"mutability":"constant","name":"BatchTransfer1155Params_data_length_baseOffset","nameLocation":"7196:46:46","nodeType":"VariableDeclaration","scope":8268,"src":"7179:70:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8221,"name":"uint256","nodeType":"ElementaryTypeName","src":"7179:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786530","id":8222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7245:4:46","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"0xe0"},"visibility":"internal"},{"constant":true,"id":8226,"mutability":"constant","name":"ConduitBatch1155Transfer_usable_head_size","nameLocation":"7269:41:46","nodeType":"VariableDeclaration","scope":8268,"src":"7252:65:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8224,"name":"uint256","nodeType":"ElementaryTypeName","src":"7252:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":8225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7313:4:46","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":8229,"mutability":"constant","name":"ConduitBatch1155Transfer_from_offset","nameLocation":"7337:36:46","nodeType":"VariableDeclaration","scope":8268,"src":"7320:60:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8227,"name":"uint256","nodeType":"ElementaryTypeName","src":"7320:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":8228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7376:4:46","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":8232,"mutability":"constant","name":"ConduitBatch1155Transfer_ids_head_offset","nameLocation":"7399:40:46","nodeType":"VariableDeclaration","scope":8268,"src":"7382:64:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8230,"name":"uint256","nodeType":"ElementaryTypeName","src":"7382:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":8231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7442:4:46","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":8235,"mutability":"constant","name":"ConduitBatch1155Transfer_amounts_head_offset","nameLocation":"7465:44:46","nodeType":"VariableDeclaration","scope":8268,"src":"7448:68:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8233,"name":"uint256","nodeType":"ElementaryTypeName","src":"7448:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":8234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7512:4:46","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":8238,"mutability":"constant","name":"ConduitBatch1155Transfer_ids_length_offset","nameLocation":"7535:42:46","nodeType":"VariableDeclaration","scope":8268,"src":"7518:66:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8236,"name":"uint256","nodeType":"ElementaryTypeName","src":"7518:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":8237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7580:4:46","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":8241,"mutability":"constant","name":"ConduitBatch1155Transfer_amounts_length_baseOffset","nameLocation":"7603:50:46","nodeType":"VariableDeclaration","scope":8268,"src":"7586:74:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8239,"name":"uint256","nodeType":"ElementaryTypeName","src":"7586:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":8240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7656:4:46","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":8244,"mutability":"constant","name":"ConduitBatch1155Transfer_calldata_baseSize","nameLocation":"7679:42:46","nodeType":"VariableDeclaration","scope":8268,"src":"7662:66:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8242,"name":"uint256","nodeType":"ElementaryTypeName","src":"7662:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":8243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7724:4:46","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":8247,"mutability":"constant","name":"ConduitBatchTransfer_amounts_head_offset","nameLocation":"7827:40:46","nodeType":"VariableDeclaration","scope":8268,"src":"7810:64:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8245,"name":"uint256","nodeType":"ElementaryTypeName","src":"7810:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":8246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7870:4:46","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":8250,"mutability":"constant","name":"Invalid1155BatchTransferEncoding_ptr","nameLocation":"7894:36:46","nodeType":"VariableDeclaration","scope":8268,"src":"7877:60:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8248,"name":"uint256","nodeType":"ElementaryTypeName","src":"7877:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":8249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7933:4:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"id":8253,"mutability":"constant","name":"Invalid1155BatchTransferEncoding_length","nameLocation":"7956:39:46","nodeType":"VariableDeclaration","scope":8268,"src":"7939:63:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8251,"name":"uint256","nodeType":"ElementaryTypeName","src":"7939:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":8252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7998:4:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":8257,"mutability":"constant","name":"Invalid1155BatchTransferEncoding_selector","nameLocation":"8021:41:46","nodeType":"VariableDeclaration","scope":8268,"src":"8004:135:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8004:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307865626132303834633030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":8255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8071:66:46","typeDescriptions":{"typeIdentifier":"t_rational_106579805904488420557082595712554375541441034432625840267987479138441579462656_by_1","typeString":"int_const 1065...(70 digits omitted)...2656"},"value":"0xeba2084c00000000000000000000000000000000000000000000000000000000"}],"id":8256,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8065:74:46","typeDescriptions":{"typeIdentifier":"t_rational_106579805904488420557082595712554375541441034432625840267987479138441579462656_by_1","typeString":"int_const 1065...(70 digits omitted)...2656"}},"visibility":"internal"},{"constant":true,"id":8261,"mutability":"constant","name":"ERC1155BatchTransferGenericFailure_error_signature","nameLocation":"8159:50:46","nodeType":"VariableDeclaration","scope":8268,"src":"8142:144:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8258,"name":"uint256","nodeType":"ElementaryTypeName","src":"8142:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307861666334343565323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":8259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8218:66:46","typeDescriptions":{"typeIdentifier":"t_rational_79501532840214056618875980936328268319366216792329069890481479576950077915136_by_1","typeString":"int_const 7950...(69 digits omitted)...5136"},"value":"0xafc445e200000000000000000000000000000000000000000000000000000000"}],"id":8260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8212:74:46","typeDescriptions":{"typeIdentifier":"t_rational_79501532840214056618875980936328268319366216792329069890481479576950077915136_by_1","typeString":"int_const 7950...(69 digits omitted)...5136"}},"visibility":"internal"},{"constant":true,"id":8264,"mutability":"constant","name":"ERC1155BatchTransferGenericFailure_token_ptr","nameLocation":"8305:44:46","nodeType":"VariableDeclaration","scope":8268,"src":"8288:68:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8288:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":8263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8352:4:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":8267,"mutability":"constant","name":"ERC1155BatchTransferGenericFailure_ids_offset","nameLocation":"8375:45:46","nodeType":"VariableDeclaration","scope":8268,"src":"8358:69:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8265,"name":"uint256","nodeType":"ElementaryTypeName","src":"8358:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":8266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8423:4:46","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"}],"src":"32:8397:46"},"id":46},"contracts/lib/Verifiers.sol":{"ast":{"absolutePath":"contracts/lib/Verifiers.sol","exportedSymbols":{"Assertions":[4363],"OrderStatus":[5389],"SignatureVerification":[7919],"Verifiers":[8438]},"id":8439,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8269,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:47"},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":8271,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8439,"sourceUnit":5390,"src":"58:57:47","symbolAliases":[{"foreign":{"id":8270,"name":"OrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5389,"src":"67:11:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/Assertions.sol","file":"./Assertions.sol","id":8273,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8439,"sourceUnit":4364,"src":"117:46:47","symbolAliases":[{"foreign":{"id":8272,"name":"Assertions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4363,"src":"126:10:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/SignatureVerification.sol","file":"./SignatureVerification.sol","id":8275,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8439,"sourceUnit":7920,"src":"165:68:47","symbolAliases":[{"foreign":{"id":8274,"name":"SignatureVerification","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"174:21:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8277,"name":"Assertions","nodeType":"IdentifierPath","referencedDeclaration":4363,"src":"371:10:47"},"id":8278,"nodeType":"InheritanceSpecifier","src":"371:10:47"},{"baseName":{"id":8279,"name":"SignatureVerification","nodeType":"IdentifierPath","referencedDeclaration":7919,"src":"383:21:47"},"id":8280,"nodeType":"InheritanceSpecifier","src":"383:21:47"}],"canonicalName":"Verifiers","contractDependencies":[],"contractKind":"contract","documentation":{"id":8276,"nodeType":"StructuredDocumentation","src":"235:113:47","text":" @title Verifiers\n @author 0age\n @notice Verifiers contains functions for performing verifications."},"fullyImplemented":true,"id":8438,"linearizedBaseContracts":[8438,7919,6071,4265,4363,4325,5442,7767,4247,4158,6031,4761],"name":"Verifiers","nameLocation":"358:9:47","nodeType":"ContractDefinition","nodes":[{"body":{"id":8289,"nodeType":"Block","src":"833:2:47","statements":[]},"documentation":{"id":8281,"nodeType":"StructuredDocumentation","src":"411:348:47","text":" @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."},"id":8290,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8286,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8283,"src":"814:17:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":8287,"kind":"baseConstructorSpecifier","modifierName":{"id":8285,"name":"Assertions","nodeType":"IdentifierPath","referencedDeclaration":4363,"src":"803:10:47"},"nodeType":"ModifierInvocation","src":"803:29:47"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8283,"mutability":"mutable","name":"conduitController","nameLocation":"784:17:47","nodeType":"VariableDeclaration","scope":8290,"src":"776:25:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8282,"name":"address","nodeType":"ElementaryTypeName","src":"776:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"775:27:47"},"returnParameters":{"id":8288,"nodeType":"ParameterList","parameters":[],"src":"833:0:47"},"scope":8438,"src":"764:71:47","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8325,"nodeType":"Block","src":"1482:483:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8302,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8293,"src":"1575:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":8303,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1587:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1587:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1575:27:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8306,"name":"endTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"1606:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":8307,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1617:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1617:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1606:26:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1575:57:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8320,"nodeType":"IfStatement","src":"1571:314:47","trueBody":{"id":8319,"nodeType":"Block","src":"1634:251:47","statements":[{"condition":{"id":8311,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8297,"src":"1725:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8316,"nodeType":"IfStatement","src":"1721:74:47","trueBody":{"id":8315,"nodeType":"Block","src":"1742:53:47","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8312,"name":"InvalidTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4072,"src":"1767:11:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1767:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8314,"nodeType":"RevertStatement","src":"1760:20:47"}]}},{"expression":{"hexValue":"66616c7365","id":8317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1869:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8301,"id":8318,"nodeType":"Return","src":"1862:12:47"}]}},{"expression":{"id":8323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8321,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8300,"src":"1946:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1954:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1946:12:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8324,"nodeType":"ExpressionStatement","src":"1946:12:47"}]},"documentation":{"id":8291,"nodeType":"StructuredDocumentation","src":"841:492:47","text":" @dev Internal view function to ensure that the current time falls within\n      an order's valid timespan.\n @param startTime       The time at which the order becomes active.\n @param endTime         The time at which the order becomes inactive.\n @param revertOnInvalid A boolean indicating whether to revert if the\n                        order is not active.\n @return valid A boolean indicating whether the order is active."},"id":8326,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyTime","nameLocation":"1347:11:47","nodeType":"FunctionDefinition","parameters":{"id":8298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8293,"mutability":"mutable","name":"startTime","nameLocation":"1376:9:47","nodeType":"VariableDeclaration","scope":8326,"src":"1368:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8292,"name":"uint256","nodeType":"ElementaryTypeName","src":"1368:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8295,"mutability":"mutable","name":"endTime","nameLocation":"1403:7:47","nodeType":"VariableDeclaration","scope":8326,"src":"1395:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8294,"name":"uint256","nodeType":"ElementaryTypeName","src":"1395:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8297,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"1425:15:47","nodeType":"VariableDeclaration","scope":8326,"src":"1420:20:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8296,"name":"bool","nodeType":"ElementaryTypeName","src":"1420:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1358:88:47"},"returnParameters":{"id":8301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8300,"mutability":"mutable","name":"valid","nameLocation":"1475:5:47","nodeType":"VariableDeclaration","scope":8326,"src":"1470:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8299,"name":"bool","nodeType":"ElementaryTypeName","src":"1470:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1469:12:47"},"scope":8438,"src":"1338:627:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8357,"nodeType":"Block","src":"2770:439:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8336,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8329,"src":"2853:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8337,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2864:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2864:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2853:21:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8342,"nodeType":"IfStatement","src":"2849:58:47","trueBody":{"id":8341,"nodeType":"Block","src":"2876:31:47","statements":[{"functionReturnParameters":8335,"id":8340,"nodeType":"Return","src":"2890:7:47"}]}},{"assignments":[8344],"declarations":[{"constant":false,"id":8344,"mutability":"mutable","name":"digest","nameLocation":"3005:6:47","nodeType":"VariableDeclaration","scope":8357,"src":"2997:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8343,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2997:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8350,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8346,"name":"_domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"3034:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":8347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3034:18:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8348,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8331,"src":"3054:9:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8345,"name":"_deriveEIP712Digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6030,"src":"3014:19:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":8349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3014:50:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2997:67:47"},{"expression":{"arguments":[{"id":8352,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8329,"src":"3175:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8353,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8344,"src":"3184:6:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8354,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8333,"src":"3192:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8351,"name":"_assertValidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7918,"src":"3153:21:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes32,bytes memory) view"}},"id":8355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3153:49:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8356,"nodeType":"ExpressionStatement","src":"3153:49:47"}]},"documentation":{"id":8327,"nodeType":"StructuredDocumentation","src":"1971:664:47","text":" @dev Internal view function to verify the signature of an order. An\n      ERC-1271 fallback will be attempted if either the signature length\n      is not 64 or 65 bytes or if the recovered signer does not match the\n      supplied offerer. Note that in cases where a 64 or 65 byte signature\n      is supplied, only standard ECDSA signatures that recover to a\n      non-zero address are supported.\n @param offerer   The offerer for the order.\n @param orderHash The order hash.\n @param signature A signature from the offerer indicating that the order\n                  has been approved."},"id":8358,"implemented":true,"kind":"function","modifiers":[],"name":"_verifySignature","nameLocation":"2649:16:47","nodeType":"FunctionDefinition","parameters":{"id":8334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8329,"mutability":"mutable","name":"offerer","nameLocation":"2683:7:47","nodeType":"VariableDeclaration","scope":8358,"src":"2675:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8328,"name":"address","nodeType":"ElementaryTypeName","src":"2675:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8331,"mutability":"mutable","name":"orderHash","nameLocation":"2708:9:47","nodeType":"VariableDeclaration","scope":8358,"src":"2700:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8330,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2700:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8333,"mutability":"mutable","name":"signature","nameLocation":"2740:9:47","nodeType":"VariableDeclaration","scope":8358,"src":"2727:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8332,"name":"bytes","nodeType":"ElementaryTypeName","src":"2727:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2665:90:47"},"returnParameters":{"id":8335,"nodeType":"ParameterList","parameters":[],"src":"2770:0:47"},"scope":8438,"src":"2640:569:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8436,"nodeType":"Block","src":"3405:849:47","statements":[{"condition":{"expression":{"id":8372,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8363,"src":"3419:11:47","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":8373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isCancelled","nodeType":"MemberAccess","referencedDeclaration":5376,"src":"3419:23:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8384,"nodeType":"IfStatement","src":"3415:168:47","trueBody":{"id":8383,"nodeType":"Block","src":"3444:139:47","statements":[{"condition":{"id":8374,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8367,"src":"3462:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8380,"nodeType":"IfStatement","src":"3458:88:47","trueBody":{"id":8379,"nodeType":"Block","src":"3479:67:47","statements":[{"errorCall":{"arguments":[{"id":8376,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"3521:9:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8375,"name":"OrderIsCancelled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4114,"src":"3504:16:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":8377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3504:27:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8378,"nodeType":"RevertStatement","src":"3497:34:47"}]}},{"expression":{"hexValue":"66616c7365","id":8381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3567:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8371,"id":8382,"nodeType":"Return","src":"3560:12:47"}]}},{"condition":{"expression":{"id":8385,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8363,"src":"3597:11:47","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":8386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isFinalized","nodeType":"MemberAccess","referencedDeclaration":5378,"src":"3597:23:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8397,"nodeType":"IfStatement","src":"3593:173:47","trueBody":{"id":8396,"nodeType":"Block","src":"3622:144:47","statements":[{"condition":{"id":8387,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8367,"src":"3640:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8393,"nodeType":"IfStatement","src":"3636:93:47","trueBody":{"id":8392,"nodeType":"Block","src":"3657:72:47","statements":[{"errorCall":{"arguments":[{"id":8389,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"3704:9:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8388,"name":"OrderAlreadyFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"3682:21:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":8390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3682:32:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8391,"nodeType":"RevertStatement","src":"3675:39:47"}]}},{"expression":{"hexValue":"66616c7365","id":8394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3750:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8371,"id":8395,"nodeType":"Return","src":"3743:12:47"}]}},{"condition":{"id":8398,"name":"firstPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8365,"src":"3780:8:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8430,"nodeType":"Block","src":"4012:213:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8415,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8363,"src":"4030:11:47","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":8416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"4030:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4055:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4030:26:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8429,"nodeType":"IfStatement","src":"4026:189:47","trueBody":{"id":8428,"nodeType":"Block","src":"4058:157:47","statements":[{"condition":{"id":8419,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8367,"src":"4080:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8425,"nodeType":"IfStatement","src":"4076:95:47","trueBody":{"id":8424,"nodeType":"Block","src":"4097:74:47","statements":[{"errorCall":{"arguments":[{"id":8421,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"4142:9:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8420,"name":"OrderNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4069,"src":"4126:15:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":8422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4126:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8423,"nodeType":"RevertStatement","src":"4119:33:47"}]}},{"expression":{"hexValue":"66616c7365","id":8426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4195:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8371,"id":8427,"nodeType":"Return","src":"4188:12:47"}]}}]},"id":8431,"nodeType":"IfStatement","src":"3776:449:47","trueBody":{"id":8414,"nodeType":"Block","src":"3790:216:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8399,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8363,"src":"3808:11:47","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":8400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":5388,"src":"3808:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3832:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3808:25:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8413,"nodeType":"IfStatement","src":"3804:192:47","trueBody":{"id":8412,"nodeType":"Block","src":"3835:161:47","statements":[{"condition":{"id":8403,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8367,"src":"3857:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8409,"nodeType":"IfStatement","src":"3853:99:47","trueBody":{"id":8408,"nodeType":"Block","src":"3874:78:47","statements":[{"errorCall":{"arguments":[{"id":8405,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"3923:9:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8404,"name":"OrderAlreadyStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"3903:19:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":8406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3903:30:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8407,"nodeType":"RevertStatement","src":"3896:37:47"}]}},{"expression":{"hexValue":"66616c7365","id":8410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3976:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8371,"id":8411,"nodeType":"Return","src":"3969:12:47"}]}}]}},{"expression":{"id":8434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8432,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"4235:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4243:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4235:12:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8435,"nodeType":"ExpressionStatement","src":"4235:12:47"}]},"id":8437,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyOrderStatus","nameLocation":"3224:18:47","nodeType":"FunctionDefinition","parameters":{"id":8368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8360,"mutability":"mutable","name":"orderHash","nameLocation":"3260:9:47","nodeType":"VariableDeclaration","scope":8437,"src":"3252:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8359,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3252:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8363,"mutability":"mutable","name":"orderStatus","nameLocation":"3299:11:47","nodeType":"VariableDeclaration","scope":8437,"src":"3279:31:47","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":8362,"nodeType":"UserDefinedTypeName","pathNode":{"id":8361,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"3279:11:47"},"referencedDeclaration":5389,"src":"3279:11:47","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$5389_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"},{"constant":false,"id":8365,"mutability":"mutable","name":"firstPay","nameLocation":"3325:8:47","nodeType":"VariableDeclaration","scope":8437,"src":"3320:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8364,"name":"bool","nodeType":"ElementaryTypeName","src":"3320:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8367,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"3348:15:47","nodeType":"VariableDeclaration","scope":8437,"src":"3343:20:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8366,"name":"bool","nodeType":"ElementaryTypeName","src":"3343:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3242:127:47"},"returnParameters":{"id":8371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8370,"mutability":"mutable","name":"valid","nameLocation":"3398:5:47","nodeType":"VariableDeclaration","scope":8437,"src":"3393:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8369,"name":"bool","nodeType":"ElementaryTypeName","src":"3393:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3392:12:47"},"scope":8438,"src":"3215:1039:47","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8439,"src":"349:3907:47","usedErrors":[4057,4061,4065,4069,4072,4079,4082,4087,4096,4099,4106,4109,4114,4119,4122,4125,4130,4133,4136,4139,4143,4147,4151,4155,4157,4246,4255,4258,4261,4264,4271,4274,4277,4290,4305,4316,4321,4324]}],"src":"32:4225:47"},"id":47},"contracts/test/TestERC20.sol":{"ast":{"absolutePath":"contracts/test/TestERC20.sol","exportedSymbols":{"Context":[2146],"ERC20":[698],"IERC20":[776],"IERC20Metadata":[801],"TestERC20":[8484]},"id":8485,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8440,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"33:23:48"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":8441,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8485,"sourceUnit":699,"src":"58:55:48","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8442,"name":"ERC20","nodeType":"IdentifierPath","referencedDeclaration":698,"src":"137:5:48"},"id":8443,"nodeType":"InheritanceSpecifier","src":"137:5:48"}],"canonicalName":"TestERC20","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8484,"linearizedBaseContracts":[8484,698,801,776,2146],"name":"TestERC20","nameLocation":"124:9:48","nodeType":"ContractDefinition","nodes":[{"body":{"id":8450,"nodeType":"Block","src":"196:2:48","statements":[]},"id":8451,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"546573744552433230","id":8446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"170:11:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_dfbafd0c20033e275c04a1bc0b8c01577c0d94b625e0630a17061ddb8fb1ab98","typeString":"literal_string \"TestERC20\""},"value":"TestERC20"},{"hexValue":"546573744552433230","id":8447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"183:11:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_dfbafd0c20033e275c04a1bc0b8c01577c0d94b625e0630a17061ddb8fb1ab98","typeString":"literal_string \"TestERC20\""},"value":"TestERC20"}],"id":8448,"kind":"baseConstructorSpecifier","modifierName":{"id":8445,"name":"ERC20","nodeType":"IdentifierPath","referencedDeclaration":698,"src":"164:5:48"},"nodeType":"ModifierInvocation","src":"164:31:48"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8444,"nodeType":"ParameterList","parameters":[],"src":"161:2:48"},"returnParameters":{"id":8449,"nodeType":"ParameterList","parameters":[],"src":"196:0:48"},"scope":8484,"src":"150:48:48","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8470,"nodeType":"Block","src":"262:86:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8459,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"280:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"290:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"280:11:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616d6f756e74203d3d2030","id":8462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"293:13:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c","typeString":"literal_string \"amount == 0\""},"value":"amount == 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c","typeString":"literal_string \"amount == 0\""}],"id":8458,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"272:7:48","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"272:35:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8464,"nodeType":"ExpressionStatement","src":"272:35:48"},{"expression":{"arguments":[{"id":8466,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8453,"src":"323:9:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8467,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8455,"src":"334:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8465,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"317:5:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"317:24:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8469,"nodeType":"ExpressionStatement","src":"317:24:48"}]},"functionSelector":"40c10f19","id":8471,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"213:4:48","nodeType":"FunctionDefinition","parameters":{"id":8456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8453,"mutability":"mutable","name":"recipient","nameLocation":"226:9:48","nodeType":"VariableDeclaration","scope":8471,"src":"218:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8452,"name":"address","nodeType":"ElementaryTypeName","src":"218:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8455,"mutability":"mutable","name":"amount","nameLocation":"245:6:48","nodeType":"VariableDeclaration","scope":8471,"src":"237:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8454,"name":"uint256","nodeType":"ElementaryTypeName","src":"237:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"217:35:48"},"returnParameters":{"id":8457,"nodeType":"ParameterList","parameters":[],"src":"262:0:48"},"scope":8484,"src":"204:144:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8482,"nodeType":"Block","src":"393:44:48","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8477,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"409:10:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"409:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8479,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8473,"src":"423:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8476,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"403:5:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"403:27:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8481,"nodeType":"ExpressionStatement","src":"403:27:48"}]},"functionSelector":"42966c68","id":8483,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"363:4:48","nodeType":"FunctionDefinition","parameters":{"id":8474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8473,"mutability":"mutable","name":"amount","nameLocation":"376:6:48","nodeType":"VariableDeclaration","scope":8483,"src":"368:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8472,"name":"uint256","nodeType":"ElementaryTypeName","src":"368:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"367:16:48"},"returnParameters":{"id":8475,"nodeType":"ParameterList","parameters":[],"src":"393:0:48"},"scope":8484,"src":"354:83:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8485,"src":"115:324:48","usedErrors":[]}],"src":"33:406:48"},"id":48},"contracts/test/TestERC721.sol":{"ast":{"absolutePath":"contracts/test/TestERC721.sol","exportedSymbols":{"Address":[2124],"Context":[2146],"ERC165":[2396],"ERC721":[1668],"IERC165":[2408],"IERC721":[1784],"IERC721Metadata":[1829],"IERC721Receiver":[1802],"Strings":[2372],"TestERC721":[8520]},"id":8521,"license":"Unlicense","nodeType":"SourceUnit","nodes":[{"id":8486,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"38:23:49"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":8487,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8521,"sourceUnit":1669,"src":"63:57:49","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":[{"hexValue":"54657374373231","id":8489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"198:9:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e4fc3266b38a1d54c3392ffa0ebb8fdec2443209c72422b9f11bcda73479707","typeString":"literal_string \"Test721\""},"value":"Test721"},{"hexValue":"545354373231","id":8490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"209:8:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2ac7c04fe9bd2b2e32aeb0d2c31125f85fcd4949c0562b8e6a989488ce5ef91","typeString":"literal_string \"TST721\""},"value":"TST721"}],"baseName":{"id":8488,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":1668,"src":"191:6:49"},"id":8491,"nodeType":"InheritanceSpecifier","src":"191:27:49"}],"canonicalName":"TestERC721","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8520,"linearizedBaseContracts":[8520,1668,1829,1784,2396,2408,2146],"name":"TestERC721","nameLocation":"177:10:49","nodeType":"ContractDefinition","nodes":[{"body":{"id":8507,"nodeType":"Block","src":"290:56:49","statements":[{"expression":{"arguments":[{"id":8501,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8493,"src":"306:2:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8502,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8495,"src":"310:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8500,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1378,"src":"300:5:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"300:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8504,"nodeType":"ExpressionStatement","src":"300:18:49"},{"expression":{"hexValue":"74727565","id":8505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"335:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8499,"id":8506,"nodeType":"Return","src":"328:11:49"}]},"functionSelector":"40c10f19","id":8508,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"234:4:49","nodeType":"FunctionDefinition","parameters":{"id":8496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8493,"mutability":"mutable","name":"to","nameLocation":"247:2:49","nodeType":"VariableDeclaration","scope":8508,"src":"239:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8492,"name":"address","nodeType":"ElementaryTypeName","src":"239:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8495,"mutability":"mutable","name":"tokenId","nameLocation":"259:7:49","nodeType":"VariableDeclaration","scope":8508,"src":"251:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8494,"name":"uint256","nodeType":"ElementaryTypeName","src":"251:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"238:29:49"},"returnParameters":{"id":8499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8498,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8508,"src":"284:4:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8497,"name":"bool","nodeType":"ElementaryTypeName","src":"284:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"283:6:49"},"scope":8520,"src":"225:121:49","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1006],"body":{"id":8518,"nodeType":"Block","src":"424:34:49","statements":[{"expression":{"hexValue":"746f6b656e555249","id":8516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"441:10:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d2a7823b0c6bee58f8c694888f32f862c6584caa8afa0242de046d298ba684d","typeString":"literal_string \"tokenURI\""},"value":"tokenURI"},"functionReturnParameters":8515,"id":8517,"nodeType":"Return","src":"434:17:49"}]},"functionSelector":"c87b56dd","id":8519,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"361:8:49","nodeType":"FunctionDefinition","overrides":{"id":8512,"nodeType":"OverrideSpecifier","overrides":[],"src":"391:8:49"},"parameters":{"id":8511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8519,"src":"370:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8509,"name":"uint256","nodeType":"ElementaryTypeName","src":"370:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"369:9:49"},"returnParameters":{"id":8515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8519,"src":"409:13:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8513,"name":"string","nodeType":"ElementaryTypeName","src":"409:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"408:15:49"},"scope":8520,"src":"352:106:49","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":8521,"src":"168:292:49","usedErrors":[]}],"src":"38:423:49"},"id":49},"erc721a/contracts/ERC721A.sol":{"ast":{"absolutePath":"erc721a/contracts/ERC721A.sol","exportedSymbols":{"ERC721A":[10143],"ERC721A__IERC721Receiver":[8538],"IERC721A":[10349]},"id":10144,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8522,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"84:23:50"},{"absolutePath":"erc721a/contracts/IERC721A.sol","file":"./IERC721A.sol","id":8523,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10144,"sourceUnit":10350,"src":"109:24:50","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC721A__IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":8524,"nodeType":"StructuredDocumentation","src":"135:51:50","text":" @dev Interface of ERC721 token receiver."},"fullyImplemented":false,"id":8538,"linearizedBaseContracts":[8538],"name":"ERC721A__IERC721Receiver","nameLocation":"197:24:50","nodeType":"ContractDefinition","nodes":[{"functionSelector":"150b7a02","id":8537,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"237:16:50","nodeType":"FunctionDefinition","parameters":{"id":8533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8526,"mutability":"mutable","name":"operator","nameLocation":"271:8:50","nodeType":"VariableDeclaration","scope":8537,"src":"263:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8525,"name":"address","nodeType":"ElementaryTypeName","src":"263:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8528,"mutability":"mutable","name":"from","nameLocation":"297:4:50","nodeType":"VariableDeclaration","scope":8537,"src":"289:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8527,"name":"address","nodeType":"ElementaryTypeName","src":"289:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8530,"mutability":"mutable","name":"tokenId","nameLocation":"319:7:50","nodeType":"VariableDeclaration","scope":8537,"src":"311:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8529,"name":"uint256","nodeType":"ElementaryTypeName","src":"311:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8532,"mutability":"mutable","name":"data","nameLocation":"351:4:50","nodeType":"VariableDeclaration","scope":8537,"src":"336:19:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8531,"name":"bytes","nodeType":"ElementaryTypeName","src":"336:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"253:108:50"},"returnParameters":{"id":8536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8535,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8537,"src":"380:6:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8534,"name":"bytes4","nodeType":"ElementaryTypeName","src":"380:6:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"379:8:50"},"scope":8538,"src":"228:160:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10144,"src":"187:203:50","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":8540,"name":"IERC721A","nodeType":"IdentifierPath","referencedDeclaration":10349,"src":"915:8:50"},"id":8541,"nodeType":"InheritanceSpecifier","src":"915:8:50"}],"canonicalName":"ERC721A","contractDependencies":[],"contractKind":"contract","documentation":{"id":8539,"nodeType":"StructuredDocumentation","src":"392:502:50","text":" @title ERC721A\n @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)\n Non-Fungible Token Standard, including the Metadata extension.\n Optimized for lower gas during batch mints.\n Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...)\n starting from `_startTokenId()`.\n Assumptions:\n - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply.\n - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256)."},"fullyImplemented":true,"id":10143,"linearizedBaseContracts":[10143,10349],"name":"ERC721A","nameLocation":"904:7:50","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ERC721A.TokenApprovalRef","id":8544,"members":[{"constant":false,"id":8543,"mutability":"mutable","name":"value","nameLocation":"1057:5:50","nodeType":"VariableDeclaration","scope":8544,"src":"1049:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8542,"name":"address","nodeType":"ElementaryTypeName","src":"1049:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"TokenApprovalRef","nameLocation":"1022:16:50","nodeType":"StructDefinition","scope":10143,"src":"1015:54:50","visibility":"public"},{"constant":true,"id":8552,"mutability":"constant","name":"_BITMASK_ADDRESS_DATA_ENTRY","nameLocation":"1330:27:50","nodeType":"VariableDeclaration","scope":10143,"src":"1305:68:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8545,"name":"uint256","nodeType":"ElementaryTypeName","src":"1305:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"id":8551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":8548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":8546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1361:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":8547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1366:2:50","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1361:7:50","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":8549,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1360:9:50","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1372:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1360:13:50","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"}},"visibility":"private"},{"constant":true,"id":8555,"mutability":"constant","name":"_BITPOS_NUMBER_MINTED","nameLocation":"1471:21:50","nodeType":"VariableDeclaration","scope":10143,"src":"1446:51:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8553,"name":"uint256","nodeType":"ElementaryTypeName","src":"1446:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3634","id":8554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1495:2:50","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"visibility":"private"},{"constant":true,"id":8558,"mutability":"constant","name":"_BITPOS_NUMBER_BURNED","nameLocation":"1595:21:50","nodeType":"VariableDeclaration","scope":10143,"src":"1570:52:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8556,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313238","id":8557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1619:3:50","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"visibility":"private"},{"constant":true,"id":8561,"mutability":"constant","name":"_BITPOS_AUX","nameLocation":"1711:11:50","nodeType":"VariableDeclaration","scope":10143,"src":"1686:42:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8559,"name":"uint256","nodeType":"ElementaryTypeName","src":"1686:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313932","id":8560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1725:3:50","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},"visibility":"private"},{"constant":true,"id":8569,"mutability":"constant","name":"_BITMASK_AUX_COMPLEMENT","nameLocation":"1841:23:50","nodeType":"VariableDeclaration","scope":10143,"src":"1816:65:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8562,"name":"uint256","nodeType":"ElementaryTypeName","src":"1816:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512895_by_1","typeString":"int_const 6277...(50 digits omitted)...2895"},"id":8568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"},"id":8565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":8563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1868:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313932","id":8564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1873:3:50","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},"src":"1868:8:50","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"}}],"id":8566,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1867:10:50","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1880:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1867:14:50","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512895_by_1","typeString":"int_const 6277...(50 digits omitted)...2895"}},"visibility":"private"},{"constant":true,"id":8572,"mutability":"constant","name":"_BITPOS_START_TIMESTAMP","nameLocation":"1978:23:50","nodeType":"VariableDeclaration","scope":10143,"src":"1953:54:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8570,"name":"uint256","nodeType":"ElementaryTypeName","src":"1953:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313630","id":8571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2004:3:50","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},"visibility":"private"},{"constant":true,"id":8577,"mutability":"constant","name":"_BITMASK_BURNED","nameLocation":"2100:15:50","nodeType":"VariableDeclaration","scope":10143,"src":"2075:51:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8573,"name":"uint256","nodeType":"ElementaryTypeName","src":"2075:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_26959946667150639794667015087019630673637144422540572481103610249216_by_1","typeString":"int_const 2695...(60 digits omitted)...9216"},"id":8576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":8574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2118:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"323234","id":8575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2123:3:50","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},"src":"2118:8:50","typeDescriptions":{"typeIdentifier":"t_rational_26959946667150639794667015087019630673637144422540572481103610249216_by_1","typeString":"int_const 2695...(60 digits omitted)...9216"}},"visibility":"private"},{"constant":true,"id":8580,"mutability":"constant","name":"_BITPOS_NEXT_INITIALIZED","nameLocation":"2232:24:50","nodeType":"VariableDeclaration","scope":10143,"src":"2207:55:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8578,"name":"uint256","nodeType":"ElementaryTypeName","src":"2207:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323235","id":8579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:3:50","typeDescriptions":{"typeIdentifier":"t_rational_225_by_1","typeString":"int_const 225"},"value":"225"},"visibility":"private"},{"constant":true,"id":8585,"mutability":"constant","name":"_BITMASK_NEXT_INITIALIZED","nameLocation":"2364:25:50","nodeType":"VariableDeclaration","scope":10143,"src":"2339:61:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8581,"name":"uint256","nodeType":"ElementaryTypeName","src":"2339:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_53919893334301279589334030174039261347274288845081144962207220498432_by_1","typeString":"int_const 5391...(60 digits omitted)...8432"},"id":8584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":8582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2392:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"323235","id":8583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2397:3:50","typeDescriptions":{"typeIdentifier":"t_rational_225_by_1","typeString":"int_const 225"},"value":"225"},"src":"2392:8:50","typeDescriptions":{"typeIdentifier":"t_rational_53919893334301279589334030174039261347274288845081144962207220498432_by_1","typeString":"int_const 5391...(60 digits omitted)...8432"}},"visibility":"private"},{"constant":true,"id":8588,"mutability":"constant","name":"_BITPOS_EXTRA_DATA","nameLocation":"2492:18:50","nodeType":"VariableDeclaration","scope":10143,"src":"2467:49:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8586,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323332","id":8587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2513:3:50","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},"visibility":"private"},{"constant":true,"id":8596,"mutability":"constant","name":"_BITMASK_EXTRA_DATA_COMPLEMENT","nameLocation":"2634:30:50","nodeType":"VariableDeclaration","scope":10143,"src":"2609:72:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8589,"name":"uint256","nodeType":"ElementaryTypeName","src":"2609:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_6901746346790563787434755862277025452451108972170386555162524223799295_by_1","typeString":"int_const 6901...(62 digits omitted)...9295"},"id":8595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_6901746346790563787434755862277025452451108972170386555162524223799296_by_1","typeString":"int_const 6901...(62 digits omitted)...9296"},"id":8592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":8590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2668:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"323332","id":8591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2673:3:50","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},"src":"2668:8:50","typeDescriptions":{"typeIdentifier":"t_rational_6901746346790563787434755862277025452451108972170386555162524223799296_by_1","typeString":"int_const 6901...(62 digits omitted)...9296"}}],"id":8593,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2667:10:50","typeDescriptions":{"typeIdentifier":"t_rational_6901746346790563787434755862277025452451108972170386555162524223799296_by_1","typeString":"int_const 6901...(62 digits omitted)...9296"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2680:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2667:14:50","typeDescriptions":{"typeIdentifier":"t_rational_6901746346790563787434755862277025452451108972170386555162524223799295_by_1","typeString":"int_const 6901...(62 digits omitted)...9295"}},"visibility":"private"},{"constant":true,"id":8604,"mutability":"constant","name":"_BITMASK_ADDRESS","nameLocation":"2766:16:50","nodeType":"VariableDeclaration","scope":10143,"src":"2741:58:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8597,"name":"uint256","nodeType":"ElementaryTypeName","src":"2741:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542975_by_1","typeString":"int_const 1461...(41 digits omitted)...2975"},"id":8603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542976_by_1","typeString":"int_const 1461...(41 digits omitted)...2976"},"id":8600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":8598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2786:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313630","id":8599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2791:3:50","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},"src":"2786:8:50","typeDescriptions":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542976_by_1","typeString":"int_const 1461...(41 digits omitted)...2976"}}],"id":8601,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2785:10:50","typeDescriptions":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542976_by_1","typeString":"int_const 1461...(41 digits omitted)...2976"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2798:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2785:14:50","typeDescriptions":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542975_by_1","typeString":"int_const 1461...(41 digits omitted)...2975"}},"visibility":"private"},{"constant":true,"id":8607,"mutability":"constant","name":"_MAX_MINT_ERC2309_QUANTITY_LIMIT","nameLocation":"3107:32:50","nodeType":"VariableDeclaration","scope":10143,"src":"3082:64:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8605,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35303030","id":8606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3142:4:50","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5000"},"visibility":"private"},{"constant":true,"id":8610,"mutability":"constant","name":"_TRANSFER_EVENT_SIGNATURE","nameLocation":"3293:25:50","nodeType":"VariableDeclaration","scope":10143,"src":"3268:127:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3268:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307864646632353261643162653263383962363963326230363866633337386461613935326261376631363363346131313632386635356134646635323362336566","id":8609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3329:66:50","typeDescriptions":{"typeIdentifier":"t_rational_100389287136786176327247604509743168900146139575972864366142685224231313322991_by_1","typeString":"int_const 1003...(70 digits omitted)...2991"},"value":"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"},"visibility":"private"},{"constant":false,"id":8612,"mutability":"mutable","name":"_currentIndex","nameLocation":"3638:13:50","nodeType":"VariableDeclaration","scope":10143,"src":"3622:29:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8611,"name":"uint256","nodeType":"ElementaryTypeName","src":"3622:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":8614,"mutability":"mutable","name":"_burnCounter","nameLocation":"3710:12:50","nodeType":"VariableDeclaration","scope":10143,"src":"3694:28:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8613,"name":"uint256","nodeType":"ElementaryTypeName","src":"3694:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":8616,"mutability":"mutable","name":"_name","nameLocation":"3762:5:50","nodeType":"VariableDeclaration","scope":10143,"src":"3747:20:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8615,"name":"string","nodeType":"ElementaryTypeName","src":"3747:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":8618,"mutability":"mutable","name":"_symbol","nameLocation":"3809:7:50","nodeType":"VariableDeclaration","scope":10143,"src":"3794:22:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8617,"name":"string","nodeType":"ElementaryTypeName","src":"3794:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":8622,"mutability":"mutable","name":"_packedOwnerships","nameLocation":"4236:17:50","nodeType":"VariableDeclaration","scope":10143,"src":"4200:53:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":8621,"keyType":{"id":8619,"name":"uint256","nodeType":"ElementaryTypeName","src":"4208:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"4200:27:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":8620,"name":"uint256","nodeType":"ElementaryTypeName","src":"4219:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":8626,"mutability":"mutable","name":"_packedAddressData","nameLocation":"4495:18:50","nodeType":"VariableDeclaration","scope":10143,"src":"4459:54:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8625,"keyType":{"id":8623,"name":"address","nodeType":"ElementaryTypeName","src":"4467:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4459:27:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8624,"name":"uint256","nodeType":"ElementaryTypeName","src":"4478:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":8631,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"4615:15:50","nodeType":"VariableDeclaration","scope":10143,"src":"4570:60:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TokenApprovalRef_$8544_storage_$","typeString":"mapping(uint256 => struct ERC721A.TokenApprovalRef)"},"typeName":{"id":8630,"keyType":{"id":8627,"name":"uint256","nodeType":"ElementaryTypeName","src":"4578:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"4570:36:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TokenApprovalRef_$8544_storage_$","typeString":"mapping(uint256 => struct ERC721A.TokenApprovalRef)"},"valueType":{"id":8629,"nodeType":"UserDefinedTypeName","pathNode":{"id":8628,"name":"TokenApprovalRef","nodeType":"IdentifierPath","referencedDeclaration":8544,"src":"4589:16:50"},"referencedDeclaration":8544,"src":"4589:16:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenApprovalRef_$8544_storage_ptr","typeString":"struct ERC721A.TokenApprovalRef"}}},"visibility":"private"},{"constant":false,"id":8637,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"4738:18:50","nodeType":"VariableDeclaration","scope":10143,"src":"4685:71:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":8636,"keyType":{"id":8632,"name":"address","nodeType":"ElementaryTypeName","src":"4693:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4685:44:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":8635,"keyType":{"id":8633,"name":"address","nodeType":"ElementaryTypeName","src":"4712:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4704:24:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":8634,"name":"bool","nodeType":"ElementaryTypeName","src":"4723:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":8657,"nodeType":"Block","src":"5002:98:50","statements":[{"expression":{"id":8646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8644,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8616,"src":"5012:5:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8645,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8639,"src":"5020:5:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"5012:13:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8647,"nodeType":"ExpressionStatement","src":"5012:13:50"},{"expression":{"id":8650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8648,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8618,"src":"5035:7:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8649,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8641,"src":"5045:7:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"5035:17:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8651,"nodeType":"ExpressionStatement","src":"5035:17:50"},{"expression":{"id":8655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8652,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"5062:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":8653,"name":"_startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8667,"src":"5078:13:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5078:15:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5062:31:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8656,"nodeType":"ExpressionStatement","src":"5062:31:50"}]},"id":8658,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8639,"mutability":"mutable","name":"name_","nameLocation":"4972:5:50","nodeType":"VariableDeclaration","scope":8658,"src":"4958:19:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8638,"name":"string","nodeType":"ElementaryTypeName","src":"4958:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8641,"mutability":"mutable","name":"symbol_","nameLocation":"4993:7:50","nodeType":"VariableDeclaration","scope":8658,"src":"4979:21:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8640,"name":"string","nodeType":"ElementaryTypeName","src":"4979:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4957:44:50"},"returnParameters":{"id":8643,"nodeType":"ParameterList","parameters":[],"src":"5002:0:50"},"scope":10143,"src":"4946:154:50","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8666,"nodeType":"Block","src":"5491:25:50","statements":[{"expression":{"hexValue":"30","id":8664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5508:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":8663,"id":8665,"nodeType":"Return","src":"5501:8:50"}]},"documentation":{"id":8659,"nodeType":"StructuredDocumentation","src":"5296:125:50","text":" @dev Returns the starting token ID.\n To change the starting token ID, please override this function."},"id":8667,"implemented":true,"kind":"function","modifiers":[],"name":"_startTokenId","nameLocation":"5435:13:50","nodeType":"FunctionDefinition","parameters":{"id":8660,"nodeType":"ParameterList","parameters":[],"src":"5448:2:50"},"returnParameters":{"id":8663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8667,"src":"5482:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8661,"name":"uint256","nodeType":"ElementaryTypeName","src":"5482:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5481:9:50"},"scope":10143,"src":"5426:90:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8675,"nodeType":"Block","src":"5654:37:50","statements":[{"expression":{"id":8673,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"5671:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8672,"id":8674,"nodeType":"Return","src":"5664:20:50"}]},"documentation":{"id":8668,"nodeType":"StructuredDocumentation","src":"5522:63:50","text":" @dev Returns the next token ID to be minted."},"id":8676,"implemented":true,"kind":"function","modifiers":[],"name":"_nextTokenId","nameLocation":"5599:12:50","nodeType":"FunctionDefinition","parameters":{"id":8669,"nodeType":"ParameterList","parameters":[],"src":"5611:2:50"},"returnParameters":{"id":8672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8676,"src":"5645:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8670,"name":"uint256","nodeType":"ElementaryTypeName","src":"5645:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5644:9:50"},"scope":10143,"src":"5590:101:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[10200],"body":{"id":8691,"nodeType":"Block","src":"5964:247:50","statements":[{"id":8690,"nodeType":"UncheckedBlock","src":"6117:88:50","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8683,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"6148:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8684,"name":"_burnCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8614,"src":"6164:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6148:28:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8686,"name":"_startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8667,"src":"6179:13:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6179:15:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6148:46:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8682,"id":8689,"nodeType":"Return","src":"6141:53:50"}]}]},"documentation":{"id":8677,"nodeType":"StructuredDocumentation","src":"5697:192:50","text":" @dev Returns the total number of tokens in existence.\n Burned tokens will reduce the count.\n To get the total number of tokens minted, please see {_totalMinted}."},"functionSelector":"18160ddd","id":8692,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"5903:11:50","nodeType":"FunctionDefinition","overrides":{"id":8679,"nodeType":"OverrideSpecifier","overrides":[],"src":"5937:8:50"},"parameters":{"id":8678,"nodeType":"ParameterList","parameters":[],"src":"5914:2:50"},"returnParameters":{"id":8682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8681,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8692,"src":"5955:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8680,"name":"uint256","nodeType":"ElementaryTypeName","src":"5955:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5954:9:50"},"scope":10143,"src":"5894:317:50","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8704,"nodeType":"Block","src":"6368:226:50","statements":[{"id":8703,"nodeType":"UncheckedBlock","src":"6515:73:50","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8698,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"6546:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8699,"name":"_startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8667,"src":"6562:13:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6562:15:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6546:31:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8697,"id":8702,"nodeType":"Return","src":"6539:38:50"}]}]},"documentation":{"id":8693,"nodeType":"StructuredDocumentation","src":"6217:82:50","text":" @dev Returns the total amount of tokens minted in the contract."},"id":8705,"implemented":true,"kind":"function","modifiers":[],"name":"_totalMinted","nameLocation":"6313:12:50","nodeType":"FunctionDefinition","parameters":{"id":8694,"nodeType":"ParameterList","parameters":[],"src":"6325:2:50"},"returnParameters":{"id":8697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8696,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8705,"src":"6359:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8695,"name":"uint256","nodeType":"ElementaryTypeName","src":"6359:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6358:9:50"},"scope":10143,"src":"6304:290:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8713,"nodeType":"Block","src":"6735:36:50","statements":[{"expression":{"id":8711,"name":"_burnCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8614,"src":"6752:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8710,"id":8712,"nodeType":"Return","src":"6745:19:50"}]},"documentation":{"id":8706,"nodeType":"StructuredDocumentation","src":"6600:66:50","text":" @dev Returns the total number of tokens burned."},"id":8714,"implemented":true,"kind":"function","modifiers":[],"name":"_totalBurned","nameLocation":"6680:12:50","nodeType":"FunctionDefinition","parameters":{"id":8707,"nodeType":"ParameterList","parameters":[],"src":"6692:2:50"},"returnParameters":{"id":8710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8714,"src":"6726:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8708,"name":"uint256","nodeType":"ElementaryTypeName","src":"6726:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6725:9:50"},"scope":10143,"src":"6671:100:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[10243],"body":{"id":8739,"nodeType":"Block","src":"7126:149:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8723,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"7140:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7157:1:50","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":8725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7149:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8724,"name":"address","nodeType":"ElementaryTypeName","src":"7149:7:50","typeDescriptions":{}}},"id":8727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7149:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7140:19:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8732,"nodeType":"IfStatement","src":"7136:60:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8729,"name":"BalanceQueryForZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10155,"src":"7168:26:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7168:28:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8731,"nodeType":"RevertStatement","src":"7161:35:50"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8733,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"7213:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8735,"indexExpression":{"id":8734,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"7232:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7213:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":8736,"name":"_BITMASK_ADDRESS_DATA_ENTRY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8552,"src":"7241:27:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7213:55:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8722,"id":8738,"nodeType":"Return","src":"7206:62:50"}]},"documentation":{"id":8715,"nodeType":"StructuredDocumentation","src":"6966:74:50","text":" @dev Returns the number of tokens in `owner`'s account."},"functionSelector":"70a08231","id":8740,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"7054:9:50","nodeType":"FunctionDefinition","overrides":{"id":8719,"nodeType":"OverrideSpecifier","overrides":[],"src":"7099:8:50"},"parameters":{"id":8718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8717,"mutability":"mutable","name":"owner","nameLocation":"7072:5:50","nodeType":"VariableDeclaration","scope":8740,"src":"7064:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8716,"name":"address","nodeType":"ElementaryTypeName","src":"7064:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7063:15:50"},"returnParameters":{"id":8722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8740,"src":"7117:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8720,"name":"uint256","nodeType":"ElementaryTypeName","src":"7117:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7116:9:50"},"scope":10143,"src":"7045:230:50","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8757,"nodeType":"Block","src":"7422:106:50","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8748,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"7440:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8750,"indexExpression":{"id":8749,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8743,"src":"7459:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7440:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":8751,"name":"_BITPOS_NUMBER_MINTED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"7469:21:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7440:50:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8753,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7439:52:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":8754,"name":"_BITMASK_ADDRESS_DATA_ENTRY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8552,"src":"7494:27:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7439:82:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8747,"id":8756,"nodeType":"Return","src":"7432:89:50"}]},"documentation":{"id":8741,"nodeType":"StructuredDocumentation","src":"7281:66:50","text":" Returns the number of tokens minted by `owner`."},"id":8758,"implemented":true,"kind":"function","modifiers":[],"name":"_numberMinted","nameLocation":"7361:13:50","nodeType":"FunctionDefinition","parameters":{"id":8744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8743,"mutability":"mutable","name":"owner","nameLocation":"7383:5:50","nodeType":"VariableDeclaration","scope":8758,"src":"7375:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8742,"name":"address","nodeType":"ElementaryTypeName","src":"7375:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7374:15:50"},"returnParameters":{"id":8747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8758,"src":"7413:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8745,"name":"uint256","nodeType":"ElementaryTypeName","src":"7413:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7412:9:50"},"scope":10143,"src":"7352:176:50","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8775,"nodeType":"Block","src":"7691:106:50","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8766,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"7709:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8768,"indexExpression":{"id":8767,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8761,"src":"7728:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7709:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":8769,"name":"_BITPOS_NUMBER_BURNED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8558,"src":"7738:21:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7709:50:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8771,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7708:52:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":8772,"name":"_BITMASK_ADDRESS_DATA_ENTRY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8552,"src":"7763:27:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7708:82:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8765,"id":8774,"nodeType":"Return","src":"7701:89:50"}]},"documentation":{"id":8759,"nodeType":"StructuredDocumentation","src":"7534:82:50","text":" Returns the number of tokens burned by or on behalf of `owner`."},"id":8776,"implemented":true,"kind":"function","modifiers":[],"name":"_numberBurned","nameLocation":"7630:13:50","nodeType":"FunctionDefinition","parameters":{"id":8762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8761,"mutability":"mutable","name":"owner","nameLocation":"7652:5:50","nodeType":"VariableDeclaration","scope":8776,"src":"7644:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8760,"name":"address","nodeType":"ElementaryTypeName","src":"7644:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7643:15:50"},"returnParameters":{"id":8765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8776,"src":"7682:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8763,"name":"uint256","nodeType":"ElementaryTypeName","src":"7682:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7681:9:50"},"scope":10143,"src":"7621:176:50","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8793,"nodeType":"Block","src":"7973:72:50","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8786,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"7997:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8788,"indexExpression":{"id":8787,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8779,"src":"8016:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7997:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":8789,"name":"_BITPOS_AUX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"8026:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7997:40:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7990:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8784,"name":"uint64","nodeType":"ElementaryTypeName","src":"7990:6:50","typeDescriptions":{}}},"id":8791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7990:48:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":8783,"id":8792,"nodeType":"Return","src":"7983:55:50"}]},"documentation":{"id":8777,"nodeType":"StructuredDocumentation","src":"7803:102:50","text":" Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used)."},"id":8794,"implemented":true,"kind":"function","modifiers":[],"name":"_getAux","nameLocation":"7919:7:50","nodeType":"FunctionDefinition","parameters":{"id":8780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8779,"mutability":"mutable","name":"owner","nameLocation":"7935:5:50","nodeType":"VariableDeclaration","scope":8794,"src":"7927:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8778,"name":"address","nodeType":"ElementaryTypeName","src":"7927:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7926:15:50"},"returnParameters":{"id":8783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8794,"src":"7965:6:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8781,"name":"uint64","nodeType":"ElementaryTypeName","src":"7965:6:50","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"7964:8:50"},"scope":10143,"src":"7910:135:50","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8830,"nodeType":"Block","src":"8288:334:50","statements":[{"assignments":[8803],"declarations":[{"constant":false,"id":8803,"mutability":"mutable","name":"packed","nameLocation":"8306:6:50","nodeType":"VariableDeclaration","scope":8830,"src":"8298:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8802,"name":"uint256","nodeType":"ElementaryTypeName","src":"8298:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8807,"initialValue":{"baseExpression":{"id":8804,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"8315:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8806,"indexExpression":{"id":8805,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8797,"src":"8334:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8315:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8298:42:50"},{"assignments":[8809],"declarations":[{"constant":false,"id":8809,"mutability":"mutable","name":"auxCasted","nameLocation":"8358:9:50","nodeType":"VariableDeclaration","scope":8830,"src":"8350:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8808,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8810,"nodeType":"VariableDeclarationStatement","src":"8350:17:50"},{"AST":{"nodeType":"YulBlock","src":"8450:40:50","statements":[{"nodeType":"YulAssignment","src":"8464:16:50","value":{"name":"aux","nodeType":"YulIdentifier","src":"8477:3:50"},"variableNames":[{"name":"auxCasted","nodeType":"YulIdentifier","src":"8464:9:50"}]}]},"evmVersion":"london","externalReferences":[{"declaration":8799,"isOffset":false,"isSlot":false,"src":"8477:3:50","valueSize":1},{"declaration":8809,"isOffset":false,"isSlot":false,"src":"8464:9:50","valueSize":1}],"id":8811,"nodeType":"InlineAssembly","src":"8441:49:50"},{"expression":{"id":8822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8812,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8803,"src":"8499:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8813,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8803,"src":"8509:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":8814,"name":"_BITMASK_AUX_COMPLEMENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8569,"src":"8518:23:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8509:32:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8816,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8508:34:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8817,"name":"auxCasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8809,"src":"8546:9:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":8818,"name":"_BITPOS_AUX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"8559:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8546:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8820,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8545:26:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8508:63:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8499:72:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8823,"nodeType":"ExpressionStatement","src":"8499:72:50"},{"expression":{"id":8828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8824,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"8581:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8826,"indexExpression":{"id":8825,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8797,"src":"8600:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8581:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8827,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8803,"src":"8609:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8581:34:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8829,"nodeType":"ExpressionStatement","src":"8581:34:50"}]},"documentation":{"id":8795,"nodeType":"StructuredDocumentation","src":"8051:171:50","text":" Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\n If there are multiple variables, please pack them into a uint64."},"id":8831,"implemented":true,"kind":"function","modifiers":[],"name":"_setAux","nameLocation":"8236:7:50","nodeType":"FunctionDefinition","parameters":{"id":8800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8797,"mutability":"mutable","name":"owner","nameLocation":"8252:5:50","nodeType":"VariableDeclaration","scope":8831,"src":"8244:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8796,"name":"address","nodeType":"ElementaryTypeName","src":"8244:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8799,"mutability":"mutable","name":"aux","nameLocation":"8266:3:50","nodeType":"VariableDeclaration","scope":8831,"src":"8259:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8798,"name":"uint64","nodeType":"ElementaryTypeName","src":"8259:6:50","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8243:27:50"},"returnParameters":{"id":8801,"nodeType":"ParameterList","parameters":[],"src":"8288:0:50"},"scope":10143,"src":"8227:395:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[10208],"body":{"id":8852,"nodeType":"Block","src":"9246:539:50","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"9558:11:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031666663396137","id":8841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9573:10:50","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"src":"9558:25:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8843,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"9634:11:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783830616335386364","id":8844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9649:10:50","typeDescriptions":{"typeIdentifier":"t_rational_2158778573_by_1","typeString":"int_const 2158778573"},"value":"0x80ac58cd"},"src":"9634:25:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9558:101:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8847,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"9710:11:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783562356531333966","id":8848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9725:10:50","typeDescriptions":{"typeIdentifier":"t_rational_1532892063_by_1","typeString":"int_const 1532892063"},"value":"0x5b5e139f"},"src":"9710:25:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9558:177:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8839,"id":8851,"nodeType":"Return","src":"9539:196:50"}]},"documentation":{"id":8832,"nodeType":"StructuredDocumentation","src":"8809:341:50","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\n to learn more about how these ids are created.\n This function call must use less than 30000 gas."},"functionSelector":"01ffc9a7","id":8853,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"9164:17:50","nodeType":"FunctionDefinition","overrides":{"id":8836,"nodeType":"OverrideSpecifier","overrides":[],"src":"9222:8:50"},"parameters":{"id":8835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8834,"mutability":"mutable","name":"interfaceId","nameLocation":"9189:11:50","nodeType":"VariableDeclaration","scope":8853,"src":"9182:18:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8833,"name":"bytes4","nodeType":"ElementaryTypeName","src":"9182:6:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"9181:20:50"},"returnParameters":{"id":8839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8853,"src":"9240:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8837,"name":"bool","nodeType":"ElementaryTypeName","src":"9240:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9239:6:50"},"scope":10143,"src":"9155:630:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[10323],"body":{"id":8862,"nodeType":"Block","src":"10108:29:50","statements":[{"expression":{"id":8860,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8616,"src":"10125:5:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8859,"id":8861,"nodeType":"Return","src":"10118:12:50"}]},"documentation":{"id":8854,"nodeType":"StructuredDocumentation","src":"9976:58:50","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":8863,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"10048:4:50","nodeType":"FunctionDefinition","overrides":{"id":8856,"nodeType":"OverrideSpecifier","overrides":[],"src":"10075:8:50"},"parameters":{"id":8855,"nodeType":"ParameterList","parameters":[],"src":"10052:2:50"},"returnParameters":{"id":8859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8858,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8863,"src":"10093:13:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8857,"name":"string","nodeType":"ElementaryTypeName","src":"10093:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10092:15:50"},"scope":10143,"src":"10039:98:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[10329],"body":{"id":8872,"nodeType":"Block","src":"10279:31:50","statements":[{"expression":{"id":8870,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8618,"src":"10296:7:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8869,"id":8871,"nodeType":"Return","src":"10289:14:50"}]},"documentation":{"id":8864,"nodeType":"StructuredDocumentation","src":"10143:60:50","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":8873,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"10217:6:50","nodeType":"FunctionDefinition","overrides":{"id":8866,"nodeType":"OverrideSpecifier","overrides":[],"src":"10246:8:50"},"parameters":{"id":8865,"nodeType":"ParameterList","parameters":[],"src":"10223:2:50"},"returnParameters":{"id":8869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8868,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8873,"src":"10264:13:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8867,"name":"string","nodeType":"ElementaryTypeName","src":"10264:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10263:15:50"},"scope":10143,"src":"10208:102:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[10337],"body":{"id":8915,"nodeType":"Block","src":"10499:225:50","statements":[{"condition":{"id":8885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10513:17:50","subExpression":{"arguments":[{"id":8883,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"10522:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8882,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9267,"src":"10514:7:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":8884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10514:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8889,"nodeType":"IfStatement","src":"10509:59:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8886,"name":"URIQueryForNonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10179,"src":"10539:27:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10539:29:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8888,"nodeType":"RevertStatement","src":"10532:36:50"}},{"assignments":[8891],"declarations":[{"constant":false,"id":8891,"mutability":"mutable","name":"baseURI","nameLocation":"10593:7:50","nodeType":"VariableDeclaration","scope":8915,"src":"10579:21:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8890,"name":"string","nodeType":"ElementaryTypeName","src":"10579:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":8894,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8892,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"10603:8:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":8893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10603:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"10579:34:50"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":8897,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8891,"src":"10636:7:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8896,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10630:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":8895,"name":"bytes","nodeType":"ElementaryTypeName","src":"10630:5:50","typeDescriptions":{}}},"id":8898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10630:14:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"10630:21:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10655:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10630:26:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":8912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10715:2:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":8913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10630:87:50","trueExpression":{"arguments":[{"arguments":[{"id":8906,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8891,"src":"10683:7:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":8908,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"10702:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8907,"name":"_toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10142,"src":"10692:9:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":8909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10692:18:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":8904,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10666:3:50","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"10666:16:50","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10666:45:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10659:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":8902,"name":"string","nodeType":"ElementaryTypeName","src":"10659:6:50","typeDescriptions":{}}},"id":8911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10659:53:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":8881,"id":8914,"nodeType":"Return","src":"10623:94:50"}]},"documentation":{"id":8874,"nodeType":"StructuredDocumentation","src":"10316:90:50","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":8916,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"10420:8:50","nodeType":"FunctionDefinition","overrides":{"id":8878,"nodeType":"OverrideSpecifier","overrides":[],"src":"10466:8:50"},"parameters":{"id":8877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8876,"mutability":"mutable","name":"tokenId","nameLocation":"10437:7:50","nodeType":"VariableDeclaration","scope":8916,"src":"10429:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8875,"name":"uint256","nodeType":"ElementaryTypeName","src":"10429:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10428:17:50"},"returnParameters":{"id":8881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8916,"src":"10484:13:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8879,"name":"string","nodeType":"ElementaryTypeName","src":"10484:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10483:15:50"},"scope":10143,"src":"10411:313:50","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8924,"nodeType":"Block","src":"11035:26:50","statements":[{"expression":{"hexValue":"","id":8922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11052:2:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":8921,"id":8923,"nodeType":"Return","src":"11045:9:50"}]},"documentation":{"id":8917,"nodeType":"StructuredDocumentation","src":"10730:234:50","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, it can be overridden in child contracts."},"id":8925,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"10978:8:50","nodeType":"FunctionDefinition","parameters":{"id":8918,"nodeType":"ParameterList","parameters":[],"src":"10986:2:50"},"returnParameters":{"id":8921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8920,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8925,"src":"11020:13:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8919,"name":"string","nodeType":"ElementaryTypeName","src":"11020:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11019:15:50"},"scope":10143,"src":"10969:92:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[10251],"body":{"id":8944,"nodeType":"Block","src":"11472:69:50","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":8939,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8928,"src":"11524:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8938,"name":"_packedOwnershipOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"11505:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":8940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11505:27:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11497:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":8936,"name":"uint160","nodeType":"ElementaryTypeName","src":"11497:7:50","typeDescriptions":{}}},"id":8941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11497:36:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":8935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8934,"name":"address","nodeType":"ElementaryTypeName","src":"11489:7:50","typeDescriptions":{}}},"id":8942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11489:45:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8933,"id":8943,"nodeType":"Return","src":"11482:52:50"}]},"documentation":{"id":8926,"nodeType":"StructuredDocumentation","src":"11255:131:50","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":8945,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"11400:7:50","nodeType":"FunctionDefinition","overrides":{"id":8930,"nodeType":"OverrideSpecifier","overrides":[],"src":"11445:8:50"},"parameters":{"id":8929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8928,"mutability":"mutable","name":"tokenId","nameLocation":"11416:7:50","nodeType":"VariableDeclaration","scope":8945,"src":"11408:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8927,"name":"uint256","nodeType":"ElementaryTypeName","src":"11408:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11407:17:50"},"returnParameters":{"id":8933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8932,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8945,"src":"11463:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8931,"name":"address","nodeType":"ElementaryTypeName","src":"11463:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11462:9:50"},"scope":10143,"src":"11391:150:50","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8960,"nodeType":"Block","src":"11817:71:50","statements":[{"expression":{"arguments":[{"arguments":[{"id":8956,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8948,"src":"11872:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8955,"name":"_packedOwnershipOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"11853:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":8957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11853:27:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8954,"name":"_unpackedOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9107,"src":"11834:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_struct$_TokenOwnership_$10194_memory_ptr_$","typeString":"function (uint256) pure returns (struct IERC721A.TokenOwnership memory)"}},"id":8958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11834:47:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_memory_ptr","typeString":"struct IERC721A.TokenOwnership memory"}},"functionReturnParameters":8953,"id":8959,"nodeType":"Return","src":"11827:54:50"}]},"documentation":{"id":8946,"nodeType":"StructuredDocumentation","src":"11547:172:50","text":" @dev Gas spent here starts off proportional to the maximum mint batch size.\n It gradually moves to O(1) as tokens get transferred around over time."},"id":8961,"implemented":true,"kind":"function","modifiers":[],"name":"_ownershipOf","nameLocation":"11733:12:50","nodeType":"FunctionDefinition","parameters":{"id":8949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8948,"mutability":"mutable","name":"tokenId","nameLocation":"11754:7:50","nodeType":"VariableDeclaration","scope":8961,"src":"11746:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8947,"name":"uint256","nodeType":"ElementaryTypeName","src":"11746:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11745:17:50"},"returnParameters":{"id":8953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8961,"src":"11794:21:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_memory_ptr","typeString":"struct IERC721A.TokenOwnership"},"typeName":{"id":8951,"nodeType":"UserDefinedTypeName","pathNode":{"id":8950,"name":"TokenOwnership","nodeType":"IdentifierPath","referencedDeclaration":10194,"src":"11794:14:50"},"referencedDeclaration":10194,"src":"11794:14:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_storage_ptr","typeString":"struct IERC721A.TokenOwnership"}},"visibility":"internal"}],"src":"11793:23:50"},"scope":10143,"src":"11724:164:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8976,"nodeType":"Block","src":"12070:68:50","statements":[{"expression":{"arguments":[{"baseExpression":{"id":8971,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"12106:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":8973,"indexExpression":{"id":8972,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8964,"src":"12124:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12106:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8970,"name":"_unpackedOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9107,"src":"12087:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_struct$_TokenOwnership_$10194_memory_ptr_$","typeString":"function (uint256) pure returns (struct IERC721A.TokenOwnership memory)"}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12087:44:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_memory_ptr","typeString":"struct IERC721A.TokenOwnership memory"}},"functionReturnParameters":8969,"id":8975,"nodeType":"Return","src":"12080:51:50"}]},"documentation":{"id":8962,"nodeType":"StructuredDocumentation","src":"11894:80:50","text":" @dev Returns the unpacked `TokenOwnership` struct at `index`."},"id":8977,"implemented":true,"kind":"function","modifiers":[],"name":"_ownershipAt","nameLocation":"11988:12:50","nodeType":"FunctionDefinition","parameters":{"id":8965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8964,"mutability":"mutable","name":"index","nameLocation":"12009:5:50","nodeType":"VariableDeclaration","scope":8977,"src":"12001:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8963,"name":"uint256","nodeType":"ElementaryTypeName","src":"12001:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12000:15:50"},"returnParameters":{"id":8969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8968,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8977,"src":"12047:21:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_memory_ptr","typeString":"struct IERC721A.TokenOwnership"},"typeName":{"id":8967,"nodeType":"UserDefinedTypeName","pathNode":{"id":8966,"name":"TokenOwnership","nodeType":"IdentifierPath","referencedDeclaration":10194,"src":"12047:14:50"},"referencedDeclaration":10194,"src":"12047:14:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_storage_ptr","typeString":"struct IERC721A.TokenOwnership"}},"visibility":"internal"}],"src":"12046:23:50"},"scope":10143,"src":"11979:159:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8998,"nodeType":"Block","src":"12310:128:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8983,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"12324:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":8985,"indexExpression":{"id":8984,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8980,"src":"12342:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12324:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12352:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12324:29:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8997,"nodeType":"IfStatement","src":"12320:112:50","trueBody":{"id":8996,"nodeType":"Block","src":"12355:77:50","statements":[{"expression":{"id":8994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8988,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"12369:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":8990,"indexExpression":{"id":8989,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8980,"src":"12387:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12369:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8992,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8980,"src":"12415:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8991,"name":"_packedOwnershipOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"12396:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":8993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12396:25:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12369:52:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8995,"nodeType":"ExpressionStatement","src":"12369:52:50"}]}}]},"documentation":{"id":8978,"nodeType":"StructuredDocumentation","src":"12144:97:50","text":" @dev Initializes the ownership slot minted at `index` for efficiency purposes."},"id":8999,"implemented":true,"kind":"function","modifiers":[],"name":"_initializeOwnershipAt","nameLocation":"12255:22:50","nodeType":"FunctionDefinition","parameters":{"id":8981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8980,"mutability":"mutable","name":"index","nameLocation":"12286:5:50","nodeType":"VariableDeclaration","scope":8999,"src":"12278:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8979,"name":"uint256","nodeType":"ElementaryTypeName","src":"12278:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12277:15:50"},"returnParameters":{"id":8982,"nodeType":"ParameterList","parameters":[],"src":"12310:0:50"},"scope":10143,"src":"12246:192:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9052,"nodeType":"Block","src":"12591:1173:50","statements":[{"assignments":[9008],"declarations":[{"constant":false,"id":9008,"mutability":"mutable","name":"curr","nameLocation":"12609:4:50","nodeType":"VariableDeclaration","scope":9052,"src":"12601:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9007,"name":"uint256","nodeType":"ElementaryTypeName","src":"12601:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9010,"initialValue":{"id":9009,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"12616:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12601:22:50"},{"id":9048,"nodeType":"UncheckedBlock","src":"12634:1076:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9011,"name":"_startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8667,"src":"12662:13:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12662:15:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9013,"name":"curr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9008,"src":"12681:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12662:23:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9047,"nodeType":"IfStatement","src":"12658:1042:50","trueBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9015,"name":"curr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9008,"src":"12707:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9016,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"12714:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12707:20:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9046,"nodeType":"IfStatement","src":"12703:997:50","trueBody":{"id":9045,"nodeType":"Block","src":"12729:971:50","statements":[{"assignments":[9019],"declarations":[{"constant":false,"id":9019,"mutability":"mutable","name":"packed","nameLocation":"12759:6:50","nodeType":"VariableDeclaration","scope":9045,"src":"12751:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9018,"name":"uint256","nodeType":"ElementaryTypeName","src":"12751:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9023,"initialValue":{"baseExpression":{"id":9020,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"12768:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9022,"indexExpression":{"id":9021,"name":"curr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9008,"src":"12786:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12768:23:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12751:40:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9024,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9019,"src":"12855:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9025,"name":"_BITMASK_BURNED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"12864:15:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12855:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12883:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12855:29:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9044,"nodeType":"IfStatement","src":"12851:831:50","trueBody":{"id":9043,"nodeType":"Block","src":"12886:796:50","statements":[{"body":{"id":9039,"nodeType":"Block","src":"13530:91:50","statements":[{"expression":{"id":9037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9032,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9019,"src":"13560:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":9033,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"13569:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9036,"indexExpression":{"id":9035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"13587:6:50","subExpression":{"id":9034,"name":"curr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9008,"src":"13589:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13569:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13560:34:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9038,"nodeType":"ExpressionStatement","src":"13560:34:50"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9029,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9019,"src":"13517:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13527:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13517:11:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9040,"nodeType":"WhileStatement","src":"13510:111:50"},{"expression":{"id":9041,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9019,"src":"13653:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9006,"id":9042,"nodeType":"Return","src":"13646:13:50"}]}}]}}}]},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9049,"name":"OwnerQueryForNonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10164,"src":"13726:29:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13726:31:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9051,"nodeType":"RevertStatement","src":"13719:38:50"}]},"documentation":{"id":9000,"nodeType":"StructuredDocumentation","src":"12444:66:50","text":" Returns the packed ownership data of `tokenId`."},"id":9053,"implemented":true,"kind":"function","modifiers":[],"name":"_packedOwnershipOf","nameLocation":"12524:18:50","nodeType":"FunctionDefinition","parameters":{"id":9003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9002,"mutability":"mutable","name":"tokenId","nameLocation":"12551:7:50","nodeType":"VariableDeclaration","scope":9053,"src":"12543:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9001,"name":"uint256","nodeType":"ElementaryTypeName","src":"12543:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12542:17:50"},"returnParameters":{"id":9006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9005,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9053,"src":"12582:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9004,"name":"uint256","nodeType":"ElementaryTypeName","src":"12582:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12581:9:50"},"scope":10143,"src":"12515:1249:50","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":9106,"nodeType":"Block","src":"13957:262:50","statements":[{"expression":{"id":9072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9062,"name":"ownership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9060,"src":"13967:9:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_memory_ptr","typeString":"struct IERC721A.TokenOwnership memory"}},"id":9064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"addr","nodeType":"MemberAccess","referencedDeclaration":10187,"src":"13967:14:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":9069,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9056,"src":"14000:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13992:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":9067,"name":"uint160","nodeType":"ElementaryTypeName","src":"13992:7:50","typeDescriptions":{}}},"id":9070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13992:15:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":9066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13984:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9065,"name":"address","nodeType":"ElementaryTypeName","src":"13984:7:50","typeDescriptions":{}}},"id":9071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13984:24:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13967:41:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9073,"nodeType":"ExpressionStatement","src":"13967:41:50"},{"expression":{"id":9083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9074,"name":"ownership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9060,"src":"14018:9:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_memory_ptr","typeString":"struct IERC721A.TokenOwnership memory"}},"id":9076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"startTimestamp","nodeType":"MemberAccess","referencedDeclaration":10189,"src":"14018:24:50","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9079,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9056,"src":"14052:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":9080,"name":"_BITPOS_START_TIMESTAMP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8572,"src":"14062:23:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14052:33:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14045:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":9077,"name":"uint64","nodeType":"ElementaryTypeName","src":"14045:6:50","typeDescriptions":{}}},"id":9082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14045:41:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14018:68:50","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":9084,"nodeType":"ExpressionStatement","src":"14018:68:50"},{"expression":{"id":9093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9085,"name":"ownership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9060,"src":"14096:9:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_memory_ptr","typeString":"struct IERC721A.TokenOwnership memory"}},"id":9087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"burned","nodeType":"MemberAccess","referencedDeclaration":10191,"src":"14096:16:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9088,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9056,"src":"14115:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9089,"name":"_BITMASK_BURNED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"14124:15:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14115:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14143:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14115:29:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14096:48:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9094,"nodeType":"ExpressionStatement","src":"14096:48:50"},{"expression":{"id":9104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9095,"name":"ownership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9060,"src":"14154:9:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_memory_ptr","typeString":"struct IERC721A.TokenOwnership memory"}},"id":9097,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"extraData","nodeType":"MemberAccess","referencedDeclaration":10193,"src":"14154:19:50","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9100,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9056,"src":"14183:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":9101,"name":"_BITPOS_EXTRA_DATA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8588,"src":"14193:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14183:28:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14176:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":9098,"name":"uint24","nodeType":"ElementaryTypeName","src":"14176:6:50","typeDescriptions":{}}},"id":9103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14176:36:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"14154:58:50","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":9105,"nodeType":"ExpressionStatement","src":"14154:58:50"}]},"documentation":{"id":9054,"nodeType":"StructuredDocumentation","src":"13770:83:50","text":" @dev Returns the unpacked `TokenOwnership` struct from `packed`."},"id":9107,"implemented":true,"kind":"function","modifiers":[],"name":"_unpackedOwnership","nameLocation":"13867:18:50","nodeType":"FunctionDefinition","parameters":{"id":9057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9056,"mutability":"mutable","name":"packed","nameLocation":"13894:6:50","nodeType":"VariableDeclaration","scope":9107,"src":"13886:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9055,"name":"uint256","nodeType":"ElementaryTypeName","src":"13886:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13885:16:50"},"returnParameters":{"id":9061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9060,"mutability":"mutable","name":"ownership","nameLocation":"13946:9:50","nodeType":"VariableDeclaration","scope":9107,"src":"13924:31:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_memory_ptr","typeString":"struct IERC721A.TokenOwnership"},"typeName":{"id":9059,"nodeType":"UserDefinedTypeName","pathNode":{"id":9058,"name":"TokenOwnership","nodeType":"IdentifierPath","referencedDeclaration":10194,"src":"13924:14:50"},"referencedDeclaration":10194,"src":"13924:14:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOwnership_$10194_storage_ptr","typeString":"struct IERC721A.TokenOwnership"}},"visibility":"internal"}],"src":"13923:33:50"},"scope":10143,"src":"13858:361:50","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":9118,"nodeType":"Block","src":"14393:347:50","statements":[{"AST":{"nodeType":"YulBlock","src":"14412:322:50","statements":[{"nodeType":"YulAssignment","src":"14522:37:50","value":{"arguments":[{"name":"owner","nodeType":"YulIdentifier","src":"14535:5:50"},{"name":"_BITMASK_ADDRESS","nodeType":"YulIdentifier","src":"14542:16:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14531:3:50"},"nodeType":"YulFunctionCall","src":"14531:28:50"},"variableNames":[{"name":"owner","nodeType":"YulIdentifier","src":"14522:5:50"}]},{"nodeType":"YulAssignment","src":"14651:73:50","value":{"arguments":[{"name":"owner","nodeType":"YulIdentifier","src":"14664:5:50"},{"arguments":[{"arguments":[{"name":"_BITPOS_START_TIMESTAMP","nodeType":"YulIdentifier","src":"14678:23:50"},{"arguments":[],"functionName":{"name":"timestamp","nodeType":"YulIdentifier","src":"14703:9:50"},"nodeType":"YulFunctionCall","src":"14703:11:50"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14674:3:50"},"nodeType":"YulFunctionCall","src":"14674:41:50"},{"name":"flags","nodeType":"YulIdentifier","src":"14717:5:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"14671:2:50"},"nodeType":"YulFunctionCall","src":"14671:52:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"14661:2:50"},"nodeType":"YulFunctionCall","src":"14661:63:50"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"14651:6:50"}]}]},"evmVersion":"london","externalReferences":[{"declaration":8604,"isOffset":false,"isSlot":false,"src":"14542:16:50","valueSize":1},{"declaration":8572,"isOffset":false,"isSlot":false,"src":"14678:23:50","valueSize":1},{"declaration":9112,"isOffset":false,"isSlot":false,"src":"14717:5:50","valueSize":1},{"declaration":9110,"isOffset":false,"isSlot":false,"src":"14522:5:50","valueSize":1},{"declaration":9110,"isOffset":false,"isSlot":false,"src":"14535:5:50","valueSize":1},{"declaration":9110,"isOffset":false,"isSlot":false,"src":"14664:5:50","valueSize":1},{"declaration":9115,"isOffset":false,"isSlot":false,"src":"14651:6:50","valueSize":1}],"id":9117,"nodeType":"InlineAssembly","src":"14403:331:50"}]},"documentation":{"id":9108,"nodeType":"StructuredDocumentation","src":"14225:67:50","text":" @dev Packs ownership data into a single uint256."},"id":9119,"implemented":true,"kind":"function","modifiers":[],"name":"_packOwnershipData","nameLocation":"14306:18:50","nodeType":"FunctionDefinition","parameters":{"id":9113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9110,"mutability":"mutable","name":"owner","nameLocation":"14333:5:50","nodeType":"VariableDeclaration","scope":9119,"src":"14325:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9109,"name":"address","nodeType":"ElementaryTypeName","src":"14325:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9112,"mutability":"mutable","name":"flags","nameLocation":"14348:5:50","nodeType":"VariableDeclaration","scope":9119,"src":"14340:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9111,"name":"uint256","nodeType":"ElementaryTypeName","src":"14340:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14324:30:50"},"returnParameters":{"id":9116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9115,"mutability":"mutable","name":"result","nameLocation":"14385:6:50","nodeType":"VariableDeclaration","scope":9119,"src":"14377:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9114,"name":"uint256","nodeType":"ElementaryTypeName","src":"14377:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14376:16:50"},"scope":10143,"src":"14297:443:50","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":9128,"nodeType":"Block","src":"14923:232:50","statements":[{"AST":{"nodeType":"YulBlock","src":"15007:142:50","statements":[{"nodeType":"YulAssignment","src":"15083:56:50","value":{"arguments":[{"name":"_BITPOS_NEXT_INITIALIZED","nodeType":"YulIdentifier","src":"15097:24:50"},{"arguments":[{"name":"quantity","nodeType":"YulIdentifier","src":"15126:8:50"},{"kind":"number","nodeType":"YulLiteral","src":"15136:1:50","type":"","value":"1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15123:2:50"},"nodeType":"YulFunctionCall","src":"15123:15:50"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15093:3:50"},"nodeType":"YulFunctionCall","src":"15093:46:50"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"15083:6:50"}]}]},"evmVersion":"london","externalReferences":[{"declaration":8580,"isOffset":false,"isSlot":false,"src":"15097:24:50","valueSize":1},{"declaration":9122,"isOffset":false,"isSlot":false,"src":"15126:8:50","valueSize":1},{"declaration":9125,"isOffset":false,"isSlot":false,"src":"15083:6:50","valueSize":1}],"id":9127,"nodeType":"InlineAssembly","src":"14998:151:50"}]},"documentation":{"id":9120,"nodeType":"StructuredDocumentation","src":"14746:86:50","text":" @dev Returns the `nextInitialized` flag set if `quantity` equals 1."},"id":9129,"implemented":true,"kind":"function","modifiers":[],"name":"_nextInitializedFlag","nameLocation":"14846:20:50","nodeType":"FunctionDefinition","parameters":{"id":9123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9122,"mutability":"mutable","name":"quantity","nameLocation":"14875:8:50","nodeType":"VariableDeclaration","scope":9129,"src":"14867:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9121,"name":"uint256","nodeType":"ElementaryTypeName","src":"14867:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14866:18:50"},"returnParameters":{"id":9126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9125,"mutability":"mutable","name":"result","nameLocation":"14915:6:50","nodeType":"VariableDeclaration","scope":9129,"src":"14907:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9124,"name":"uint256","nodeType":"ElementaryTypeName","src":"14907:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14906:16:50"},"scope":10143,"src":"14837:318:50","stateMutability":"pure","virtual":false,"visibility":"private"},{"baseFunctions":[10291],"body":{"id":9173,"nodeType":"Block","src":"15890:320:50","statements":[{"assignments":[9139],"declarations":[{"constant":false,"id":9139,"mutability":"mutable","name":"owner","nameLocation":"15908:5:50","nodeType":"VariableDeclaration","scope":9173,"src":"15900:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9138,"name":"address","nodeType":"ElementaryTypeName","src":"15900:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9143,"initialValue":{"arguments":[{"id":9141,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9134,"src":"15924:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9140,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8945,"src":"15916:7:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":9142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15916:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15900:32:50"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9144,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"15947:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15947:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9146,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9139,"src":"15970:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15947:28:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9159,"nodeType":"IfStatement","src":"15943:172:50","trueBody":{"condition":{"id":9153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15993:45:50","subExpression":{"arguments":[{"id":9149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9139,"src":"16011:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9150,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"16018:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16018:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9148,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9241,"src":"15994:16:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":9152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15994:44:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9158,"nodeType":"IfStatement","src":"15989:126:50","trueBody":{"id":9157,"nodeType":"Block","src":"16040:75:50","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9154,"name":"ApprovalCallerNotOwnerNorApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10149,"src":"16065:33:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16065:35:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9156,"nodeType":"RevertStatement","src":"16058:42:50"}]}}},{"expression":{"id":9165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":9160,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"16125:15:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TokenApprovalRef_$8544_storage_$","typeString":"mapping(uint256 => struct ERC721A.TokenApprovalRef storage ref)"}},"id":9162,"indexExpression":{"id":9161,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9134,"src":"16141:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16125:24:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenApprovalRef_$8544_storage","typeString":"struct ERC721A.TokenApprovalRef storage ref"}},"id":9163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"16125:30:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9164,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9132,"src":"16158:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16125:35:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9166,"nodeType":"ExpressionStatement","src":"16125:35:50"},{"eventCall":{"arguments":[{"id":9168,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9139,"src":"16184:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9169,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9132,"src":"16191:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9170,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9134,"src":"16195:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9167,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10226,"src":"16175:8:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16175:28:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9172,"nodeType":"EmitStatement","src":"16170:33:50"}]},"documentation":{"id":9130,"nodeType":"StructuredDocumentation","src":"15348:459:50","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\n 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":9174,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"15821:7:50","nodeType":"FunctionDefinition","overrides":{"id":9136,"nodeType":"OverrideSpecifier","overrides":[],"src":"15881:8:50"},"parameters":{"id":9135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9132,"mutability":"mutable","name":"to","nameLocation":"15837:2:50","nodeType":"VariableDeclaration","scope":9174,"src":"15829:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9131,"name":"address","nodeType":"ElementaryTypeName","src":"15829:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9134,"mutability":"mutable","name":"tokenId","nameLocation":"15849:7:50","nodeType":"VariableDeclaration","scope":9174,"src":"15841:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9133,"name":"uint256","nodeType":"ElementaryTypeName","src":"15841:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15828:29:50"},"returnParameters":{"id":9137,"nodeType":"ParameterList","parameters":[],"src":"15890:0:50"},"scope":10143,"src":"15812:398:50","stateMutability":"payable","virtual":true,"visibility":"public"},{"baseFunctions":[10307],"body":{"id":9196,"nodeType":"Block","src":"16445:129:50","statements":[{"condition":{"id":9186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16459:17:50","subExpression":{"arguments":[{"id":9184,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"16468:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9183,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9267,"src":"16460:7:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16460:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9190,"nodeType":"IfStatement","src":"16455:64:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9187,"name":"ApprovalQueryForNonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"16485:32:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16485:34:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9189,"nodeType":"RevertStatement","src":"16478:41:50"}},{"expression":{"expression":{"baseExpression":{"id":9191,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"16537:15:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TokenApprovalRef_$8544_storage_$","typeString":"mapping(uint256 => struct ERC721A.TokenApprovalRef storage ref)"}},"id":9193,"indexExpression":{"id":9192,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"16553:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16537:24:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenApprovalRef_$8544_storage","typeString":"struct ERC721A.TokenApprovalRef storage ref"}},"id":9194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":8543,"src":"16537:30:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9182,"id":9195,"nodeType":"Return","src":"16530:37:50"}]},"documentation":{"id":9175,"nodeType":"StructuredDocumentation","src":"16216:139:50","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":9197,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"16369:11:50","nodeType":"FunctionDefinition","overrides":{"id":9179,"nodeType":"OverrideSpecifier","overrides":[],"src":"16418:8:50"},"parameters":{"id":9178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9177,"mutability":"mutable","name":"tokenId","nameLocation":"16389:7:50","nodeType":"VariableDeclaration","scope":9197,"src":"16381:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9176,"name":"uint256","nodeType":"ElementaryTypeName","src":"16381:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16380:17:50"},"returnParameters":{"id":9182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9197,"src":"16436:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9180,"name":"address","nodeType":"ElementaryTypeName","src":"16436:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16435:9:50"},"scope":10143,"src":"16360:214:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[10299],"body":{"id":9222,"nodeType":"Block","src":"16985:147:50","statements":[{"expression":{"id":9213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":9206,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8637,"src":"16995:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":9210,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9207,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"17014:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17014:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16995:39:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9211,"indexExpression":{"id":9209,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9200,"src":"17035:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16995:49:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9212,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9202,"src":"17047:8:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16995:60:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9214,"nodeType":"ExpressionStatement","src":"16995:60:50"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9216,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"17085:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17085:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9218,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9200,"src":"17106:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9219,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9202,"src":"17116:8:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9215,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10235,"src":"17070:14:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":9220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17070:55:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9221,"nodeType":"EmitStatement","src":"17065:60:50"}]},"documentation":{"id":9198,"nodeType":"StructuredDocumentation","src":"16580:316:50","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom}\n for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":9223,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"16910:17:50","nodeType":"FunctionDefinition","overrides":{"id":9204,"nodeType":"OverrideSpecifier","overrides":[],"src":"16976:8:50"},"parameters":{"id":9203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9200,"mutability":"mutable","name":"operator","nameLocation":"16936:8:50","nodeType":"VariableDeclaration","scope":9223,"src":"16928:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9199,"name":"address","nodeType":"ElementaryTypeName","src":"16928:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9202,"mutability":"mutable","name":"approved","nameLocation":"16951:8:50","nodeType":"VariableDeclaration","scope":9223,"src":"16946:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9201,"name":"bool","nodeType":"ElementaryTypeName","src":"16946:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16927:33:50"},"returnParameters":{"id":9205,"nodeType":"ParameterList","parameters":[],"src":"16985:0:50"},"scope":10143,"src":"16901:231:50","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[10317],"body":{"id":9240,"nodeType":"Block","src":"17385:59:50","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":9234,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8637,"src":"17402:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":9236,"indexExpression":{"id":9235,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9226,"src":"17421:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17402:25:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9238,"indexExpression":{"id":9237,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9228,"src":"17428:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17402:35:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9233,"id":9239,"nodeType":"Return","src":"17395:42:50"}]},"documentation":{"id":9224,"nodeType":"StructuredDocumentation","src":"17138:139:50","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}."},"functionSelector":"e985e9c5","id":9241,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"17291:16:50","nodeType":"FunctionDefinition","overrides":{"id":9230,"nodeType":"OverrideSpecifier","overrides":[],"src":"17361:8:50"},"parameters":{"id":9229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9226,"mutability":"mutable","name":"owner","nameLocation":"17316:5:50","nodeType":"VariableDeclaration","scope":9241,"src":"17308:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9225,"name":"address","nodeType":"ElementaryTypeName","src":"17308:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9228,"mutability":"mutable","name":"operator","nameLocation":"17331:8:50","nodeType":"VariableDeclaration","scope":9241,"src":"17323:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9227,"name":"address","nodeType":"ElementaryTypeName","src":"17323:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17307:33:50"},"returnParameters":{"id":9233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9232,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9241,"src":"17379:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9231,"name":"bool","nodeType":"ElementaryTypeName","src":"17379:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17378:6:50"},"scope":10143,"src":"17282:162:50","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":9266,"nodeType":"Block","src":"17764:206:50","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9249,"name":"_startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8667,"src":"17793:13:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17793:15:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9251,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9244,"src":"17812:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17793:26:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9253,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9244,"src":"17835:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9254,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"17845:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17835:23:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17793:65:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9257,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"17895:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9259,"indexExpression":{"id":9258,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9244,"src":"17913:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17895:26:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9260,"name":"_BITMASK_BURNED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"17924:15:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17895:44:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17943:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17895:49:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17793:151:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9248,"id":9265,"nodeType":"Return","src":"17774:170:50"}]},"documentation":{"id":9242,"nodeType":"StructuredDocumentation","src":"17450:238:50","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted. See {_mint}."},"id":9267,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"17702:7:50","nodeType":"FunctionDefinition","parameters":{"id":9245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9244,"mutability":"mutable","name":"tokenId","nameLocation":"17718:7:50","nodeType":"VariableDeclaration","scope":9267,"src":"17710:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9243,"name":"uint256","nodeType":"ElementaryTypeName","src":"17710:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17709:17:50"},"returnParameters":{"id":9248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9267,"src":"17758:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9246,"name":"bool","nodeType":"ElementaryTypeName","src":"17758:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17757:6:50"},"scope":10143,"src":"17693:277:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9280,"nodeType":"Block","src":"18232:488:50","statements":[{"AST":{"nodeType":"YulBlock","src":"18251:463:50","statements":[{"nodeType":"YulAssignment","src":"18361:37:50","value":{"arguments":[{"name":"owner","nodeType":"YulIdentifier","src":"18374:5:50"},{"name":"_BITMASK_ADDRESS","nodeType":"YulIdentifier","src":"18381:16:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18370:3:50"},"nodeType":"YulFunctionCall","src":"18370:28:50"},"variableNames":[{"name":"owner","nodeType":"YulIdentifier","src":"18361:5:50"}]},{"nodeType":"YulAssignment","src":"18511:45:50","value":{"arguments":[{"name":"msgSender","nodeType":"YulIdentifier","src":"18528:9:50"},{"name":"_BITMASK_ADDRESS","nodeType":"YulIdentifier","src":"18539:16:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18524:3:50"},"nodeType":"YulFunctionCall","src":"18524:32:50"},"variableNames":[{"name":"msgSender","nodeType":"YulIdentifier","src":"18511:9:50"}]},{"nodeType":"YulAssignment","src":"18638:66:50","value":{"arguments":[{"arguments":[{"name":"msgSender","nodeType":"YulIdentifier","src":"18654:9:50"},{"name":"owner","nodeType":"YulIdentifier","src":"18665:5:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18651:2:50"},"nodeType":"YulFunctionCall","src":"18651:20:50"},{"arguments":[{"name":"msgSender","nodeType":"YulIdentifier","src":"18676:9:50"},{"name":"approvedAddress","nodeType":"YulIdentifier","src":"18687:15:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18673:2:50"},"nodeType":"YulFunctionCall","src":"18673:30:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"18648:2:50"},"nodeType":"YulFunctionCall","src":"18648:56:50"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"18638:6:50"}]}]},"evmVersion":"london","externalReferences":[{"declaration":8604,"isOffset":false,"isSlot":false,"src":"18381:16:50","valueSize":1},{"declaration":8604,"isOffset":false,"isSlot":false,"src":"18539:16:50","valueSize":1},{"declaration":9270,"isOffset":false,"isSlot":false,"src":"18687:15:50","valueSize":1},{"declaration":9274,"isOffset":false,"isSlot":false,"src":"18511:9:50","valueSize":1},{"declaration":9274,"isOffset":false,"isSlot":false,"src":"18528:9:50","valueSize":1},{"declaration":9274,"isOffset":false,"isSlot":false,"src":"18654:9:50","valueSize":1},{"declaration":9274,"isOffset":false,"isSlot":false,"src":"18676:9:50","valueSize":1},{"declaration":9272,"isOffset":false,"isSlot":false,"src":"18361:5:50","valueSize":1},{"declaration":9272,"isOffset":false,"isSlot":false,"src":"18374:5:50","valueSize":1},{"declaration":9272,"isOffset":false,"isSlot":false,"src":"18665:5:50","valueSize":1},{"declaration":9277,"isOffset":false,"isSlot":false,"src":"18638:6:50","valueSize":1}],"id":9279,"nodeType":"InlineAssembly","src":"18242:472:50"}]},"documentation":{"id":9268,"nodeType":"StructuredDocumentation","src":"17976:93:50","text":" @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`."},"id":9281,"implemented":true,"kind":"function","modifiers":[],"name":"_isSenderApprovedOrOwner","nameLocation":"18083:24:50","nodeType":"FunctionDefinition","parameters":{"id":9275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9270,"mutability":"mutable","name":"approvedAddress","nameLocation":"18125:15:50","nodeType":"VariableDeclaration","scope":9281,"src":"18117:23:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9269,"name":"address","nodeType":"ElementaryTypeName","src":"18117:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9272,"mutability":"mutable","name":"owner","nameLocation":"18158:5:50","nodeType":"VariableDeclaration","scope":9281,"src":"18150:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9271,"name":"address","nodeType":"ElementaryTypeName","src":"18150:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9274,"mutability":"mutable","name":"msgSender","nameLocation":"18181:9:50","nodeType":"VariableDeclaration","scope":9281,"src":"18173:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9273,"name":"address","nodeType":"ElementaryTypeName","src":"18173:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18107:89:50"},"returnParameters":{"id":9278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9277,"mutability":"mutable","name":"result","nameLocation":"18224:6:50","nodeType":"VariableDeclaration","scope":9281,"src":"18219:11:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9276,"name":"bool","nodeType":"ElementaryTypeName","src":"18219:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18218:13:50"},"scope":10143,"src":"18074:646:50","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":9299,"nodeType":"Block","src":"18985:317:50","statements":[{"assignments":[9293],"declarations":[{"constant":false,"id":9293,"mutability":"mutable","name":"tokenApproval","nameLocation":"19020:13:50","nodeType":"VariableDeclaration","scope":9299,"src":"18995:38:50","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TokenApprovalRef_$8544_storage_ptr","typeString":"struct ERC721A.TokenApprovalRef"},"typeName":{"id":9292,"nodeType":"UserDefinedTypeName","pathNode":{"id":9291,"name":"TokenApprovalRef","nodeType":"IdentifierPath","referencedDeclaration":8544,"src":"18995:16:50"},"referencedDeclaration":8544,"src":"18995:16:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenApprovalRef_$8544_storage_ptr","typeString":"struct ERC721A.TokenApprovalRef"}},"visibility":"internal"}],"id":9297,"initialValue":{"baseExpression":{"id":9294,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"19036:15:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TokenApprovalRef_$8544_storage_$","typeString":"mapping(uint256 => struct ERC721A.TokenApprovalRef storage ref)"}},"id":9296,"indexExpression":{"id":9295,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9284,"src":"19052:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19036:24:50","typeDescriptions":{"typeIdentifier":"t_struct$_TokenApprovalRef_$8544_storage","typeString":"struct ERC721A.TokenApprovalRef storage ref"}},"nodeType":"VariableDeclarationStatement","src":"18995:65:50"},{"AST":{"nodeType":"YulBlock","src":"19173:123:50","statements":[{"nodeType":"YulAssignment","src":"19187:41:50","value":{"name":"tokenApproval.slot","nodeType":"YulIdentifier","src":"19210:18:50"},"variableNames":[{"name":"approvedAddressSlot","nodeType":"YulIdentifier","src":"19187:19:50"}]},{"nodeType":"YulAssignment","src":"19241:45:50","value":{"arguments":[{"name":"approvedAddressSlot","nodeType":"YulIdentifier","src":"19266:19:50"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"19260:5:50"},"nodeType":"YulFunctionCall","src":"19260:26:50"},"variableNames":[{"name":"approvedAddress","nodeType":"YulIdentifier","src":"19241:15:50"}]}]},"evmVersion":"london","externalReferences":[{"declaration":9289,"isOffset":false,"isSlot":false,"src":"19241:15:50","valueSize":1},{"declaration":9287,"isOffset":false,"isSlot":false,"src":"19187:19:50","valueSize":1},{"declaration":9287,"isOffset":false,"isSlot":false,"src":"19266:19:50","valueSize":1},{"declaration":9293,"isOffset":false,"isSlot":true,"src":"19210:18:50","suffix":"slot","valueSize":1}],"id":9298,"nodeType":"InlineAssembly","src":"19164:132:50"}]},"documentation":{"id":9282,"nodeType":"StructuredDocumentation","src":"18726:97:50","text":" @dev Returns the storage slot and value for the approved address of `tokenId`."},"id":9300,"implemented":true,"kind":"function","modifiers":[],"name":"_getApprovedSlotAndAddress","nameLocation":"18837:26:50","nodeType":"FunctionDefinition","parameters":{"id":9285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9284,"mutability":"mutable","name":"tokenId","nameLocation":"18872:7:50","nodeType":"VariableDeclaration","scope":9300,"src":"18864:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9283,"name":"uint256","nodeType":"ElementaryTypeName","src":"18864:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18863:17:50"},"returnParameters":{"id":9290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9287,"mutability":"mutable","name":"approvedAddressSlot","nameLocation":"18935:19:50","nodeType":"VariableDeclaration","scope":9300,"src":"18927:27:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9286,"name":"uint256","nodeType":"ElementaryTypeName","src":"18927:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9289,"mutability":"mutable","name":"approvedAddress","nameLocation":"18964:15:50","nodeType":"VariableDeclaration","scope":9300,"src":"18956:23:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9288,"name":"address","nodeType":"ElementaryTypeName","src":"18956:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18926:54:50"},"scope":10143,"src":"18828:474:50","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[10283],"body":{"id":9444,"nodeType":"Block","src":"20030:2637:50","statements":[{"assignments":[9312],"declarations":[{"constant":false,"id":9312,"mutability":"mutable","name":"prevOwnershipPacked","nameLocation":"20048:19:50","nodeType":"VariableDeclaration","scope":9444,"src":"20040:27:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9311,"name":"uint256","nodeType":"ElementaryTypeName","src":"20040:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9316,"initialValue":{"arguments":[{"id":9314,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"20089:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9313,"name":"_packedOwnershipOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"20070:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":9315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20070:27:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20040:57:50"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":9321,"name":"prevOwnershipPacked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"20128:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20120:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":9319,"name":"uint160","nodeType":"ElementaryTypeName","src":"20120:7:50","typeDescriptions":{}}},"id":9322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20120:28:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":9318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20112:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9317,"name":"address","nodeType":"ElementaryTypeName","src":"20112:7:50","typeDescriptions":{}}},"id":9323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20112:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9324,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"20153:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20112:45:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9329,"nodeType":"IfStatement","src":"20108:86:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9326,"name":"TransferFromIncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10170,"src":"20166:26:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20166:28:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9328,"nodeType":"RevertStatement","src":"20159:35:50"}},{"assignments":[9331,9333],"declarations":[{"constant":false,"id":9331,"mutability":"mutable","name":"approvedAddressSlot","nameLocation":"20214:19:50","nodeType":"VariableDeclaration","scope":9444,"src":"20206:27:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9330,"name":"uint256","nodeType":"ElementaryTypeName","src":"20206:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9333,"mutability":"mutable","name":"approvedAddress","nameLocation":"20243:15:50","nodeType":"VariableDeclaration","scope":9444,"src":"20235:23:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9332,"name":"address","nodeType":"ElementaryTypeName","src":"20235:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9337,"initialValue":{"arguments":[{"id":9335,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"20289:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9334,"name":"_getApprovedSlotAndAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9300,"src":"20262:26:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_address_$","typeString":"function (uint256) view returns (uint256,address)"}},"id":9336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20262:35:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"nodeType":"VariableDeclarationStatement","src":"20205:92:50"},{"condition":{"id":9344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20393:69:50","subExpression":{"arguments":[{"id":9339,"name":"approvedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"20419:15:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9340,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"20436:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9341,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"20442:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20442:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9338,"name":"_isSenderApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9281,"src":"20394:24:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address,address) pure returns (bool)"}},"id":9343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20394:68:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9355,"nodeType":"IfStatement","src":"20389:179:50","trueBody":{"condition":{"id":9350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20480:44:50","subExpression":{"arguments":[{"id":9346,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"20498:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9347,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"20504:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20504:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9345,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9241,"src":"20481:16:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":9349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20481:43:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9354,"nodeType":"IfStatement","src":"20476:92:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9351,"name":"TransferCallerNotOwnerNorApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10167,"src":"20533:33:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20533:35:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9353,"nodeType":"RevertStatement","src":"20526:42:50"}}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9356,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"20583:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20597:1:50","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":9358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20589:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9357,"name":"address","nodeType":"ElementaryTypeName","src":"20589:7:50","typeDescriptions":{}}},"id":9360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20589:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20583:16:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9365,"nodeType":"IfStatement","src":"20579:52:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9362,"name":"TransferToZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10176,"src":"20608:21:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20608:23:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9364,"nodeType":"RevertStatement","src":"20601:30:50"}},{"expression":{"arguments":[{"id":9367,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"20664:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9368,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"20670:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9369,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"20674:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":9370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20683:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":9366,"name":"_beforeTokenTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9515,"src":"20642:21:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20642:43:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9372,"nodeType":"ExpressionStatement","src":"20642:43:50"},{"AST":{"nodeType":"YulBlock","src":"20757:181:50","statements":[{"body":{"nodeType":"YulBlock","src":"20790:138:50","statements":[{"expression":{"arguments":[{"name":"approvedAddressSlot","nodeType":"YulIdentifier","src":"20891:19:50"},{"kind":"number","nodeType":"YulLiteral","src":"20912:1:50","type":"","value":"0"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"20884:6:50"},"nodeType":"YulFunctionCall","src":"20884:30:50"},"nodeType":"YulExpressionStatement","src":"20884:30:50"}]},"condition":{"name":"approvedAddress","nodeType":"YulIdentifier","src":"20774:15:50"},"nodeType":"YulIf","src":"20771:157:50"}]},"evmVersion":"london","externalReferences":[{"declaration":9333,"isOffset":false,"isSlot":false,"src":"20774:15:50","valueSize":1},{"declaration":9331,"isOffset":false,"isSlot":false,"src":"20891:19:50","valueSize":1}],"id":9373,"nodeType":"InlineAssembly","src":"20748:190:50"},{"id":9430,"nodeType":"UncheckedBlock","src":"21205:1361:50","statements":[{"expression":{"id":9377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"21298:26:50","subExpression":{"baseExpression":{"id":9374,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"21300:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9376,"indexExpression":{"id":9375,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"21319:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21300:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9378,"nodeType":"ExpressionStatement","src":"21298:26:50"},{"expression":{"id":9382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"21366:24:50","subExpression":{"baseExpression":{"id":9379,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"21368:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9381,"indexExpression":{"id":9380,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"21387:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21368:22:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9383,"nodeType":"ExpressionStatement","src":"21366:24:50"},{"expression":{"id":9397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9384,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"21654:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9386,"indexExpression":{"id":9385,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"21672:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21654:26:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9388,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"21719:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9389,"name":"_BITMASK_NEXT_INITIALIZED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8585,"src":"21739:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"id":9391,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"21782:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9392,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"21788:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9393,"name":"prevOwnershipPacked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"21792:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9390,"name":"_nextExtraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10122,"src":"21767:14:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":9394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21767:45:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21739:73:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9387,"name":"_packOwnershipData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9119,"src":"21683:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":9396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21683:143:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21654:172:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9398,"nodeType":"ExpressionStatement","src":"21654:172:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9399,"name":"prevOwnershipPacked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"21943:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9400,"name":"_BITMASK_NEXT_INITIALIZED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8585,"src":"21965:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21943:47:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21994:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21943:52:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9429,"nodeType":"IfStatement","src":"21939:617:50","trueBody":{"id":9428,"nodeType":"Block","src":"21997:559:50","statements":[{"assignments":[9405],"declarations":[{"constant":false,"id":9405,"mutability":"mutable","name":"nextTokenId","nameLocation":"22023:11:50","nodeType":"VariableDeclaration","scope":9428,"src":"22015:19:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9404,"name":"uint256","nodeType":"ElementaryTypeName","src":"22015:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9409,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9406,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"22037:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22047:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22037:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22015:33:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9410,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"22168:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9412,"indexExpression":{"id":9411,"name":"nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9405,"src":"22186:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22168:30:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22202:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22168:35:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9427,"nodeType":"IfStatement","src":"22164:378:50","trueBody":{"id":9426,"nodeType":"Block","src":"22205:337:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9415,"name":"nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9405,"src":"22289:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9416,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"22304:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22289:28:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9425,"nodeType":"IfStatement","src":"22285:239:50","trueBody":{"id":9424,"nodeType":"Block","src":"22319:205:50","statements":[{"expression":{"id":9422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9418,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"22449:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9420,"indexExpression":{"id":9419,"name":"nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9405,"src":"22467:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22449:30:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9421,"name":"prevOwnershipPacked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"22482:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22449:52:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9423,"nodeType":"ExpressionStatement","src":"22449:52:50"}]}}]}}]}}]},{"eventCall":{"arguments":[{"id":9432,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"22590:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9433,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"22596:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9434,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"22600:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9431,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10217,"src":"22581:8:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22581:27:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9436,"nodeType":"EmitStatement","src":"22576:32:50"},{"expression":{"arguments":[{"id":9438,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"22639:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9439,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"22645:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9440,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"22649:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":9441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22658:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":9437,"name":"_afterTokenTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9528,"src":"22618:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22618:42:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9443,"nodeType":"ExpressionStatement","src":"22618:42:50"}]},"documentation":{"id":9301,"nodeType":"StructuredDocumentation","src":"19495:403:50","text":" @dev Transfers `tokenId` from `from` to `to`.\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\n by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":9445,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"19912:12:50","nodeType":"FunctionDefinition","overrides":{"id":9309,"nodeType":"OverrideSpecifier","overrides":[],"src":"20021:8:50"},"parameters":{"id":9308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9303,"mutability":"mutable","name":"from","nameLocation":"19942:4:50","nodeType":"VariableDeclaration","scope":9445,"src":"19934:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9302,"name":"address","nodeType":"ElementaryTypeName","src":"19934:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9305,"mutability":"mutable","name":"to","nameLocation":"19964:2:50","nodeType":"VariableDeclaration","scope":9445,"src":"19956:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9304,"name":"address","nodeType":"ElementaryTypeName","src":"19956:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9307,"mutability":"mutable","name":"tokenId","nameLocation":"19984:7:50","nodeType":"VariableDeclaration","scope":9445,"src":"19976:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9306,"name":"uint256","nodeType":"ElementaryTypeName","src":"19976:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19924:73:50"},"returnParameters":{"id":9310,"nodeType":"ParameterList","parameters":[],"src":"20030:0:50"},"scope":10143,"src":"19903:2764:50","stateMutability":"payable","virtual":true,"visibility":"public"},{"baseFunctions":[10273],"body":{"id":9463,"nodeType":"Block","src":"22889:56:50","statements":[{"expression":{"arguments":[{"id":9457,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9448,"src":"22916:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9458,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9450,"src":"22922:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9459,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9452,"src":"22926:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":9460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22935:2:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":9456,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[9464,9502],"referencedDeclaration":9502,"src":"22899:16:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":9461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22899:39:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9462,"nodeType":"ExpressionStatement","src":"22899:39:50"}]},"documentation":{"id":9446,"nodeType":"StructuredDocumentation","src":"22673:80:50","text":" @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`."},"functionSelector":"42842e0e","id":9464,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"22767:16:50","nodeType":"FunctionDefinition","overrides":{"id":9454,"nodeType":"OverrideSpecifier","overrides":[],"src":"22880:8:50"},"parameters":{"id":9453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9448,"mutability":"mutable","name":"from","nameLocation":"22801:4:50","nodeType":"VariableDeclaration","scope":9464,"src":"22793:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9447,"name":"address","nodeType":"ElementaryTypeName","src":"22793:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9450,"mutability":"mutable","name":"to","nameLocation":"22823:2:50","nodeType":"VariableDeclaration","scope":9464,"src":"22815:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9449,"name":"address","nodeType":"ElementaryTypeName","src":"22815:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9452,"mutability":"mutable","name":"tokenId","nameLocation":"22843:7:50","nodeType":"VariableDeclaration","scope":9464,"src":"22835:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9451,"name":"uint256","nodeType":"ElementaryTypeName","src":"22835:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22783:73:50"},"returnParameters":{"id":9455,"nodeType":"ParameterList","parameters":[],"src":"22889:0:50"},"scope":10143,"src":"22758:187:50","stateMutability":"payable","virtual":true,"visibility":"public"},{"baseFunctions":[10263],"body":{"id":9501,"nodeType":"Block","src":"23685:237:50","statements":[{"expression":{"arguments":[{"id":9478,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9467,"src":"23708:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9479,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9469,"src":"23714:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9480,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9471,"src":"23718:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9477,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9445,"src":"23695:12:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23695:31:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9482,"nodeType":"ExpressionStatement","src":"23695:31:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9483,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9469,"src":"23740:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"23740:7:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"23740:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23758:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23740:19:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9500,"nodeType":"IfStatement","src":"23736:180:50","trueBody":{"condition":{"id":9494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"23777:57:50","subExpression":{"arguments":[{"id":9489,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9467,"src":"23809:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9490,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9469,"src":"23815:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9491,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9471,"src":"23819:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9492,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9473,"src":"23828:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9488,"name":"_checkContractOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9583,"src":"23778:30:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":9493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23778:56:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9499,"nodeType":"IfStatement","src":"23773:143:50","trueBody":{"id":9498,"nodeType":"Block","src":"23836:80:50","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9495,"name":"TransferToNonERC721ReceiverImplementer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10173,"src":"23861:38:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23861:40:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9497,"nodeType":"RevertStatement","src":"23854:47:50"}]}}}]},"documentation":{"id":9465,"nodeType":"StructuredDocumentation","src":"22951:570:50","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\n by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement\n {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":9502,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"23535:16:50","nodeType":"FunctionDefinition","overrides":{"id":9475,"nodeType":"OverrideSpecifier","overrides":[],"src":"23676:8:50"},"parameters":{"id":9474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9467,"mutability":"mutable","name":"from","nameLocation":"23569:4:50","nodeType":"VariableDeclaration","scope":9502,"src":"23561:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9466,"name":"address","nodeType":"ElementaryTypeName","src":"23561:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9469,"mutability":"mutable","name":"to","nameLocation":"23591:2:50","nodeType":"VariableDeclaration","scope":9502,"src":"23583:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9468,"name":"address","nodeType":"ElementaryTypeName","src":"23583:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9471,"mutability":"mutable","name":"tokenId","nameLocation":"23611:7:50","nodeType":"VariableDeclaration","scope":9502,"src":"23603:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9470,"name":"uint256","nodeType":"ElementaryTypeName","src":"23603:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9473,"mutability":"mutable","name":"_data","nameLocation":"23641:5:50","nodeType":"VariableDeclaration","scope":9502,"src":"23628:18:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9472,"name":"bytes","nodeType":"ElementaryTypeName","src":"23628:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"23551:101:50"},"returnParameters":{"id":9476,"nodeType":"ParameterList","parameters":[],"src":"23685:0:50"},"scope":10143,"src":"23526:396:50","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":9514,"nodeType":"Block","src":"24718:2:50","statements":[]},"documentation":{"id":9503,"nodeType":"StructuredDocumentation","src":"23928:633:50","text":" @dev Hook that is called before a set of serially-ordered token IDs\n are about to be transferred. This includes minting.\n And also called before burning one token.\n `startTokenId` - the first token ID to be transferred.\n `quantity` - the amount to be transferred.\n Calling conditions:\n - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, `tokenId` will be burned by `from`.\n - `from` and `to` are never both zero."},"id":9515,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfers","nameLocation":"24575:21:50","nodeType":"FunctionDefinition","parameters":{"id":9512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9505,"mutability":"mutable","name":"from","nameLocation":"24614:4:50","nodeType":"VariableDeclaration","scope":9515,"src":"24606:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9504,"name":"address","nodeType":"ElementaryTypeName","src":"24606:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9507,"mutability":"mutable","name":"to","nameLocation":"24636:2:50","nodeType":"VariableDeclaration","scope":9515,"src":"24628:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9506,"name":"address","nodeType":"ElementaryTypeName","src":"24628:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9509,"mutability":"mutable","name":"startTokenId","nameLocation":"24656:12:50","nodeType":"VariableDeclaration","scope":9515,"src":"24648:20:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9508,"name":"uint256","nodeType":"ElementaryTypeName","src":"24648:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9511,"mutability":"mutable","name":"quantity","nameLocation":"24686:8:50","nodeType":"VariableDeclaration","scope":9515,"src":"24678:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9510,"name":"uint256","nodeType":"ElementaryTypeName","src":"24678:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24596:104:50"},"returnParameters":{"id":9513,"nodeType":"ParameterList","parameters":[],"src":"24718:0:50"},"scope":10143,"src":"24566:154:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9527,"nodeType":"Block","src":"25518:2:50","statements":[]},"documentation":{"id":9516,"nodeType":"StructuredDocumentation","src":"24726:636:50","text":" @dev Hook that is called after a set of serially-ordered token IDs\n have been transferred. This includes minting.\n And also called after one token has been burned.\n `startTokenId` - the first token ID to be transferred.\n `quantity` - the amount to be transferred.\n Calling conditions:\n - When `from` and `to` are both non-zero, `from`'s `tokenId` has been\n transferred to `to`.\n - When `from` is zero, `tokenId` has been minted for `to`.\n - When `to` is zero, `tokenId` has been burned by `from`.\n - `from` and `to` are never both zero."},"id":9528,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfers","nameLocation":"25376:20:50","nodeType":"FunctionDefinition","parameters":{"id":9525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9518,"mutability":"mutable","name":"from","nameLocation":"25414:4:50","nodeType":"VariableDeclaration","scope":9528,"src":"25406:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9517,"name":"address","nodeType":"ElementaryTypeName","src":"25406:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9520,"mutability":"mutable","name":"to","nameLocation":"25436:2:50","nodeType":"VariableDeclaration","scope":9528,"src":"25428:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9519,"name":"address","nodeType":"ElementaryTypeName","src":"25428:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9522,"mutability":"mutable","name":"startTokenId","nameLocation":"25456:12:50","nodeType":"VariableDeclaration","scope":9528,"src":"25448:20:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9521,"name":"uint256","nodeType":"ElementaryTypeName","src":"25448:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9524,"mutability":"mutable","name":"quantity","nameLocation":"25486:8:50","nodeType":"VariableDeclaration","scope":9528,"src":"25478:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9523,"name":"uint256","nodeType":"ElementaryTypeName","src":"25478:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25396:104:50"},"returnParameters":{"id":9526,"nodeType":"ParameterList","parameters":[],"src":"25518:0:50"},"scope":10143,"src":"25367:153:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9582,"nodeType":"Block","src":"26112:533:50","statements":[{"clauses":[{"block":{"id":9563,"nodeType":"Block","src":"26261:96:50","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":9561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9555,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9553,"src":"26282:6:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"arguments":[{"id":9557,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9533,"src":"26317:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9556,"name":"ERC721A__IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8538,"src":"26292:24:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721A__IERC721Receiver_$8538_$","typeString":"type(contract ERC721A__IERC721Receiver)"}},"id":9558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26292:28:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC721A__IERC721Receiver_$8538","typeString":"contract ERC721A__IERC721Receiver"}},"id":9559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":8537,"src":"26292:45:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":9560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"26292:54:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26282:64:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9541,"id":9562,"nodeType":"Return","src":"26275:71:50"}]},"errorName":"","id":9564,"nodeType":"TryCatchClause","parameters":{"id":9554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9553,"mutability":"mutable","name":"retval","nameLocation":"26244:6:50","nodeType":"VariableDeclaration","scope":9564,"src":"26237:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9552,"name":"bytes4","nodeType":"ElementaryTypeName","src":"26237:6:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"26223:37:50"},"src":"26215:142:50"},{"block":{"id":9579,"nodeType":"Block","src":"26386:253:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9568,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9566,"src":"26404:6:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"26404:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26421:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26404:18:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9577,"nodeType":"Block","src":"26510:119:50","statements":[{"AST":{"nodeType":"YulBlock","src":"26537:78:50","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26570:2:50","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"26574:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26566:3:50"},"nodeType":"YulFunctionCall","src":"26566:15:50"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"26589:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26583:5:50"},"nodeType":"YulFunctionCall","src":"26583:13:50"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26559:6:50"},"nodeType":"YulFunctionCall","src":"26559:38:50"},"nodeType":"YulExpressionStatement","src":"26559:38:50"}]},"evmVersion":"london","externalReferences":[{"declaration":9566,"isOffset":false,"isSlot":false,"src":"26574:6:50","valueSize":1},{"declaration":9566,"isOffset":false,"isSlot":false,"src":"26589:6:50","valueSize":1}],"id":9576,"nodeType":"InlineAssembly","src":"26528:87:50"}]},"id":9578,"nodeType":"IfStatement","src":"26400:229:50","trueBody":{"id":9575,"nodeType":"Block","src":"26424:80:50","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9572,"name":"TransferToNonERC721ReceiverImplementer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10173,"src":"26449:38:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26449:40:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9574,"nodeType":"RevertStatement","src":"26442:47:50"}]}}]},"errorName":"","id":9580,"nodeType":"TryCatchClause","parameters":{"id":9567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9566,"mutability":"mutable","name":"reason","nameLocation":"26378:6:50","nodeType":"VariableDeclaration","scope":9580,"src":"26365:19:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9565,"name":"bytes","nodeType":"ElementaryTypeName","src":"26365:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26364:21:50"},"src":"26358:281:50"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9546,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"26172:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26172:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9548,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9531,"src":"26193:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9549,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9535,"src":"26199:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9550,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9537,"src":"26208:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":9543,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9533,"src":"26151:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9542,"name":"ERC721A__IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8538,"src":"26126:24:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721A__IERC721Receiver_$8538_$","typeString":"type(contract ERC721A__IERC721Receiver)"}},"id":9544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26126:28:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC721A__IERC721Receiver_$8538","typeString":"contract ERC721A__IERC721Receiver"}},"id":9545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":8537,"src":"26126:45:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":9551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26126:88:50","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":9581,"nodeType":"TryStatement","src":"26122:517:50"}]},"documentation":{"id":9529,"nodeType":"StructuredDocumentation","src":"25526:417:50","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract.\n `from` - Previous owner of the given token ID.\n `to` - Target address that will receive the token.\n `tokenId` - Token ID to be transferred.\n `_data` - Optional data to send along with the call.\n Returns whether the call correctly returned the expected magic value."},"id":9583,"implemented":true,"kind":"function","modifiers":[],"name":"_checkContractOnERC721Received","nameLocation":"25957:30:50","nodeType":"FunctionDefinition","parameters":{"id":9538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9531,"mutability":"mutable","name":"from","nameLocation":"26005:4:50","nodeType":"VariableDeclaration","scope":9583,"src":"25997:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9530,"name":"address","nodeType":"ElementaryTypeName","src":"25997:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9533,"mutability":"mutable","name":"to","nameLocation":"26027:2:50","nodeType":"VariableDeclaration","scope":9583,"src":"26019:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9532,"name":"address","nodeType":"ElementaryTypeName","src":"26019:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9535,"mutability":"mutable","name":"tokenId","nameLocation":"26047:7:50","nodeType":"VariableDeclaration","scope":9583,"src":"26039:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9534,"name":"uint256","nodeType":"ElementaryTypeName","src":"26039:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9537,"mutability":"mutable","name":"_data","nameLocation":"26077:5:50","nodeType":"VariableDeclaration","scope":9583,"src":"26064:18:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9536,"name":"bytes","nodeType":"ElementaryTypeName","src":"26064:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25987:101:50"},"returnParameters":{"id":9541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9583,"src":"26106:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9539,"name":"bool","nodeType":"ElementaryTypeName","src":"26106:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"26105:6:50"},"scope":10143,"src":"25948:697:50","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9678,"nodeType":"Block","src":"27153:2840:50","statements":[{"assignments":[9592],"declarations":[{"constant":false,"id":9592,"mutability":"mutable","name":"startTokenId","nameLocation":"27171:12:50","nodeType":"VariableDeclaration","scope":9678,"src":"27163:20:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9591,"name":"uint256","nodeType":"ElementaryTypeName","src":"27163:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9594,"initialValue":{"id":9593,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"27186:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27163:36:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9595,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"27213:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27225:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27213:13:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9601,"nodeType":"IfStatement","src":"27209:44:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9598,"name":"MintZeroQuantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10161,"src":"27235:16:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27235:18:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9600,"nodeType":"RevertStatement","src":"27228:25:50"}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":9605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27294:1:50","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":9604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27286:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9603,"name":"address","nodeType":"ElementaryTypeName","src":"27286:7:50","typeDescriptions":{}}},"id":9606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27286:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9586,"src":"27298:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9608,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9592,"src":"27302:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9609,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"27316:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9602,"name":"_beforeTokenTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9515,"src":"27264:21:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"27264:61:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9611,"nodeType":"ExpressionStatement","src":"27264:61:50"},{"id":9667,"nodeType":"UncheckedBlock","src":"27508:2409:50","statements":[{"expression":{"id":9624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9612,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"27728:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9614,"indexExpression":{"id":9613,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9586,"src":"27747:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27728:22:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9615,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"27754:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27767:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":9617,"name":"_BITPOS_NUMBER_MINTED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"27772:21:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27767:26:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9619,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27766:28:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"hexValue":"31","id":9620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27797:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27766:32:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9622,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27765:34:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27754:45:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27728:71:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9625,"nodeType":"ExpressionStatement","src":"27728:71:50"},{"expression":{"id":9644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9626,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"28035:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9628,"indexExpression":{"id":9627,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9592,"src":"28053:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"28035:31:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9630,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9586,"src":"28105:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9632,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"28146:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9631,"name":"_nextInitializedFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9129,"src":"28125:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":9633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28125:30:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":9637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28181:1:50","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":9636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28173:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9635,"name":"address","nodeType":"ElementaryTypeName","src":"28173:7:50","typeDescriptions":{}}},"id":9638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28173:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9639,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9586,"src":"28185:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":9640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28189:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9634,"name":"_nextExtraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10122,"src":"28158:14:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":9641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28158:33:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28125:66:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9629,"name":"_packOwnershipData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9119,"src":"28069:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":9643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"28069:136:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28035:170:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9645,"nodeType":"ExpressionStatement","src":"28035:170:50"},{"assignments":[9647],"declarations":[{"constant":false,"id":9647,"mutability":"mutable","name":"toMasked","nameLocation":"28228:8:50","nodeType":"VariableDeclaration","scope":9667,"src":"28220:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9646,"name":"uint256","nodeType":"ElementaryTypeName","src":"28220:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9648,"nodeType":"VariableDeclarationStatement","src":"28220:16:50"},{"assignments":[9650],"declarations":[{"constant":false,"id":9650,"mutability":"mutable","name":"end","nameLocation":"28258:3:50","nodeType":"VariableDeclaration","scope":9667,"src":"28250:11:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9649,"name":"uint256","nodeType":"ElementaryTypeName","src":"28250:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9654,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9651,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9592,"src":"28264:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9652,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"28279:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28264:23:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28250:37:50"},{"AST":{"nodeType":"YulBlock","src":"28657:1157:50","statements":[{"nodeType":"YulAssignment","src":"28772:37:50","value":{"arguments":[{"name":"to","nodeType":"YulIdentifier","src":"28788:2:50"},{"name":"_BITMASK_ADDRESS","nodeType":"YulIdentifier","src":"28792:16:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"28784:3:50"},"nodeType":"YulFunctionCall","src":"28784:25:50"},"variableNames":[{"name":"toMasked","nodeType":"YulIdentifier","src":"28772:8:50"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28898:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28958:1:50","type":"","value":"0"},{"name":"_TRANSFER_EVENT_SIGNATURE","nodeType":"YulIdentifier","src":"29016:25:50"},{"kind":"number","nodeType":"YulLiteral","src":"29077:1:50","type":"","value":"0"},{"name":"toMasked","nodeType":"YulIdentifier","src":"29117:8:50"},{"name":"startTokenId","nodeType":"YulIdentifier","src":"29156:12:50"}],"functionName":{"name":"log4","nodeType":"YulIdentifier","src":"28872:4:50"},"nodeType":"YulFunctionCall","src":"28872:328:50"},"nodeType":"YulExpressionStatement","src":"28872:328:50"},{"body":{"nodeType":"YulBlock","src":"29633:167:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"29728:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"29731:1:50","type":"","value":"0"},{"name":"_TRANSFER_EVENT_SIGNATURE","nodeType":"YulIdentifier","src":"29734:25:50"},{"kind":"number","nodeType":"YulLiteral","src":"29761:1:50","type":"","value":"0"},{"name":"toMasked","nodeType":"YulIdentifier","src":"29764:8:50"},{"name":"tokenId","nodeType":"YulIdentifier","src":"29774:7:50"}],"functionName":{"name":"log4","nodeType":"YulIdentifier","src":"29723:4:50"},"nodeType":"YulFunctionCall","src":"29723:59:50"},"nodeType":"YulExpressionStatement","src":"29723:59:50"}]},"condition":{"arguments":[{"arguments":[{"name":"tokenId","nodeType":"YulIdentifier","src":"29551:7:50"},{"name":"end","nodeType":"YulIdentifier","src":"29560:3:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"29548:2:50"},"nodeType":"YulFunctionCall","src":"29548:16:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"29541:6:50"},"nodeType":"YulFunctionCall","src":"29541:24:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"29566:66:50","statements":[{"nodeType":"YulAssignment","src":"29588:26:50","value":{"arguments":[{"name":"tokenId","nodeType":"YulIdentifier","src":"29603:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"29612:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29599:3:50"},"nodeType":"YulFunctionCall","src":"29599:15:50"},"variableNames":[{"name":"tokenId","nodeType":"YulIdentifier","src":"29588:7:50"}]}]},"pre":{"nodeType":"YulBlock","src":"29465:75:50","statements":[{"nodeType":"YulVariableDeclaration","src":"29487:35:50","value":{"arguments":[{"name":"startTokenId","nodeType":"YulIdentifier","src":"29506:12:50"},{"kind":"number","nodeType":"YulLiteral","src":"29520:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29502:3:50"},"nodeType":"YulFunctionCall","src":"29502:20:50"},"variables":[{"name":"tokenId","nodeType":"YulTypedName","src":"29491:7:50","type":""}]}]},"src":"29461:339:50"}]},"evmVersion":"london","externalReferences":[{"declaration":8604,"isOffset":false,"isSlot":false,"src":"28792:16:50","valueSize":1},{"declaration":8610,"isOffset":false,"isSlot":false,"src":"29016:25:50","valueSize":1},{"declaration":8610,"isOffset":false,"isSlot":false,"src":"29734:25:50","valueSize":1},{"declaration":9650,"isOffset":false,"isSlot":false,"src":"29560:3:50","valueSize":1},{"declaration":9592,"isOffset":false,"isSlot":false,"src":"29156:12:50","valueSize":1},{"declaration":9592,"isOffset":false,"isSlot":false,"src":"29506:12:50","valueSize":1},{"declaration":9586,"isOffset":false,"isSlot":false,"src":"28788:2:50","valueSize":1},{"declaration":9647,"isOffset":false,"isSlot":false,"src":"28772:8:50","valueSize":1},{"declaration":9647,"isOffset":false,"isSlot":false,"src":"29117:8:50","valueSize":1},{"declaration":9647,"isOffset":false,"isSlot":false,"src":"29764:8:50","valueSize":1}],"id":9655,"nodeType":"InlineAssembly","src":"28648:1166:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9656,"name":"toMasked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9647,"src":"29831:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29843:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29831:13:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9662,"nodeType":"IfStatement","src":"29827:45:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9659,"name":"MintToZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"29853:17:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29853:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9661,"nodeType":"RevertStatement","src":"29846:26:50"}},{"expression":{"id":9665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9663,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"29887:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9664,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9650,"src":"29903:3:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29887:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9666,"nodeType":"ExpressionStatement","src":"29887:19:50"}]},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":9671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29955:1:50","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":9670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29947:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9669,"name":"address","nodeType":"ElementaryTypeName","src":"29947:7:50","typeDescriptions":{}}},"id":9672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29947:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9673,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9586,"src":"29959:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9674,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9592,"src":"29963:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9675,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"29977:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9668,"name":"_afterTokenTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9528,"src":"29926:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"29926:60:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9677,"nodeType":"ExpressionStatement","src":"29926:60:50"}]},"documentation":{"id":9584,"nodeType":"StructuredDocumentation","src":"26836:250:50","text":" @dev Mints `quantity` tokens and transfers them to `to`.\n Requirements:\n - `to` cannot be the zero address.\n - `quantity` must be greater than 0.\n Emits a {Transfer} event for each mint."},"id":9679,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"27100:5:50","nodeType":"FunctionDefinition","parameters":{"id":9589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9586,"mutability":"mutable","name":"to","nameLocation":"27114:2:50","nodeType":"VariableDeclaration","scope":9679,"src":"27106:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9585,"name":"address","nodeType":"ElementaryTypeName","src":"27106:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9588,"mutability":"mutable","name":"quantity","nameLocation":"27126:8:50","nodeType":"VariableDeclaration","scope":9679,"src":"27118:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9587,"name":"uint256","nodeType":"ElementaryTypeName","src":"27118:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27105:30:50"},"returnParameters":{"id":9590,"nodeType":"ParameterList","parameters":[],"src":"27153:0:50"},"scope":10143,"src":"27091:2902:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9790,"nodeType":"Block","src":"30902:1374:50","statements":[{"assignments":[9688],"declarations":[{"constant":false,"id":9688,"mutability":"mutable","name":"startTokenId","nameLocation":"30920:12:50","nodeType":"VariableDeclaration","scope":9790,"src":"30912:20:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9687,"name":"uint256","nodeType":"ElementaryTypeName","src":"30912:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9690,"initialValue":{"id":9689,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"30935:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30912:36:50"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9691,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9682,"src":"30962:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30976:1:50","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":9693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30968:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9692,"name":"address","nodeType":"ElementaryTypeName","src":"30968:7:50","typeDescriptions":{}}},"id":9695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30968:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"30962:16:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9700,"nodeType":"IfStatement","src":"30958:48:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9697,"name":"MintToZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"30987:17:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"30987:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9699,"nodeType":"RevertStatement","src":"30980:26:50"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9701,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"31020:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31032:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31020:13:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9707,"nodeType":"IfStatement","src":"31016:44:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9704,"name":"MintZeroQuantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10161,"src":"31042:16:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31042:18:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9706,"nodeType":"RevertStatement","src":"31035:25:50"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9708,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"31074:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9709,"name":"_MAX_MINT_ERC2309_QUANTITY_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8607,"src":"31085:32:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31074:43:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9714,"nodeType":"IfStatement","src":"31070:89:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9711,"name":"MintERC2309QuantityExceedsLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10182,"src":"31126:31:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31126:33:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9713,"nodeType":"RevertStatement","src":"31119:40:50"}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":9718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31200:1:50","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":9717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31192:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9716,"name":"address","nodeType":"ElementaryTypeName","src":"31192:7:50","typeDescriptions":{}}},"id":9719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31192:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9720,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9682,"src":"31204:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9721,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9688,"src":"31208:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9722,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"31222:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9715,"name":"_beforeTokenTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9515,"src":"31170:21:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31170:61:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9724,"nodeType":"ExpressionStatement","src":"31170:61:50"},{"id":9779,"nodeType":"UncheckedBlock","src":"31340:860:50","statements":[{"expression":{"id":9737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9725,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"31560:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9727,"indexExpression":{"id":9726,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9682,"src":"31579:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"31560:22:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9728,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"31586:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31599:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":9730,"name":"_BITPOS_NUMBER_MINTED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"31604:21:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31599:26:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9732,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"31598:28:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"hexValue":"31","id":9733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31629:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"31598:32:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"31597:34:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31586:45:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31560:71:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9738,"nodeType":"ExpressionStatement","src":"31560:71:50"},{"expression":{"id":9757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9739,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"31867:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9741,"indexExpression":{"id":9740,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9688,"src":"31885:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"31867:31:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9743,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9682,"src":"31937:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9745,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"31978:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9744,"name":"_nextInitializedFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9129,"src":"31957:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":9746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31957:30:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":9750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32013:1:50","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":9749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32005:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9748,"name":"address","nodeType":"ElementaryTypeName","src":"32005:7:50","typeDescriptions":{}}},"id":9751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32005:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9752,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9682,"src":"32017:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":9753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32021:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9747,"name":"_nextExtraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10122,"src":"31990:14:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":9754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31990:33:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31957:66:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9742,"name":"_packOwnershipData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9119,"src":"31901:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":9756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"31901:136:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31867:170:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9758,"nodeType":"ExpressionStatement","src":"31867:170:50"},{"eventCall":{"arguments":[{"id":9760,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9688,"src":"32077:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9761,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9688,"src":"32091:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9762,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"32106:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32091:23:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32117:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32091:27:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":9768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32128:1:50","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":9767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32120:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9766,"name":"address","nodeType":"ElementaryTypeName","src":"32120:7:50","typeDescriptions":{}}},"id":9769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32120:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9770,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9682,"src":"32132:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9759,"name":"ConsecutiveTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10348,"src":"32057:19:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (uint256,uint256,address,address)"}},"id":9771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32057:78:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9772,"nodeType":"EmitStatement","src":"32052:83:50"},{"expression":{"id":9777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9773,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"32150:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9774,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9688,"src":"32166:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9775,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"32181:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32166:23:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32150:39:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9778,"nodeType":"ExpressionStatement","src":"32150:39:50"}]},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":9783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32238:1:50","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":9782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32230:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9781,"name":"address","nodeType":"ElementaryTypeName","src":"32230:7:50","typeDescriptions":{}}},"id":9784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32230:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9785,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9682,"src":"32242:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9786,"name":"startTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9688,"src":"32246:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9787,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"32260:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9780,"name":"_afterTokenTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9528,"src":"32209:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32209:60:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9789,"nodeType":"ExpressionStatement","src":"32209:60:50"}]},"documentation":{"id":9680,"nodeType":"StructuredDocumentation","src":"29999:829:50","text":" @dev Mints `quantity` tokens and transfers them to `to`.\n This function is intended for efficient minting only during contract creation.\n It emits only one {ConsecutiveTransfer} as defined in\n [ERC2309](https://eips.ethereum.org/EIPS/eip-2309),\n instead of a sequence of {Transfer} event(s).\n Calling this function outside of contract creation WILL make your contract\n non-compliant with the ERC721 standard.\n For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309\n {ConsecutiveTransfer} event is only permissible during contract creation.\n Requirements:\n - `to` cannot be the zero address.\n - `quantity` must be greater than 0.\n Emits a {ConsecutiveTransfer} event."},"id":9791,"implemented":true,"kind":"function","modifiers":[],"name":"_mintERC2309","nameLocation":"30842:12:50","nodeType":"FunctionDefinition","parameters":{"id":9685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9682,"mutability":"mutable","name":"to","nameLocation":"30863:2:50","nodeType":"VariableDeclaration","scope":9791,"src":"30855:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9681,"name":"address","nodeType":"ElementaryTypeName","src":"30855:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9684,"mutability":"mutable","name":"quantity","nameLocation":"30875:8:50","nodeType":"VariableDeclaration","scope":9791,"src":"30867:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9683,"name":"uint256","nodeType":"ElementaryTypeName","src":"30867:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30854:30:50"},"returnParameters":{"id":9686,"nodeType":"ParameterList","parameters":[],"src":"30902:0:50"},"scope":10143,"src":"30833:1443:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9852,"nodeType":"Block","src":"32791:553:50","statements":[{"expression":{"arguments":[{"id":9802,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"32807:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9803,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"32811:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9801,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9679,"src":"32801:5:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"32801:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9805,"nodeType":"ExpressionStatement","src":"32801:19:50"},{"id":9851,"nodeType":"UncheckedBlock","src":"32831:507:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9806,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"32859:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"32859:7:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"32859:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32877:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32859:19:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9850,"nodeType":"IfStatement","src":"32855:473:50","trueBody":{"id":9849,"nodeType":"Block","src":"32880:448:50","statements":[{"assignments":[9812],"declarations":[{"constant":false,"id":9812,"mutability":"mutable","name":"end","nameLocation":"32906:3:50","nodeType":"VariableDeclaration","scope":9849,"src":"32898:11:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9811,"name":"uint256","nodeType":"ElementaryTypeName","src":"32898:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9814,"initialValue":{"id":9813,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"32912:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32898:27:50"},{"assignments":[9816],"declarations":[{"constant":false,"id":9816,"mutability":"mutable","name":"index","nameLocation":"32951:5:50","nodeType":"VariableDeclaration","scope":9849,"src":"32943:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9815,"name":"uint256","nodeType":"ElementaryTypeName","src":"32943:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9820,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9817,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"32959:3:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9818,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"32965:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32959:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32943:30:50"},{"body":{"id":9837,"nodeType":"Block","src":"32994:205:50","statements":[{"condition":{"id":9831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"33020:63:50","subExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":9824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33060:1:50","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":9823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33052:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9822,"name":"address","nodeType":"ElementaryTypeName","src":"33052:7:50","typeDescriptions":{}}},"id":9825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33052:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9826,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"33064:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"33068:7:50","subExpression":{"id":9827,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"33068:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9829,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"33077:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9821,"name":"_checkContractOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9583,"src":"33021:30:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":9830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33021:62:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9836,"nodeType":"IfStatement","src":"33016:165:50","trueBody":{"id":9835,"nodeType":"Block","src":"33085:96:50","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9832,"name":"TransferToNonERC721ReceiverImplementer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10173,"src":"33118:38:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33118:40:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9834,"nodeType":"RevertStatement","src":"33111:47:50"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9838,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"33207:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9839,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"33215:3:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33207:11:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9841,"nodeType":"DoWhileStatement","src":"32991:229:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9842,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"33283:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9843,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"33300:3:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33283:20:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9848,"nodeType":"IfStatement","src":"33279:34:50","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9845,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"33305:6:50","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":9846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33305:8:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9847,"nodeType":"ExpressionStatement","src":"33305:8:50"}}]}}]}]},"documentation":{"id":9792,"nodeType":"StructuredDocumentation","src":"32282:388:50","text":" @dev Safely mints `quantity` tokens and transfers them to `to`.\n Requirements:\n - If `to` refers to a smart contract, it must implement\n {IERC721Receiver-onERC721Received}, which is called for each safe transfer.\n - `quantity` must be greater than 0.\n See {_mint}.\n Emits a {Transfer} event for each mint."},"id":9853,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"32684:9:50","nodeType":"FunctionDefinition","parameters":{"id":9799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9794,"mutability":"mutable","name":"to","nameLocation":"32711:2:50","nodeType":"VariableDeclaration","scope":9853,"src":"32703:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9793,"name":"address","nodeType":"ElementaryTypeName","src":"32703:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9796,"mutability":"mutable","name":"quantity","nameLocation":"32731:8:50","nodeType":"VariableDeclaration","scope":9853,"src":"32723:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9795,"name":"uint256","nodeType":"ElementaryTypeName","src":"32723:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9798,"mutability":"mutable","name":"_data","nameLocation":"32762:5:50","nodeType":"VariableDeclaration","scope":9853,"src":"32749:18:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9797,"name":"bytes","nodeType":"ElementaryTypeName","src":"32749:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"32693:80:50"},"returnParameters":{"id":9800,"nodeType":"ParameterList","parameters":[],"src":"32791:0:50"},"scope":10143,"src":"32675:669:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9867,"nodeType":"Block","src":"33489:44:50","statements":[{"expression":{"arguments":[{"id":9862,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9856,"src":"33509:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9863,"name":"quantity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9858,"src":"33513:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":9864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33523:2:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":9861,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[9853,9868],"referencedDeclaration":9853,"src":"33499:9:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":9865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33499:27:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9866,"nodeType":"ExpressionStatement","src":"33499:27:50"}]},"documentation":{"id":9854,"nodeType":"StructuredDocumentation","src":"33350:68:50","text":" @dev Equivalent to `_safeMint(to, quantity, '')`."},"id":9868,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"33432:9:50","nodeType":"FunctionDefinition","parameters":{"id":9859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9856,"mutability":"mutable","name":"to","nameLocation":"33450:2:50","nodeType":"VariableDeclaration","scope":9868,"src":"33442:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9855,"name":"address","nodeType":"ElementaryTypeName","src":"33442:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9858,"mutability":"mutable","name":"quantity","nameLocation":"33462:8:50","nodeType":"VariableDeclaration","scope":9868,"src":"33454:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9857,"name":"uint256","nodeType":"ElementaryTypeName","src":"33454:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33441:30:50"},"returnParameters":{"id":9860,"nodeType":"ParameterList","parameters":[],"src":"33489:0:50"},"scope":10143,"src":"33423:110:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9879,"nodeType":"Block","src":"33840:38:50","statements":[{"expression":{"arguments":[{"id":9875,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9871,"src":"33856:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":9876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33865:5:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9874,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[9880,10032],"referencedDeclaration":10032,"src":"33850:5:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool)"}},"id":9877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"33850:21:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9878,"nodeType":"ExpressionStatement","src":"33850:21:50"}]},"documentation":{"id":9869,"nodeType":"StructuredDocumentation","src":"33724:62:50","text":" @dev Equivalent to `_burn(tokenId, false)`."},"id":9880,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"33800:5:50","nodeType":"FunctionDefinition","parameters":{"id":9872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9871,"mutability":"mutable","name":"tokenId","nameLocation":"33814:7:50","nodeType":"VariableDeclaration","scope":9880,"src":"33806:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9870,"name":"uint256","nodeType":"ElementaryTypeName","src":"33806:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33805:17:50"},"returnParameters":{"id":9873,"nodeType":"ParameterList","parameters":[],"src":"33840:0:50"},"scope":10143,"src":"33791:87:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":10031,"nodeType":"Block","src":"34164:2946:50","statements":[{"assignments":[9889],"declarations":[{"constant":false,"id":9889,"mutability":"mutable","name":"prevOwnershipPacked","nameLocation":"34182:19:50","nodeType":"VariableDeclaration","scope":10031,"src":"34174:27:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9888,"name":"uint256","nodeType":"ElementaryTypeName","src":"34174:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9893,"initialValue":{"arguments":[{"id":9891,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"34223:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9890,"name":"_packedOwnershipOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"34204:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":9892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34204:27:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34174:57:50"},{"assignments":[9895],"declarations":[{"constant":false,"id":9895,"mutability":"mutable","name":"from","nameLocation":"34250:4:50","nodeType":"VariableDeclaration","scope":10031,"src":"34242:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9894,"name":"address","nodeType":"ElementaryTypeName","src":"34242:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9903,"initialValue":{"arguments":[{"arguments":[{"id":9900,"name":"prevOwnershipPacked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"34273:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34265:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":9898,"name":"uint160","nodeType":"ElementaryTypeName","src":"34265:7:50","typeDescriptions":{}}},"id":9901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34265:28:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":9897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34257:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9896,"name":"address","nodeType":"ElementaryTypeName","src":"34257:7:50","typeDescriptions":{}}},"id":9902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34257:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"34242:52:50"},{"assignments":[9905,9907],"declarations":[{"constant":false,"id":9905,"mutability":"mutable","name":"approvedAddressSlot","nameLocation":"34314:19:50","nodeType":"VariableDeclaration","scope":10031,"src":"34306:27:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9904,"name":"uint256","nodeType":"ElementaryTypeName","src":"34306:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9907,"mutability":"mutable","name":"approvedAddress","nameLocation":"34343:15:50","nodeType":"VariableDeclaration","scope":10031,"src":"34335:23:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9906,"name":"address","nodeType":"ElementaryTypeName","src":"34335:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9911,"initialValue":{"arguments":[{"id":9909,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"34389:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9908,"name":"_getApprovedSlotAndAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9300,"src":"34362:26:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_address_$","typeString":"function (uint256) view returns (uint256,address)"}},"id":9910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34362:35:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"nodeType":"VariableDeclarationStatement","src":"34305:92:50"},{"condition":{"id":9912,"name":"approvalCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9885,"src":"34412:13:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9932,"nodeType":"IfStatement","src":"34408:312:50","trueBody":{"id":9931,"nodeType":"Block","src":"34427:293:50","statements":[{"condition":{"id":9919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"34530:69:50","subExpression":{"arguments":[{"id":9914,"name":"approvedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9907,"src":"34556:15:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9915,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"34573:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9916,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"34579:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34579:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9913,"name":"_isSenderApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9281,"src":"34531:24:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address,address) pure returns (bool)"}},"id":9918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34531:68:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9930,"nodeType":"IfStatement","src":"34526:183:50","trueBody":{"condition":{"id":9925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"34621:44:50","subExpression":{"arguments":[{"id":9921,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"34639:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9922,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"34645:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34645:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9920,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9241,"src":"34622:16:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":9924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34622:43:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9929,"nodeType":"IfStatement","src":"34617:92:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9926,"name":"TransferCallerNotOwnerNorApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10167,"src":"34674:33:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34674:35:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9928,"nodeType":"RevertStatement","src":"34667:42:50"}}}]}},{"expression":{"arguments":[{"id":9934,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"34752:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":9937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34766:1:50","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":9936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34758:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9935,"name":"address","nodeType":"ElementaryTypeName","src":"34758:7:50","typeDescriptions":{}}},"id":9938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34758:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9939,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"34770:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":9940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34779:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":9933,"name":"_beforeTokenTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9515,"src":"34730:21:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":9941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"34730:51:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9942,"nodeType":"ExpressionStatement","src":"34730:51:50"},{"AST":{"nodeType":"YulBlock","src":"34853:181:50","statements":[{"body":{"nodeType":"YulBlock","src":"34886:138:50","statements":[{"expression":{"arguments":[{"name":"approvedAddressSlot","nodeType":"YulIdentifier","src":"34987:19:50"},{"kind":"number","nodeType":"YulLiteral","src":"35008:1:50","type":"","value":"0"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"34980:6:50"},"nodeType":"YulFunctionCall","src":"34980:30:50"},"nodeType":"YulExpressionStatement","src":"34980:30:50"}]},"condition":{"name":"approvedAddress","nodeType":"YulIdentifier","src":"34870:15:50"},"nodeType":"YulIf","src":"34867:157:50"}]},"evmVersion":"london","externalReferences":[{"declaration":9907,"isOffset":false,"isSlot":false,"src":"34870:15:50","valueSize":1},{"declaration":9905,"isOffset":false,"isSlot":false,"src":"34987:19:50","valueSize":1}],"id":9943,"nodeType":"InlineAssembly","src":"34844:190:50"},{"id":10007,"nodeType":"UncheckedBlock","src":"35301:1545:50","statements":[{"expression":{"id":9953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9944,"name":"_packedAddressData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"35613:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9946,"indexExpression":{"id":9945,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"35632:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"35613:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35642:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":9948,"name":"_BITPOS_NUMBER_BURNED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8558,"src":"35647:21:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35642:26:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9950,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"35641:28:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35672:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"35641:32:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35613:60:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9954,"nodeType":"ExpressionStatement","src":"35613:60:50"},{"expression":{"id":9974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9955,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"35904:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9957,"indexExpression":{"id":9956,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"35922:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"35904:26:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9959,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"35969:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":9960,"name":"_BITMASK_BURNED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"35992:15:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":9961,"name":"_BITMASK_NEXT_INITIALIZED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8585,"src":"36010:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35992:43:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9963,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"35991:45:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"id":9965,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"36054:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":9968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36068:1:50","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":9967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36060:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9966,"name":"address","nodeType":"ElementaryTypeName","src":"36060:7:50","typeDescriptions":{}}},"id":9969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36060:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9970,"name":"prevOwnershipPacked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"36072:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9964,"name":"_nextExtraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10122,"src":"36039:14:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":9971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36039:53:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35991:101:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9958,"name":"_packOwnershipData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9119,"src":"35933:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":9973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"35933:173:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35904:202:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9975,"nodeType":"ExpressionStatement","src":"35904:202:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9976,"name":"prevOwnershipPacked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"36223:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9977,"name":"_BITMASK_NEXT_INITIALIZED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8585,"src":"36245:25:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36223:47:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36274:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"36223:52:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10006,"nodeType":"IfStatement","src":"36219:617:50","trueBody":{"id":10005,"nodeType":"Block","src":"36277:559:50","statements":[{"assignments":[9982],"declarations":[{"constant":false,"id":9982,"mutability":"mutable","name":"nextTokenId","nameLocation":"36303:11:50","nodeType":"VariableDeclaration","scope":10005,"src":"36295:19:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9981,"name":"uint256","nodeType":"ElementaryTypeName","src":"36295:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9986,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9983,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"36317:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36327:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"36317:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36295:33:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9987,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"36448:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9989,"indexExpression":{"id":9988,"name":"nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"36466:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36448:30:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36482:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"36448:35:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10004,"nodeType":"IfStatement","src":"36444:378:50","trueBody":{"id":10003,"nodeType":"Block","src":"36485:337:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9992,"name":"nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"36569:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9993,"name":"_currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8612,"src":"36584:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36569:28:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10002,"nodeType":"IfStatement","src":"36565:239:50","trueBody":{"id":10001,"nodeType":"Block","src":"36599:205:50","statements":[{"expression":{"id":9999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9995,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"36729:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":9997,"indexExpression":{"id":9996,"name":"nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"36747:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"36729:30:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9998,"name":"prevOwnershipPacked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9889,"src":"36762:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36729:52:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10000,"nodeType":"ExpressionStatement","src":"36729:52:50"}]}}]}}]}}]},{"eventCall":{"arguments":[{"id":10009,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"36870:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":10012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36884:1:50","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":10011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36876:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10010,"name":"address","nodeType":"ElementaryTypeName","src":"36876:7:50","typeDescriptions":{}}},"id":10013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36876:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10014,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"36888:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10008,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10217,"src":"36861:8:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":10015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36861:35:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10016,"nodeType":"EmitStatement","src":"36856:40:50"},{"expression":{"arguments":[{"id":10018,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9895,"src":"36927:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":10021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36941:1:50","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":10020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36933:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10019,"name":"address","nodeType":"ElementaryTypeName","src":"36933:7:50","typeDescriptions":{}}},"id":10022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36933:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10023,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9883,"src":"36945:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":10024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36954:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":10017,"name":"_afterTokenTransfers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9528,"src":"36906:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":10025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"36906:50:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10026,"nodeType":"ExpressionStatement","src":"36906:50:50"},{"id":10030,"nodeType":"UncheckedBlock","src":"37055:49:50","statements":[{"expression":{"id":10028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"37079:14:50","subExpression":{"id":10027,"name":"_burnCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8614,"src":"37079:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10029,"nodeType":"ExpressionStatement","src":"37079:14:50"}]}]},"documentation":{"id":9881,"nodeType":"StructuredDocumentation","src":"33884:206:50","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":10032,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"34104:5:50","nodeType":"FunctionDefinition","parameters":{"id":9886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9883,"mutability":"mutable","name":"tokenId","nameLocation":"34118:7:50","nodeType":"VariableDeclaration","scope":10032,"src":"34110:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9882,"name":"uint256","nodeType":"ElementaryTypeName","src":"34110:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9885,"mutability":"mutable","name":"approvalCheck","nameLocation":"34132:13:50","nodeType":"VariableDeclaration","scope":10032,"src":"34127:18:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9884,"name":"bool","nodeType":"ElementaryTypeName","src":"34127:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34109:37:50"},"returnParameters":{"id":9887,"nodeType":"ParameterList","parameters":[],"src":"34164:0:50"},"scope":10143,"src":"34095:3015:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":10075,"nodeType":"Block","src":"37468:447:50","statements":[{"assignments":[10041],"declarations":[{"constant":false,"id":10041,"mutability":"mutable","name":"packed","nameLocation":"37486:6:50","nodeType":"VariableDeclaration","scope":10075,"src":"37478:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10040,"name":"uint256","nodeType":"ElementaryTypeName","src":"37478:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10045,"initialValue":{"baseExpression":{"id":10042,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"37495:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10044,"indexExpression":{"id":10043,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"37513:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37495:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"37478:41:50"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10046,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10041,"src":"37533:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37543:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37533:11:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10052,"nodeType":"IfStatement","src":"37529:61:50","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10049,"name":"OwnershipNotInitializedForExtraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10185,"src":"37553:35:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"37553:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10051,"nodeType":"RevertStatement","src":"37546:44:50"}},{"assignments":[10054],"declarations":[{"constant":false,"id":10054,"mutability":"mutable","name":"extraDataCasted","nameLocation":"37608:15:50","nodeType":"VariableDeclaration","scope":10075,"src":"37600:23:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10053,"name":"uint256","nodeType":"ElementaryTypeName","src":"37600:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10055,"nodeType":"VariableDeclarationStatement","src":"37600:23:50"},{"AST":{"nodeType":"YulBlock","src":"37712:52:50","statements":[{"nodeType":"YulAssignment","src":"37726:28:50","value":{"name":"extraData","nodeType":"YulIdentifier","src":"37745:9:50"},"variableNames":[{"name":"extraDataCasted","nodeType":"YulIdentifier","src":"37726:15:50"}]}]},"evmVersion":"london","externalReferences":[{"declaration":10037,"isOffset":false,"isSlot":false,"src":"37745:9:50","valueSize":1},{"declaration":10054,"isOffset":false,"isSlot":false,"src":"37726:15:50","valueSize":1}],"id":10056,"nodeType":"InlineAssembly","src":"37703:61:50"},{"expression":{"id":10067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10057,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10041,"src":"37773:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10058,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10041,"src":"37783:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":10059,"name":"_BITMASK_EXTRA_DATA_COMPLEMENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"37792:30:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37783:39:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10061,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37782:41:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10062,"name":"extraDataCasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10054,"src":"37827:15:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":10063,"name":"_BITPOS_EXTRA_DATA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8588,"src":"37846:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37827:37:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10065,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37826:39:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37782:83:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37773:92:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10068,"nodeType":"ExpressionStatement","src":"37773:92:50"},{"expression":{"id":10073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10069,"name":"_packedOwnerships","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"37875:17:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10071,"indexExpression":{"id":10070,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"37893:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"37875:24:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10072,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10041,"src":"37902:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37875:33:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10074,"nodeType":"ExpressionStatement","src":"37875:33:50"}]},"documentation":{"id":10033,"nodeType":"StructuredDocumentation","src":"37304:84:50","text":" @dev Directly sets the extra data for the ownership data `index`."},"id":10076,"implemented":true,"kind":"function","modifiers":[],"name":"_setExtraDataAt","nameLocation":"37402:15:50","nodeType":"FunctionDefinition","parameters":{"id":10038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10035,"mutability":"mutable","name":"index","nameLocation":"37426:5:50","nodeType":"VariableDeclaration","scope":10076,"src":"37418:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10034,"name":"uint256","nodeType":"ElementaryTypeName","src":"37418:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10037,"mutability":"mutable","name":"extraData","nameLocation":"37440:9:50","nodeType":"VariableDeclaration","scope":10076,"src":"37433:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10036,"name":"uint24","nodeType":"ElementaryTypeName","src":"37433:6:50","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"37417:33:50"},"returnParameters":{"id":10039,"nodeType":"ParameterList","parameters":[],"src":"37468:0:50"},"scope":10143,"src":"37393:522:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":10088,"nodeType":"Block","src":"38616:2:50","statements":[]},"documentation":{"id":10077,"nodeType":"StructuredDocumentation","src":"37921:549:50","text":" @dev Called during each token transfer to set the 24bit `extraData` field.\n Intended to be overridden by the cosumer contract.\n `previousExtraData` - the value of `extraData` before transfer.\n Calling conditions:\n - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, `tokenId` will be burned by `from`.\n - `from` and `to` are never both zero."},"id":10089,"implemented":true,"kind":"function","modifiers":[],"name":"_extraData","nameLocation":"38484:10:50","nodeType":"FunctionDefinition","parameters":{"id":10084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10079,"mutability":"mutable","name":"from","nameLocation":"38512:4:50","nodeType":"VariableDeclaration","scope":10089,"src":"38504:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10078,"name":"address","nodeType":"ElementaryTypeName","src":"38504:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10081,"mutability":"mutable","name":"to","nameLocation":"38534:2:50","nodeType":"VariableDeclaration","scope":10089,"src":"38526:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10080,"name":"address","nodeType":"ElementaryTypeName","src":"38526:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10083,"mutability":"mutable","name":"previousExtraData","nameLocation":"38553:17:50","nodeType":"VariableDeclaration","scope":10089,"src":"38546:24:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10082,"name":"uint24","nodeType":"ElementaryTypeName","src":"38546:6:50","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"38494:82:50"},"returnParameters":{"id":10087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10086,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10089,"src":"38608:6:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10085,"name":"uint24","nodeType":"ElementaryTypeName","src":"38608:6:50","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"38607:8:50"},"scope":10143,"src":"38475:143:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":10121,"nodeType":"Block","src":"38904:164:50","statements":[{"assignments":[10102],"declarations":[{"constant":false,"id":10102,"mutability":"mutable","name":"extraData","nameLocation":"38921:9:50","nodeType":"VariableDeclaration","scope":10121,"src":"38914:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10101,"name":"uint24","nodeType":"ElementaryTypeName","src":"38914:6:50","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":10109,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10105,"name":"prevOwnershipPacked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10096,"src":"38940:19:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":10106,"name":"_BITPOS_EXTRA_DATA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8588,"src":"38963:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38940:41:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38933:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":10103,"name":"uint24","nodeType":"ElementaryTypeName","src":"38933:6:50","typeDescriptions":{}}},"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38933:49:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"VariableDeclarationStatement","src":"38914:68:50"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":10113,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10092,"src":"39018:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10114,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10094,"src":"39024:2:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10115,"name":"extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10102,"src":"39028:9:50","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":10112,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10089,"src":"39007:10:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_uint24_$","typeString":"function (address,address,uint24) view returns (uint24)"}},"id":10116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"39007:31:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":10111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38999:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10110,"name":"uint256","nodeType":"ElementaryTypeName","src":"38999:7:50","typeDescriptions":{}}},"id":10117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"38999:40:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":10118,"name":"_BITPOS_EXTRA_DATA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8588,"src":"39043:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38999:62:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10100,"id":10120,"nodeType":"Return","src":"38992:69:50"}]},"documentation":{"id":10090,"nodeType":"StructuredDocumentation","src":"38624:135:50","text":" @dev Returns the next extra data for the packed ownership data.\n The returned result is shifted into position."},"id":10122,"implemented":true,"kind":"function","modifiers":[],"name":"_nextExtraData","nameLocation":"38773:14:50","nodeType":"FunctionDefinition","parameters":{"id":10097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10092,"mutability":"mutable","name":"from","nameLocation":"38805:4:50","nodeType":"VariableDeclaration","scope":10122,"src":"38797:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10091,"name":"address","nodeType":"ElementaryTypeName","src":"38797:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10094,"mutability":"mutable","name":"to","nameLocation":"38827:2:50","nodeType":"VariableDeclaration","scope":10122,"src":"38819:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10093,"name":"address","nodeType":"ElementaryTypeName","src":"38819:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10096,"mutability":"mutable","name":"prevOwnershipPacked","nameLocation":"38847:19:50","nodeType":"VariableDeclaration","scope":10122,"src":"38839:27:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10095,"name":"uint256","nodeType":"ElementaryTypeName","src":"38839:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38787:85:50"},"returnParameters":{"id":10100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10122,"src":"38895:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10098,"name":"uint256","nodeType":"ElementaryTypeName","src":"38895:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38894:9:50"},"scope":10143,"src":"38764:304:50","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10131,"nodeType":"Block","src":"39506:34:50","statements":[{"expression":{"expression":{"id":10128,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"39523:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"39523:10:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10127,"id":10130,"nodeType":"Return","src":"39516:17:50"}]},"documentation":{"id":10123,"nodeType":"StructuredDocumentation","src":"39259:173:50","text":" @dev Returns the message sender (defaults to `msg.sender`).\n If you are writing GSN compatible contracts, you need to override this function."},"id":10132,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSenderERC721A","nameLocation":"39446:17:50","nodeType":"FunctionDefinition","parameters":{"id":10124,"nodeType":"ParameterList","parameters":[],"src":"39463:2:50"},"returnParameters":{"id":10127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10132,"src":"39497:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10125,"name":"address","nodeType":"ElementaryTypeName","src":"39497:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39496:9:50"},"scope":10143,"src":"39437:103:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":10141,"nodeType":"Block","src":"39721:1624:50","statements":[{"AST":{"nodeType":"YulBlock","src":"39740:1599:50","statements":[{"nodeType":"YulVariableDeclaration","src":"40104:31:50","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40123:4:50","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"40117:5:50"},"nodeType":"YulFunctionCall","src":"40117:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"40130:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40113:3:50"},"nodeType":"YulFunctionCall","src":"40113:22:50"},"variables":[{"name":"m","nodeType":"YulTypedName","src":"40108:1:50","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40214:4:50","type":"","value":"0x40"},{"name":"m","nodeType":"YulIdentifier","src":"40220:1:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"40207:6:50"},"nodeType":"YulFunctionCall","src":"40207:15:50"},"nodeType":"YulExpressionStatement","src":"40207:15:50"},{"nodeType":"YulAssignment","src":"40279:19:50","value":{"arguments":[{"name":"m","nodeType":"YulIdentifier","src":"40290:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"40293:4:50","type":"","value":"0x20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"40286:3:50"},"nodeType":"YulFunctionCall","src":"40286:12:50"},"variableNames":[{"name":"str","nodeType":"YulIdentifier","src":"40279:3:50"}]},{"expression":{"arguments":[{"name":"str","nodeType":"YulIdentifier","src":"40368:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"40373:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"40361:6:50"},"nodeType":"YulFunctionCall","src":"40361:14:50"},"nodeType":"YulExpressionStatement","src":"40361:14:50"},{"nodeType":"YulVariableDeclaration","src":"40463:14:50","value":{"name":"str","nodeType":"YulIdentifier","src":"40474:3:50"},"variables":[{"name":"end","nodeType":"YulTypedName","src":"40467:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"40721:388:50","statements":[{"nodeType":"YulAssignment","src":"40739:18:50","value":{"arguments":[{"name":"str","nodeType":"YulIdentifier","src":"40750:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"40755:1:50","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"40746:3:50"},"nodeType":"YulFunctionCall","src":"40746:11:50"},"variableNames":[{"name":"str","nodeType":"YulIdentifier","src":"40739:3:50"}]},{"expression":{"arguments":[{"name":"str","nodeType":"YulIdentifier","src":"40900:3:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40909:2:50","type":"","value":"48"},{"arguments":[{"name":"temp","nodeType":"YulIdentifier","src":"40917:4:50"},{"kind":"number","nodeType":"YulLiteral","src":"40923:2:50","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"40913:3:50"},"nodeType":"YulFunctionCall","src":"40913:13:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40905:3:50"},"nodeType":"YulFunctionCall","src":"40905:22:50"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"40892:7:50"},"nodeType":"YulFunctionCall","src":"40892:36:50"},"nodeType":"YulExpressionStatement","src":"40892:36:50"},{"nodeType":"YulAssignment","src":"40997:21:50","value":{"arguments":[{"name":"temp","nodeType":"YulIdentifier","src":"41009:4:50"},{"kind":"number","nodeType":"YulLiteral","src":"41015:2:50","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"41005:3:50"},"nodeType":"YulFunctionCall","src":"41005:13:50"},"variableNames":[{"name":"temp","nodeType":"YulIdentifier","src":"40997:4:50"}]},{"body":{"nodeType":"YulBlock","src":"41086:9:50","statements":[{"nodeType":"YulBreak","src":"41088:5:50"}]},"condition":{"arguments":[{"name":"temp","nodeType":"YulIdentifier","src":"41080:4:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"41073:6:50"},"nodeType":"YulFunctionCall","src":"41073:12:50"},"nodeType":"YulIf","src":"41070:25:50"}]},"condition":{"kind":"number","nodeType":"YulLiteral","src":"40716:1:50","type":"","value":"1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"40718:2:50","statements":[]},"pre":{"nodeType":"YulBlock","src":"40694:21:50","statements":[{"nodeType":"YulVariableDeclaration","src":"40696:17:50","value":{"name":"value","nodeType":"YulIdentifier","src":"40708:5:50"},"variables":[{"name":"temp","nodeType":"YulTypedName","src":"40700:4:50","type":""}]}]},"src":"40690:419:50"},{"nodeType":"YulVariableDeclaration","src":"41123:27:50","value":{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"41141:3:50"},{"name":"str","nodeType":"YulIdentifier","src":"41146:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"41137:3:50"},"nodeType":"YulFunctionCall","src":"41137:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"41127:6:50","type":""}]},{"nodeType":"YulAssignment","src":"41243:21:50","value":{"arguments":[{"name":"str","nodeType":"YulIdentifier","src":"41254:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"41259:4:50","type":"","value":"0x20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"41250:3:50"},"nodeType":"YulFunctionCall","src":"41250:14:50"},"variableNames":[{"name":"str","nodeType":"YulIdentifier","src":"41243:3:50"}]},{"expression":{"arguments":[{"name":"str","nodeType":"YulIdentifier","src":"41317:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"41322:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"41310:6:50"},"nodeType":"YulFunctionCall","src":"41310:19:50"},"nodeType":"YulExpressionStatement","src":"41310:19:50"}]},"evmVersion":"london","externalReferences":[{"declaration":10138,"isOffset":false,"isSlot":false,"src":"40279:3:50","valueSize":1},{"declaration":10138,"isOffset":false,"isSlot":false,"src":"40368:3:50","valueSize":1},{"declaration":10138,"isOffset":false,"isSlot":false,"src":"40474:3:50","valueSize":1},{"declaration":10138,"isOffset":false,"isSlot":false,"src":"40739:3:50","valueSize":1},{"declaration":10138,"isOffset":false,"isSlot":false,"src":"40750:3:50","valueSize":1},{"declaration":10138,"isOffset":false,"isSlot":false,"src":"40900:3:50","valueSize":1},{"declaration":10138,"isOffset":false,"isSlot":false,"src":"41146:3:50","valueSize":1},{"declaration":10138,"isOffset":false,"isSlot":false,"src":"41243:3:50","valueSize":1},{"declaration":10138,"isOffset":false,"isSlot":false,"src":"41254:3:50","valueSize":1},{"declaration":10138,"isOffset":false,"isSlot":false,"src":"41317:3:50","valueSize":1},{"declaration":10135,"isOffset":false,"isSlot":false,"src":"40708:5:50","valueSize":1}],"id":10140,"nodeType":"InlineAssembly","src":"39731:1608:50"}]},"documentation":{"id":10133,"nodeType":"StructuredDocumentation","src":"39546:86:50","text":" @dev Converts a uint256 to its ASCII string decimal representation."},"id":10142,"implemented":true,"kind":"function","modifiers":[],"name":"_toString","nameLocation":"39646:9:50","nodeType":"FunctionDefinition","parameters":{"id":10136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10135,"mutability":"mutable","name":"value","nameLocation":"39664:5:50","nodeType":"VariableDeclaration","scope":10142,"src":"39656:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10134,"name":"uint256","nodeType":"ElementaryTypeName","src":"39656:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39655:15:50"},"returnParameters":{"id":10139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10138,"mutability":"mutable","name":"str","nameLocation":"39716:3:50","nodeType":"VariableDeclaration","scope":10142,"src":"39702:17:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10137,"name":"string","nodeType":"ElementaryTypeName","src":"39702:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"39701:19:50"},"scope":10143,"src":"39637:1708:50","stateMutability":"pure","virtual":true,"visibility":"internal"}],"scope":10144,"src":"895:40452:50","usedErrors":[10149,10152,10155,10158,10161,10164,10167,10170,10173,10176,10179,10182,10185]}],"src":"84:41264:50"},"id":50},"erc721a/contracts/IERC721A.sol":{"ast":{"absolutePath":"erc721a/contracts/IERC721A.sol","exportedSymbols":{"IERC721A":[10349]},"id":10350,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10145,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"84:23:51"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721A","contractDependencies":[],"contractKind":"interface","documentation":{"id":10146,"nodeType":"StructuredDocumentation","src":"109:37:51","text":" @dev Interface of ERC721A."},"fullyImplemented":false,"id":10349,"linearizedBaseContracts":[10349],"name":"IERC721A","nameLocation":"157:8:51","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10147,"nodeType":"StructuredDocumentation","src":"172:76:51","text":" The caller must own the token or be an approved operator."},"errorSelector":"cfb3b942","id":10149,"name":"ApprovalCallerNotOwnerNorApproved","nameLocation":"259:33:51","nodeType":"ErrorDefinition","parameters":{"id":10148,"nodeType":"ParameterList","parameters":[],"src":"292:2:51"},"src":"253:42:51"},{"documentation":{"id":10150,"nodeType":"StructuredDocumentation","src":"301:44:51","text":" The token does not exist."},"errorSelector":"cf4700e4","id":10152,"name":"ApprovalQueryForNonexistentToken","nameLocation":"356:32:51","nodeType":"ErrorDefinition","parameters":{"id":10151,"nodeType":"ParameterList","parameters":[],"src":"388:2:51"},"src":"350:41:51"},{"documentation":{"id":10153,"nodeType":"StructuredDocumentation","src":"397:65:51","text":" Cannot query the balance for the zero address."},"errorSelector":"8f4eb604","id":10155,"name":"BalanceQueryForZeroAddress","nameLocation":"473:26:51","nodeType":"ErrorDefinition","parameters":{"id":10154,"nodeType":"ParameterList","parameters":[],"src":"499:2:51"},"src":"467:35:51"},{"documentation":{"id":10156,"nodeType":"StructuredDocumentation","src":"508:51:51","text":" Cannot mint to the zero address."},"errorSelector":"2e076300","id":10158,"name":"MintToZeroAddress","nameLocation":"570:17:51","nodeType":"ErrorDefinition","parameters":{"id":10157,"nodeType":"ParameterList","parameters":[],"src":"587:2:51"},"src":"564:26:51"},{"documentation":{"id":10159,"nodeType":"StructuredDocumentation","src":"596:72:51","text":" The quantity of tokens minted must be more than zero."},"errorSelector":"b562e8dd","id":10161,"name":"MintZeroQuantity","nameLocation":"679:16:51","nodeType":"ErrorDefinition","parameters":{"id":10160,"nodeType":"ParameterList","parameters":[],"src":"695:2:51"},"src":"673:25:51"},{"documentation":{"id":10162,"nodeType":"StructuredDocumentation","src":"704:44:51","text":" The token does not exist."},"errorSelector":"df2d9b42","id":10164,"name":"OwnerQueryForNonexistentToken","nameLocation":"759:29:51","nodeType":"ErrorDefinition","parameters":{"id":10163,"nodeType":"ParameterList","parameters":[],"src":"788:2:51"},"src":"753:38:51"},{"documentation":{"id":10165,"nodeType":"StructuredDocumentation","src":"797:76:51","text":" The caller must own the token or be an approved operator."},"errorSelector":"59c896be","id":10167,"name":"TransferCallerNotOwnerNorApproved","nameLocation":"884:33:51","nodeType":"ErrorDefinition","parameters":{"id":10166,"nodeType":"ParameterList","parameters":[],"src":"917:2:51"},"src":"878:42:51"},{"documentation":{"id":10168,"nodeType":"StructuredDocumentation","src":"926:53:51","text":" The token must be owned by `from`."},"errorSelector":"a1148100","id":10170,"name":"TransferFromIncorrectOwner","nameLocation":"990:26:51","nodeType":"ErrorDefinition","parameters":{"id":10169,"nodeType":"ParameterList","parameters":[],"src":"1016:2:51"},"src":"984:35:51"},{"documentation":{"id":10171,"nodeType":"StructuredDocumentation","src":"1025:116:51","text":" Cannot safely transfer to a contract that does not implement the\n ERC721Receiver interface."},"errorSelector":"d1a57ed6","id":10173,"name":"TransferToNonERC721ReceiverImplementer","nameLocation":"1152:38:51","nodeType":"ErrorDefinition","parameters":{"id":10172,"nodeType":"ParameterList","parameters":[],"src":"1190:2:51"},"src":"1146:47:51"},{"documentation":{"id":10174,"nodeType":"StructuredDocumentation","src":"1199:55:51","text":" Cannot transfer to the zero address."},"errorSelector":"ea553b34","id":10176,"name":"TransferToZeroAddress","nameLocation":"1265:21:51","nodeType":"ErrorDefinition","parameters":{"id":10175,"nodeType":"ParameterList","parameters":[],"src":"1286:2:51"},"src":"1259:30:51"},{"documentation":{"id":10177,"nodeType":"StructuredDocumentation","src":"1295:44:51","text":" The token does not exist."},"errorSelector":"a14c4b50","id":10179,"name":"URIQueryForNonexistentToken","nameLocation":"1350:27:51","nodeType":"ErrorDefinition","parameters":{"id":10178,"nodeType":"ParameterList","parameters":[],"src":"1377:2:51"},"src":"1344:36:51"},{"documentation":{"id":10180,"nodeType":"StructuredDocumentation","src":"1386:79:51","text":" The `quantity` minted with ERC2309 exceeds the safety limit."},"errorSelector":"3db1f9af","id":10182,"name":"MintERC2309QuantityExceedsLimit","nameLocation":"1476:31:51","nodeType":"ErrorDefinition","parameters":{"id":10181,"nodeType":"ParameterList","parameters":[],"src":"1507:2:51"},"src":"1470:40:51"},{"documentation":{"id":10183,"nodeType":"StructuredDocumentation","src":"1516:83:51","text":" The `extraData` cannot be set on an unintialized ownership slot."},"errorSelector":"00d58153","id":10185,"name":"OwnershipNotInitializedForExtraData","nameLocation":"1610:35:51","nodeType":"ErrorDefinition","parameters":{"id":10184,"nodeType":"ParameterList","parameters":[],"src":"1645:2:51"},"src":"1604:44:51"},{"canonicalName":"IERC721A.TokenOwnership","id":10194,"members":[{"constant":false,"id":10187,"mutability":"mutable","name":"addr","nameLocation":"1912:4:51","nodeType":"VariableDeclaration","scope":10194,"src":"1904:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10186,"name":"address","nodeType":"ElementaryTypeName","src":"1904:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10189,"mutability":"mutable","name":"startTimestamp","nameLocation":"2017:14:51","nodeType":"VariableDeclaration","scope":10194,"src":"2010:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10188,"name":"uint64","nodeType":"ElementaryTypeName","src":"2010:6:51","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":10191,"mutability":"mutable","name":"burned","nameLocation":"2092:6:51","nodeType":"VariableDeclaration","scope":10194,"src":"2087:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10190,"name":"bool","nodeType":"ElementaryTypeName","src":"2087:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10193,"mutability":"mutable","name":"extraData","nameLocation":"2203:9:51","nodeType":"VariableDeclaration","scope":10194,"src":"2196:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10192,"name":"uint24","nodeType":"ElementaryTypeName","src":"2196:6:51","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"TokenOwnership","nameLocation":"1842:14:51","nodeType":"StructDefinition","scope":10349,"src":"1835:384:51","visibility":"public"},{"documentation":{"id":10195,"nodeType":"StructuredDocumentation","src":"2410:192:51","text":" @dev Returns the total number of tokens in existence.\n Burned tokens will reduce the count.\n To get the total number of tokens minted, please see {_totalMinted}."},"functionSelector":"18160ddd","id":10200,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2616:11:51","nodeType":"FunctionDefinition","parameters":{"id":10196,"nodeType":"ParameterList","parameters":[],"src":"2627:2:51"},"returnParameters":{"id":10199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10198,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10200,"src":"2653:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10197,"name":"uint256","nodeType":"ElementaryTypeName","src":"2653:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:9:51"},"scope":10349,"src":"2607:55:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10201,"nodeType":"StructuredDocumentation","src":"2849:341:51","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\n to learn more about how these ids are created.\n This function call must use less than 30000 gas."},"functionSelector":"01ffc9a7","id":10208,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3204:17:51","nodeType":"FunctionDefinition","parameters":{"id":10204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10203,"mutability":"mutable","name":"interfaceId","nameLocation":"3229:11:51","nodeType":"VariableDeclaration","scope":10208,"src":"3222:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10202,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3222:6:51","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3221:20:51"},"returnParameters":{"id":10207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10208,"src":"3265:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10205,"name":"bool","nodeType":"ElementaryTypeName","src":"3265:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3264:6:51"},"scope":10349,"src":"3195:76:51","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10209,"nodeType":"StructuredDocumentation","src":"3458:88:51","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":10217,"name":"Transfer","nameLocation":"3557:8:51","nodeType":"EventDefinition","parameters":{"id":10216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10211,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"3582:4:51","nodeType":"VariableDeclaration","scope":10217,"src":"3566:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10210,"name":"address","nodeType":"ElementaryTypeName","src":"3566:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10213,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"3604:2:51","nodeType":"VariableDeclaration","scope":10217,"src":"3588:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10212,"name":"address","nodeType":"ElementaryTypeName","src":"3588:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10215,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3624:7:51","nodeType":"VariableDeclaration","scope":10217,"src":"3608:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10214,"name":"uint256","nodeType":"ElementaryTypeName","src":"3608:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3565:67:51"},"src":"3551:82:51"},{"anonymous":false,"documentation":{"id":10218,"nodeType":"StructuredDocumentation","src":"3639:94:51","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":10226,"name":"Approval","nameLocation":"3744:8:51","nodeType":"EventDefinition","parameters":{"id":10225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10220,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"3769:5:51","nodeType":"VariableDeclaration","scope":10226,"src":"3753:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10219,"name":"address","nodeType":"ElementaryTypeName","src":"3753:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10222,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"3792:8:51","nodeType":"VariableDeclaration","scope":10226,"src":"3776:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10221,"name":"address","nodeType":"ElementaryTypeName","src":"3776:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10224,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3818:7:51","nodeType":"VariableDeclaration","scope":10226,"src":"3802:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10223,"name":"uint256","nodeType":"ElementaryTypeName","src":"3802:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3752:74:51"},"src":"3738:89:51"},{"anonymous":false,"documentation":{"id":10227,"nodeType":"StructuredDocumentation","src":"3833:124:51","text":" @dev Emitted when `owner` enables or disables\n (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":10235,"name":"ApprovalForAll","nameLocation":"3968:14:51","nodeType":"EventDefinition","parameters":{"id":10234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10229,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"3999:5:51","nodeType":"VariableDeclaration","scope":10235,"src":"3983:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10228,"name":"address","nodeType":"ElementaryTypeName","src":"3983:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10231,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"4022:8:51","nodeType":"VariableDeclaration","scope":10235,"src":"4006:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10230,"name":"address","nodeType":"ElementaryTypeName","src":"4006:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10233,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"4037:8:51","nodeType":"VariableDeclaration","scope":10235,"src":"4032:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10232,"name":"bool","nodeType":"ElementaryTypeName","src":"4032:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3982:64:51"},"src":"3962:85:51"},{"documentation":{"id":10236,"nodeType":"StructuredDocumentation","src":"4053:74:51","text":" @dev Returns the number of tokens in `owner`'s account."},"functionSelector":"70a08231","id":10243,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4141:9:51","nodeType":"FunctionDefinition","parameters":{"id":10239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10238,"mutability":"mutable","name":"owner","nameLocation":"4159:5:51","nodeType":"VariableDeclaration","scope":10243,"src":"4151:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10237,"name":"address","nodeType":"ElementaryTypeName","src":"4151:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4150:15:51"},"returnParameters":{"id":10242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10241,"mutability":"mutable","name":"balance","nameLocation":"4197:7:51","nodeType":"VariableDeclaration","scope":10243,"src":"4189:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10240,"name":"uint256","nodeType":"ElementaryTypeName","src":"4189:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4188:17:51"},"scope":10349,"src":"4132:74:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10244,"nodeType":"StructuredDocumentation","src":"4212:131:51","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":10251,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"4357:7:51","nodeType":"FunctionDefinition","parameters":{"id":10247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10246,"mutability":"mutable","name":"tokenId","nameLocation":"4373:7:51","nodeType":"VariableDeclaration","scope":10251,"src":"4365:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10245,"name":"uint256","nodeType":"ElementaryTypeName","src":"4365:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4364:17:51"},"returnParameters":{"id":10250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10249,"mutability":"mutable","name":"owner","nameLocation":"4413:5:51","nodeType":"VariableDeclaration","scope":10251,"src":"4405:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10248,"name":"address","nodeType":"ElementaryTypeName","src":"4405:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4404:15:51"},"scope":10349,"src":"4348:72:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10252,"nodeType":"StructuredDocumentation","src":"4426:711:51","text":" @dev Safely transfers `tokenId` token from `from` to `to`,\n checking first that contract recipients are aware of the ERC721 protocol\n 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 be have been allowed to move\n this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement\n {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":10263,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5151:16:51","nodeType":"FunctionDefinition","parameters":{"id":10261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10254,"mutability":"mutable","name":"from","nameLocation":"5185:4:51","nodeType":"VariableDeclaration","scope":10263,"src":"5177:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10253,"name":"address","nodeType":"ElementaryTypeName","src":"5177:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10256,"mutability":"mutable","name":"to","nameLocation":"5207:2:51","nodeType":"VariableDeclaration","scope":10263,"src":"5199:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10255,"name":"address","nodeType":"ElementaryTypeName","src":"5199:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10258,"mutability":"mutable","name":"tokenId","nameLocation":"5227:7:51","nodeType":"VariableDeclaration","scope":10263,"src":"5219:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10257,"name":"uint256","nodeType":"ElementaryTypeName","src":"5219:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10260,"mutability":"mutable","name":"data","nameLocation":"5259:4:51","nodeType":"VariableDeclaration","scope":10263,"src":"5244:19:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10259,"name":"bytes","nodeType":"ElementaryTypeName","src":"5244:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5167:102:51"},"returnParameters":{"id":10262,"nodeType":"ParameterList","parameters":[],"src":"5286:0:51"},"scope":10349,"src":"5142:145:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":10264,"nodeType":"StructuredDocumentation","src":"5293:80:51","text":" @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`."},"functionSelector":"42842e0e","id":10273,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5387:16:51","nodeType":"FunctionDefinition","parameters":{"id":10271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10266,"mutability":"mutable","name":"from","nameLocation":"5421:4:51","nodeType":"VariableDeclaration","scope":10273,"src":"5413:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10265,"name":"address","nodeType":"ElementaryTypeName","src":"5413:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10268,"mutability":"mutable","name":"to","nameLocation":"5443:2:51","nodeType":"VariableDeclaration","scope":10273,"src":"5435:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10267,"name":"address","nodeType":"ElementaryTypeName","src":"5435:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10270,"mutability":"mutable","name":"tokenId","nameLocation":"5463:7:51","nodeType":"VariableDeclaration","scope":10273,"src":"5455:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10269,"name":"uint256","nodeType":"ElementaryTypeName","src":"5455:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5403:73:51"},"returnParameters":{"id":10272,"nodeType":"ParameterList","parameters":[],"src":"5493:0:51"},"scope":10349,"src":"5378:116:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":10274,"nodeType":"StructuredDocumentation","src":"5500:512:51","text":" @dev Transfers `tokenId` from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom}\n whenever possible.\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\n by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":10283,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"6026:12:51","nodeType":"FunctionDefinition","parameters":{"id":10281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10276,"mutability":"mutable","name":"from","nameLocation":"6056:4:51","nodeType":"VariableDeclaration","scope":10283,"src":"6048:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10275,"name":"address","nodeType":"ElementaryTypeName","src":"6048:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10278,"mutability":"mutable","name":"to","nameLocation":"6078:2:51","nodeType":"VariableDeclaration","scope":10283,"src":"6070:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10277,"name":"address","nodeType":"ElementaryTypeName","src":"6070:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10280,"mutability":"mutable","name":"tokenId","nameLocation":"6098:7:51","nodeType":"VariableDeclaration","scope":10283,"src":"6090:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10279,"name":"uint256","nodeType":"ElementaryTypeName","src":"6090:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6038:73:51"},"returnParameters":{"id":10282,"nodeType":"ParameterList","parameters":[],"src":"6128:0:51"},"scope":10349,"src":"6017:112:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":10284,"nodeType":"StructuredDocumentation","src":"6135:459:51","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\n 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":10291,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"6608:7:51","nodeType":"FunctionDefinition","parameters":{"id":10289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10286,"mutability":"mutable","name":"to","nameLocation":"6624:2:51","nodeType":"VariableDeclaration","scope":10291,"src":"6616:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10285,"name":"address","nodeType":"ElementaryTypeName","src":"6616:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10288,"mutability":"mutable","name":"tokenId","nameLocation":"6636:7:51","nodeType":"VariableDeclaration","scope":10291,"src":"6628:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10287,"name":"uint256","nodeType":"ElementaryTypeName","src":"6628:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6615:29:51"},"returnParameters":{"id":10290,"nodeType":"ParameterList","parameters":[],"src":"6661:0:51"},"scope":10349,"src":"6599:63:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":10292,"nodeType":"StructuredDocumentation","src":"6668:316:51","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom}\n for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":10299,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"6998:17:51","nodeType":"FunctionDefinition","parameters":{"id":10297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10294,"mutability":"mutable","name":"operator","nameLocation":"7024:8:51","nodeType":"VariableDeclaration","scope":10299,"src":"7016:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10293,"name":"address","nodeType":"ElementaryTypeName","src":"7016:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10296,"mutability":"mutable","name":"_approved","nameLocation":"7039:9:51","nodeType":"VariableDeclaration","scope":10299,"src":"7034:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10295,"name":"bool","nodeType":"ElementaryTypeName","src":"7034:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7015:34:51"},"returnParameters":{"id":10298,"nodeType":"ParameterList","parameters":[],"src":"7058:0:51"},"scope":10349,"src":"6989:70:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10300,"nodeType":"StructuredDocumentation","src":"7065:139:51","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":10307,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"7218:11:51","nodeType":"FunctionDefinition","parameters":{"id":10303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10302,"mutability":"mutable","name":"tokenId","nameLocation":"7238:7:51","nodeType":"VariableDeclaration","scope":10307,"src":"7230:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10301,"name":"uint256","nodeType":"ElementaryTypeName","src":"7230:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7229:17:51"},"returnParameters":{"id":10306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10305,"mutability":"mutable","name":"operator","nameLocation":"7278:8:51","nodeType":"VariableDeclaration","scope":10307,"src":"7270:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10304,"name":"address","nodeType":"ElementaryTypeName","src":"7270:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7269:18:51"},"scope":10349,"src":"7209:79:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10308,"nodeType":"StructuredDocumentation","src":"7294:139:51","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}."},"functionSelector":"e985e9c5","id":10317,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"7447:16:51","nodeType":"FunctionDefinition","parameters":{"id":10313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10310,"mutability":"mutable","name":"owner","nameLocation":"7472:5:51","nodeType":"VariableDeclaration","scope":10317,"src":"7464:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10309,"name":"address","nodeType":"ElementaryTypeName","src":"7464:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10312,"mutability":"mutable","name":"operator","nameLocation":"7487:8:51","nodeType":"VariableDeclaration","scope":10317,"src":"7479:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10311,"name":"address","nodeType":"ElementaryTypeName","src":"7479:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7463:33:51"},"returnParameters":{"id":10316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10317,"src":"7520:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10314,"name":"bool","nodeType":"ElementaryTypeName","src":"7520:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7519:6:51"},"scope":10349,"src":"7438:88:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10318,"nodeType":"StructuredDocumentation","src":"7717:58:51","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":10323,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"7789:4:51","nodeType":"FunctionDefinition","parameters":{"id":10319,"nodeType":"ParameterList","parameters":[],"src":"7793:2:51"},"returnParameters":{"id":10322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10323,"src":"7819:13:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10320,"name":"string","nodeType":"ElementaryTypeName","src":"7819:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7818:15:51"},"scope":10349,"src":"7780:54:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10324,"nodeType":"StructuredDocumentation","src":"7840:60:51","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":10329,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"7914:6:51","nodeType":"FunctionDefinition","parameters":{"id":10325,"nodeType":"ParameterList","parameters":[],"src":"7920:2:51"},"returnParameters":{"id":10328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10329,"src":"7946:13:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10326,"name":"string","nodeType":"ElementaryTypeName","src":"7946:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7945:15:51"},"scope":10349,"src":"7905:56:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10330,"nodeType":"StructuredDocumentation","src":"7967:90:51","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":10337,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"8071:8:51","nodeType":"FunctionDefinition","parameters":{"id":10333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10332,"mutability":"mutable","name":"tokenId","nameLocation":"8088:7:51","nodeType":"VariableDeclaration","scope":10337,"src":"8080:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10331,"name":"uint256","nodeType":"ElementaryTypeName","src":"8080:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8079:17:51"},"returnParameters":{"id":10336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10337,"src":"8120:13:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10334,"name":"string","nodeType":"ElementaryTypeName","src":"8120:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8119:15:51"},"scope":10349,"src":"8062:73:51","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10338,"nodeType":"StructuredDocumentation","src":"8322:267:51","text":" @dev Emitted when tokens in `fromTokenId` to `toTokenId`\n (inclusive) is transferred from `from` to `to`, as defined in the\n [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\n See {_mintERC2309} for more details."},"eventSelector":"deaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d","id":10348,"name":"ConsecutiveTransfer","nameLocation":"8600:19:51","nodeType":"EventDefinition","parameters":{"id":10347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10340,"indexed":true,"mutability":"mutable","name":"fromTokenId","nameLocation":"8636:11:51","nodeType":"VariableDeclaration","scope":10348,"src":"8620:27:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10339,"name":"uint256","nodeType":"ElementaryTypeName","src":"8620:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10342,"indexed":false,"mutability":"mutable","name":"toTokenId","nameLocation":"8657:9:51","nodeType":"VariableDeclaration","scope":10348,"src":"8649:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10341,"name":"uint256","nodeType":"ElementaryTypeName","src":"8649:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10344,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"8684:4:51","nodeType":"VariableDeclaration","scope":10348,"src":"8668:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10343,"name":"address","nodeType":"ElementaryTypeName","src":"8668:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10346,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"8706:2:51","nodeType":"VariableDeclaration","scope":10348,"src":"8690:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10345,"name":"address","nodeType":"ElementaryTypeName","src":"8690:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8619:90:51"},"src":"8594:116:51"}],"scope":10350,"src":"147:8565:51","usedErrors":[10149,10152,10155,10158,10161,10164,10167,10170,10173,10176,10179,10182,10185]}],"src":"84:8629:51"},"id":51},"erc721a/contracts/extensions/ERC4907A.sol":{"ast":{"absolutePath":"erc721a/contracts/extensions/ERC4907A.sol","exportedSymbols":{"ERC4907A":[10513],"ERC721A":[10143],"ERC721A__IERC721Receiver":[8538],"IERC4907A":[10558],"IERC721A":[10349]},"id":10514,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10351,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"84:23:52"},{"absolutePath":"erc721a/contracts/extensions/IERC4907A.sol","file":"./IERC4907A.sol","id":10352,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10514,"sourceUnit":10559,"src":"109:25:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"erc721a/contracts/ERC721A.sol","file":"../ERC721A.sol","id":10353,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10514,"sourceUnit":10144,"src":"135:24:52","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10355,"name":"ERC721A","nodeType":"IdentifierPath","referencedDeclaration":10143,"src":"436:7:52"},"id":10356,"nodeType":"InheritanceSpecifier","src":"436:7:52"},{"baseName":{"id":10357,"name":"IERC4907A","nodeType":"IdentifierPath","referencedDeclaration":10558,"src":"445:9:52"},"id":10358,"nodeType":"InheritanceSpecifier","src":"445:9:52"}],"canonicalName":"ERC4907A","contractDependencies":[],"contractKind":"contract","documentation":{"id":10354,"nodeType":"StructuredDocumentation","src":"161:244:52","text":" @title ERC4907A\n @dev [ERC4907](https://eips.ethereum.org/EIPS/eip-4907) compliant\n extension of ERC721A, which allows owners and authorized addresses\n to add a time-limited role with restricted permissions to ERC721 tokens."},"fullyImplemented":false,"id":10513,"linearizedBaseContracts":[10513,10558,10143,10349],"name":"ERC4907A","nameLocation":"424:8:52","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":10361,"mutability":"constant","name":"_BITPOS_EXPIRES","nameLocation":"544:15:52","nodeType":"VariableDeclaration","scope":10513,"src":"519:46:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10359,"name":"uint256","nodeType":"ElementaryTypeName","src":"519:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313630","id":10360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"562:3:52","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},"visibility":"private"},{"constant":false,"id":10365,"mutability":"mutable","name":"_packedUserInfo","nameLocation":"735:15:52","nodeType":"VariableDeclaration","scope":10513,"src":"699:51:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":10364,"keyType":{"id":10362,"name":"uint256","nodeType":"ElementaryTypeName","src":"707:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"699:27:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":10363,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"baseFunctions":[10541],"body":{"id":10430,"nodeType":"Block","src":"1102:496:52","statements":[{"assignments":[10377],"declarations":[{"constant":false,"id":10377,"mutability":"mutable","name":"owner","nameLocation":"1204:5:52","nodeType":"VariableDeclaration","scope":10430,"src":"1196:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10376,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10381,"initialValue":{"arguments":[{"id":10379,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10368,"src":"1220:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10378,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8945,"src":"1212:7:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":10380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1212:16:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1196:32:52"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10382,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"1242:17:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1242:19:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10384,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10377,"src":"1265:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1242:28:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10403,"nodeType":"IfStatement","src":"1238:203:52","trueBody":{"condition":{"id":10391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1288:45:52","subExpression":{"arguments":[{"id":10387,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10377,"src":"1306:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10388,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"1313:17:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1313:19:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10386,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9241,"src":"1289:16:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":10390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1289:44:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10402,"nodeType":"IfStatement","src":"1284:157:52","trueBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10393,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10368,"src":"1367:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10392,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9197,"src":"1355:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":10394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1355:20:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10395,"name":"_msgSenderERC721A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10132,"src":"1379:17:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1379:19:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1355:43:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10401,"nodeType":"IfStatement","src":"1351:90:52","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10398,"name":"SetUserCallerNotOwnerNorApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10522,"src":"1407:32:52","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1407:34:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10400,"nodeType":"RevertStatement","src":"1400:41:52"}}}},{"expression":{"id":10422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10404,"name":"_packedUserInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10365,"src":"1452:15:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10406,"indexExpression":{"id":10405,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10368,"src":"1468:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1452:24:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10409,"name":"expires","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10372,"src":"1488:7:52","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":10408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1480:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10407,"name":"uint256","nodeType":"ElementaryTypeName","src":"1480:7:52","typeDescriptions":{}}},"id":10410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1480:16:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":10411,"name":"_BITPOS_EXPIRES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10361,"src":"1500:15:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1480:35:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1479:37:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"arguments":[{"id":10418,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10370,"src":"1535:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1527:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":10416,"name":"uint160","nodeType":"ElementaryTypeName","src":"1527:7:52","typeDescriptions":{}}},"id":10419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1527:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":10415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1519:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10414,"name":"uint256","nodeType":"ElementaryTypeName","src":"1519:7:52","typeDescriptions":{}}},"id":10420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1519:22:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1479:62:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1452:89:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10423,"nodeType":"ExpressionStatement","src":"1452:89:52"},{"eventCall":{"arguments":[{"id":10425,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10368,"src":"1568:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10426,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10370,"src":"1577:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10427,"name":"expires","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10372,"src":"1583:7:52","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":10424,"name":"UpdateUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10531,"src":"1557:10:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint64_$returns$__$","typeString":"function (uint256,address,uint64)"}},"id":10428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1557:34:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10429,"nodeType":"EmitStatement","src":"1552:39:52"}]},"documentation":{"id":10366,"nodeType":"StructuredDocumentation","src":"757:222:52","text":" @dev Sets the `user` and `expires` for `tokenId`.\n The zero address indicates there is no user.\n Requirements:\n - The caller must own `tokenId` or be an approved operator."},"functionSelector":"e030565e","id":10431,"implemented":true,"kind":"function","modifiers":[],"name":"setUser","nameLocation":"993:7:52","nodeType":"FunctionDefinition","overrides":{"id":10374,"nodeType":"OverrideSpecifier","overrides":[],"src":"1093:8:52"},"parameters":{"id":10373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10368,"mutability":"mutable","name":"tokenId","nameLocation":"1018:7:52","nodeType":"VariableDeclaration","scope":10431,"src":"1010:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10367,"name":"uint256","nodeType":"ElementaryTypeName","src":"1010:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10370,"mutability":"mutable","name":"user","nameLocation":"1043:4:52","nodeType":"VariableDeclaration","scope":10431,"src":"1035:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10369,"name":"address","nodeType":"ElementaryTypeName","src":"1035:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10372,"mutability":"mutable","name":"expires","nameLocation":"1064:7:52","nodeType":"VariableDeclaration","scope":10431,"src":"1057:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10371,"name":"uint64","nodeType":"ElementaryTypeName","src":"1057:6:52","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1000:77:52"},"returnParameters":{"id":10375,"nodeType":"ParameterList","parameters":[],"src":"1102:0:52"},"scope":10513,"src":"984:614:52","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[10549],"body":{"id":10455,"nodeType":"Block","src":"1835:555:52","statements":[{"assignments":[10441],"declarations":[{"constant":false,"id":10441,"mutability":"mutable","name":"packed","nameLocation":"1853:6:52","nodeType":"VariableDeclaration","scope":10455,"src":"1845:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10440,"name":"uint256","nodeType":"ElementaryTypeName","src":"1845:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10445,"initialValue":{"baseExpression":{"id":10442,"name":"_packedUserInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10365,"src":"1862:15:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10444,"indexExpression":{"id":10443,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10434,"src":"1878:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1862:24:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1845:41:52"},{"AST":{"nodeType":"YulBlock","src":"1905:438:52","statements":[{"nodeType":"YulAssignment","src":"2162:171:52","value":{"arguments":[{"name":"packed","nodeType":"YulIdentifier","src":"2193:6:52"},{"arguments":[{"arguments":[{"name":"_BITPOS_EXPIRES","nodeType":"YulIdentifier","src":"2281:15:52"},{"arguments":[],"functionName":{"name":"timestamp","nodeType":"YulIdentifier","src":"2298:9:52"},"nodeType":"YulFunctionCall","src":"2298:11:52"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2277:3:52"},"nodeType":"YulFunctionCall","src":"2277:33:52"},{"name":"packed","nodeType":"YulIdentifier","src":"2312:6:52"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2274:2:52"},"nodeType":"YulFunctionCall","src":"2274:45:52"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2172:3:52"},"nodeType":"YulFunctionCall","src":"2172:161:52"},"variableNames":[{"name":"packed","nodeType":"YulIdentifier","src":"2162:6:52"}]}]},"evmVersion":"london","externalReferences":[{"declaration":10361,"isOffset":false,"isSlot":false,"src":"2281:15:52","valueSize":1},{"declaration":10441,"isOffset":false,"isSlot":false,"src":"2162:6:52","valueSize":1},{"declaration":10441,"isOffset":false,"isSlot":false,"src":"2193:6:52","valueSize":1},{"declaration":10441,"isOffset":false,"isSlot":false,"src":"2312:6:52","valueSize":1}],"id":10446,"nodeType":"InlineAssembly","src":"1896:447:52"},{"expression":{"arguments":[{"arguments":[{"id":10451,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10441,"src":"2375:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2367:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":10449,"name":"uint160","nodeType":"ElementaryTypeName","src":"2367:7:52","typeDescriptions":{}}},"id":10452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2367:15:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":10448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2359:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10447,"name":"address","nodeType":"ElementaryTypeName","src":"2359:7:52","typeDescriptions":{}}},"id":10453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2359:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10439,"id":10454,"nodeType":"Return","src":"2352:31:52"}]},"documentation":{"id":10432,"nodeType":"StructuredDocumentation","src":"1604:146:52","text":" @dev Returns the user address for `tokenId`.\n The zero address indicates that there is no user or if the user is expired."},"functionSelector":"c2f1f14a","id":10456,"implemented":true,"kind":"function","modifiers":[],"name":"userOf","nameLocation":"1764:6:52","nodeType":"FunctionDefinition","overrides":{"id":10436,"nodeType":"OverrideSpecifier","overrides":[],"src":"1808:8:52"},"parameters":{"id":10435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10434,"mutability":"mutable","name":"tokenId","nameLocation":"1779:7:52","nodeType":"VariableDeclaration","scope":10456,"src":"1771:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10433,"name":"uint256","nodeType":"ElementaryTypeName","src":"1771:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1770:17:52"},"returnParameters":{"id":10439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10456,"src":"1826:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10437,"name":"address","nodeType":"ElementaryTypeName","src":"1826:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1825:9:52"},"scope":10513,"src":"1755:635:52","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[10557],"body":{"id":10471,"nodeType":"Block","src":"2550:67:52","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10465,"name":"_packedUserInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10365,"src":"2567:15:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10467,"indexExpression":{"id":10466,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10459,"src":"2583:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2567:24:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":10468,"name":"_BITPOS_EXPIRES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10361,"src":"2595:15:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2567:43:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10464,"id":10470,"nodeType":"Return","src":"2560:50:52"}]},"documentation":{"id":10457,"nodeType":"StructuredDocumentation","src":"2396:64:52","text":" @dev Returns the user's expires of `tokenId`."},"functionSelector":"8fc88c48","id":10472,"implemented":true,"kind":"function","modifiers":[],"name":"userExpires","nameLocation":"2474:11:52","nodeType":"FunctionDefinition","overrides":{"id":10461,"nodeType":"OverrideSpecifier","overrides":[],"src":"2523:8:52"},"parameters":{"id":10460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10459,"mutability":"mutable","name":"tokenId","nameLocation":"2494:7:52","nodeType":"VariableDeclaration","scope":10472,"src":"2486:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10458,"name":"uint256","nodeType":"ElementaryTypeName","src":"2486:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2485:17:52"},"returnParameters":{"id":10464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10472,"src":"2541:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10462,"name":"uint256","nodeType":"ElementaryTypeName","src":"2541:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2540:9:52"},"scope":10513,"src":"2465:152:52","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8853,10208],"body":{"id":10492,"nodeType":"Block","src":"2802:223:52","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10485,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10475,"src":"2977:11:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":10483,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2953:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC4907A_$10513_$","typeString":"type(contract super ERC4907A)"}},"id":10484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":8853,"src":"2953:23:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":10486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2953:36:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":10489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10487,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10475,"src":"2993:11:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30786164303932623563","id":10488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3008:10:52","typeDescriptions":{"typeIdentifier":"t_rational_2903059292_by_1","typeString":"int_const 2903059292"},"value":"0xad092b5c"},"src":"2993:25:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2953:65:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10482,"id":10491,"nodeType":"Return","src":"2946:72:52"}]},"documentation":{"id":10473,"nodeType":"StructuredDocumentation","src":"2623:64:52","text":" @dev Override of {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":10493,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2701:17:52","nodeType":"FunctionDefinition","overrides":{"id":10479,"nodeType":"OverrideSpecifier","overrides":[{"id":10477,"name":"ERC721A","nodeType":"IdentifierPath","referencedDeclaration":10143,"src":"2768:7:52"},{"id":10478,"name":"IERC721A","nodeType":"IdentifierPath","referencedDeclaration":10349,"src":"2777:8:52"}],"src":"2759:27:52"},"parameters":{"id":10476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10475,"mutability":"mutable","name":"interfaceId","nameLocation":"2726:11:52","nodeType":"VariableDeclaration","scope":10493,"src":"2719:18:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10474,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2719:6:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2718:20:52"},"returnParameters":{"id":10482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10493,"src":"2796:4:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10480,"name":"bool","nodeType":"ElementaryTypeName","src":"2796:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2795:6:52"},"scope":10513,"src":"2692:333:52","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":10511,"nodeType":"Block","src":"3209:66:52","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":10505,"name":"_packedUserInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10365,"src":"3242:15:52","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":10507,"indexExpression":{"id":10506,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10496,"src":"3258:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3242:24:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3234:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":10503,"name":"uint160","nodeType":"ElementaryTypeName","src":"3234:7:52","typeDescriptions":{}}},"id":10508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3234:33:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":10502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3226:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10501,"name":"address","nodeType":"ElementaryTypeName","src":"3226:7:52","typeDescriptions":{}}},"id":10509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3226:42:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10500,"id":10510,"nodeType":"Return","src":"3219:49:52"}]},"documentation":{"id":10494,"nodeType":"StructuredDocumentation","src":"3031:91:52","text":" @dev Returns the user address for `tokenId`, ignoring the expiry status."},"id":10512,"implemented":true,"kind":"function","modifiers":[],"name":"_explicitUserOf","nameLocation":"3136:15:52","nodeType":"FunctionDefinition","parameters":{"id":10497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10496,"mutability":"mutable","name":"tokenId","nameLocation":"3160:7:52","nodeType":"VariableDeclaration","scope":10512,"src":"3152:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10495,"name":"uint256","nodeType":"ElementaryTypeName","src":"3152:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3151:17:52"},"returnParameters":{"id":10500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10499,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10512,"src":"3200:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10498,"name":"address","nodeType":"ElementaryTypeName","src":"3200:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3199:9:52"},"scope":10513,"src":"3127:148:52","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":10514,"src":"406:2871:52","usedErrors":[10149,10152,10155,10158,10161,10164,10167,10170,10173,10176,10179,10182,10185,10522]}],"src":"84:3194:52"},"id":52},"erc721a/contracts/extensions/IERC4907A.sol":{"ast":{"absolutePath":"erc721a/contracts/extensions/IERC4907A.sol","exportedSymbols":{"IERC4907A":[10558],"IERC721A":[10349]},"id":10559,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10515,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"84:23:53"},{"absolutePath":"erc721a/contracts/IERC721A.sol","file":"../IERC721A.sol","id":10516,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10559,"sourceUnit":10350,"src":"109:25:53","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10518,"name":"IERC721A","nodeType":"IdentifierPath","referencedDeclaration":10349,"src":"198:8:53"},"id":10519,"nodeType":"InheritanceSpecifier","src":"198:8:53"}],"canonicalName":"IERC4907A","contractDependencies":[],"contractKind":"interface","documentation":{"id":10517,"nodeType":"StructuredDocumentation","src":"136:38:53","text":" @dev Interface of ERC4907A."},"fullyImplemented":false,"id":10558,"linearizedBaseContracts":[10558,10349],"name":"IERC4907A","nameLocation":"185:9:53","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10520,"nodeType":"StructuredDocumentation","src":"213:76:53","text":" The caller must own the token or be an approved operator."},"errorSelector":"4f1dd8e8","id":10522,"name":"SetUserCallerNotOwnerNorApproved","nameLocation":"300:32:53","nodeType":"ErrorDefinition","parameters":{"id":10521,"nodeType":"ParameterList","parameters":[],"src":"332:2:53"},"src":"294:41:53"},{"anonymous":false,"documentation":{"id":10523,"nodeType":"StructuredDocumentation","src":"341:174:53","text":" @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\n The zero address for user indicates that there is no user address."},"eventSelector":"4e06b4e7000e659094299b3533b47b6aa8ad048e95e872d23d1f4ee55af89cfe","id":10531,"name":"UpdateUser","nameLocation":"526:10:53","nodeType":"EventDefinition","parameters":{"id":10530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10525,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"553:7:53","nodeType":"VariableDeclaration","scope":10531,"src":"537:23:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10524,"name":"uint256","nodeType":"ElementaryTypeName","src":"537:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10527,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"578:4:53","nodeType":"VariableDeclaration","scope":10531,"src":"562:20:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10526,"name":"address","nodeType":"ElementaryTypeName","src":"562:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10529,"indexed":false,"mutability":"mutable","name":"expires","nameLocation":"591:7:53","nodeType":"VariableDeclaration","scope":10531,"src":"584:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10528,"name":"uint64","nodeType":"ElementaryTypeName","src":"584:6:53","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"536:63:53"},"src":"520:80:53"},{"documentation":{"id":10532,"nodeType":"StructuredDocumentation","src":"606:222:53","text":" @dev Sets the `user` and `expires` for `tokenId`.\n The zero address indicates there is no user.\n Requirements:\n - The caller must own `tokenId` or be an approved operator."},"functionSelector":"e030565e","id":10541,"implemented":false,"kind":"function","modifiers":[],"name":"setUser","nameLocation":"842:7:53","nodeType":"FunctionDefinition","parameters":{"id":10539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10534,"mutability":"mutable","name":"tokenId","nameLocation":"867:7:53","nodeType":"VariableDeclaration","scope":10541,"src":"859:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10533,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10536,"mutability":"mutable","name":"user","nameLocation":"892:4:53","nodeType":"VariableDeclaration","scope":10541,"src":"884:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10535,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10538,"mutability":"mutable","name":"expires","nameLocation":"913:7:53","nodeType":"VariableDeclaration","scope":10541,"src":"906:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10537,"name":"uint64","nodeType":"ElementaryTypeName","src":"906:6:53","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"849:77:53"},"returnParameters":{"id":10540,"nodeType":"ParameterList","parameters":[],"src":"935:0:53"},"scope":10558,"src":"833:103:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10542,"nodeType":"StructuredDocumentation","src":"942:146:53","text":" @dev Returns the user address for `tokenId`.\n The zero address indicates that there is no user or if the user is expired."},"functionSelector":"c2f1f14a","id":10549,"implemented":false,"kind":"function","modifiers":[],"name":"userOf","nameLocation":"1102:6:53","nodeType":"FunctionDefinition","parameters":{"id":10545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10544,"mutability":"mutable","name":"tokenId","nameLocation":"1117:7:53","nodeType":"VariableDeclaration","scope":10549,"src":"1109:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10543,"name":"uint256","nodeType":"ElementaryTypeName","src":"1109:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1108:17:53"},"returnParameters":{"id":10548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10547,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10549,"src":"1149:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10546,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1148:9:53"},"scope":10558,"src":"1093:65:53","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10550,"nodeType":"StructuredDocumentation","src":"1164:64:53","text":" @dev Returns the user's expires of `tokenId`."},"functionSelector":"8fc88c48","id":10557,"implemented":false,"kind":"function","modifiers":[],"name":"userExpires","nameLocation":"1242:11:53","nodeType":"FunctionDefinition","parameters":{"id":10553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10552,"mutability":"mutable","name":"tokenId","nameLocation":"1262:7:53","nodeType":"VariableDeclaration","scope":10557,"src":"1254:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10551,"name":"uint256","nodeType":"ElementaryTypeName","src":"1254:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1253:17:53"},"returnParameters":{"id":10556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10555,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10557,"src":"1294:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10554,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1293:9:53"},"scope":10558,"src":"1233:70:53","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10559,"src":"175:1130:53","usedErrors":[10149,10152,10155,10158,10161,10164,10167,10170,10173,10176,10179,10182,10185,10522]}],"src":"84:1222:53"},"id":53}},"contracts":{"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"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.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.","kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_157":{"entryPoint":null,"id":157,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":292,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":475,"id":null,"parameterSlots":2,"returnSlots":2},"extract_byte_array_length":{"entryPoint":581,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x41":{"entryPoint":270,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1985:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:54"},"nodeType":"YulFunctionCall","src":"66:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:54"},"nodeType":"YulFunctionCall","src":"56:31:54"},"nodeType":"YulExpressionStatement","src":"56:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:54"},"nodeType":"YulFunctionCall","src":"96:15:54"},"nodeType":"YulExpressionStatement","src":"96:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:54"},"nodeType":"YulFunctionCall","src":"120:15:54"},"nodeType":"YulExpressionStatement","src":"120:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:54"},{"body":{"nodeType":"YulBlock","src":"210:821:54","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:54"},"nodeType":"YulFunctionCall","src":"261:12:54"},"nodeType":"YulExpressionStatement","src":"261:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:54"},"nodeType":"YulFunctionCall","src":"234:17:54"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:54"},"nodeType":"YulFunctionCall","src":"230:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:54"},"nodeType":"YulFunctionCall","src":"223:35:54"},"nodeType":"YulIf","src":"220:55:54"},{"nodeType":"YulVariableDeclaration","src":"284:23:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:54"},"nodeType":"YulFunctionCall","src":"294:13:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:54","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:54","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:54"},"nodeType":"YulFunctionCall","src":"330:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:54"},"nodeType":"YulFunctionCall","src":"326:18:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:54"},"nodeType":"YulFunctionCall","src":"369:18:54"},"nodeType":"YulExpressionStatement","src":"369:18:54"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:54"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:54"},"nodeType":"YulFunctionCall","src":"356:10:54"},"nodeType":"YulIf","src":"353:36:54"},{"nodeType":"YulVariableDeclaration","src":"398:17:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:54","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:54"},"nodeType":"YulFunctionCall","src":"408:7:54"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:54"},"nodeType":"YulFunctionCall","src":"438:9:54"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:54"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:54"},"nodeType":"YulFunctionCall","src":"498:13:54"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:54"},"nodeType":"YulFunctionCall","src":"494:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:54","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:54"},"nodeType":"YulFunctionCall","src":"490:31:54"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:54"},"nodeType":"YulFunctionCall","src":"486:40:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:54"},"nodeType":"YulFunctionCall","src":"474:53:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:54"},"nodeType":"YulFunctionCall","src":"588:18:54"},"nodeType":"YulExpressionStatement","src":"588:18:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:54"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:54"},"nodeType":"YulFunctionCall","src":"542:18:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:54"},"nodeType":"YulFunctionCall","src":"562:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:54"},"nodeType":"YulFunctionCall","src":"539:46:54"},"nodeType":"YulIf","src":"536:72:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:54"},"nodeType":"YulFunctionCall","src":"617:22:54"},"nodeType":"YulExpressionStatement","src":"617:22:54"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:54"},"nodeType":"YulFunctionCall","src":"648:18:54"},"nodeType":"YulExpressionStatement","src":"648:18:54"},{"nodeType":"YulVariableDeclaration","src":"675:14:54","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:54","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:54"},"nodeType":"YulFunctionCall","src":"737:12:54"},"nodeType":"YulExpressionStatement","src":"737:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:54"},"nodeType":"YulFunctionCall","src":"708:15:54"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:54"},"nodeType":"YulFunctionCall","src":"704:24:54"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:54"},"nodeType":"YulFunctionCall","src":"701:33:54"},"nodeType":"YulIf","src":"698:53:54"},{"nodeType":"YulVariableDeclaration","src":"760:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:54"},"nodeType":"YulFunctionCall","src":"850:14:54"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:54"},"nodeType":"YulFunctionCall","src":"846:23:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:54"},"nodeType":"YulFunctionCall","src":"881:14:54"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:54"},"nodeType":"YulFunctionCall","src":"877:23:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:54"},"nodeType":"YulFunctionCall","src":"871:30:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:54"},"nodeType":"YulFunctionCall","src":"839:63:54"},"nodeType":"YulExpressionStatement","src":"839:63:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:54"},"nodeType":"YulFunctionCall","src":"787:9:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:54","statements":[{"nodeType":"YulAssignment","src":"799:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:54"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:54"},"nodeType":"YulFunctionCall","src":"804:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:54","statements":[]},"src":"779:133:54"},{"body":{"nodeType":"YulBlock","src":"942:59:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"971:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:54"},"nodeType":"YulFunctionCall","src":"967:15:54"},{"name":"_4","nodeType":"YulIdentifier","src":"984:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"963:3:54"},"nodeType":"YulFunctionCall","src":"963:24:54"},{"kind":"number","nodeType":"YulLiteral","src":"989:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"956:6:54"},"nodeType":"YulFunctionCall","src":"956:35:54"},"nodeType":"YulExpressionStatement","src":"956:35:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"927:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"930:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"924:2:54"},"nodeType":"YulFunctionCall","src":"924:9:54"},"nodeType":"YulIf","src":"921:80:54"},{"nodeType":"YulAssignment","src":"1010:15:54","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1019:6:54"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1010:5:54"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:54","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:54","type":""}],"src":"146:885:54"},{"body":{"nodeType":"YulBlock","src":"1154:444:54","statements":[{"body":{"nodeType":"YulBlock","src":"1200:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1209:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1212:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1202:6:54"},"nodeType":"YulFunctionCall","src":"1202:12:54"},"nodeType":"YulExpressionStatement","src":"1202:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1175:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1184:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1171:3:54"},"nodeType":"YulFunctionCall","src":"1171:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1196:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1167:3:54"},"nodeType":"YulFunctionCall","src":"1167:32:54"},"nodeType":"YulIf","src":"1164:52:54"},{"nodeType":"YulVariableDeclaration","src":"1225:30:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1245:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1239:5:54"},"nodeType":"YulFunctionCall","src":"1239:16:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1229:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1264:28:54","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1282:2:54","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1278:3:54"},"nodeType":"YulFunctionCall","src":"1278:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1274:3:54"},"nodeType":"YulFunctionCall","src":"1274:18:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1268:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1319:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1328:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1331:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1321:6:54"},"nodeType":"YulFunctionCall","src":"1321:12:54"},"nodeType":"YulExpressionStatement","src":"1321:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1307:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"1315:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1304:2:54"},"nodeType":"YulFunctionCall","src":"1304:14:54"},"nodeType":"YulIf","src":"1301:34:54"},{"nodeType":"YulAssignment","src":"1344:71:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1387:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"1398:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1383:3:54"},"nodeType":"YulFunctionCall","src":"1383:22:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1407:7:54"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1354:28:54"},"nodeType":"YulFunctionCall","src":"1354:61:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1344:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"1424:41:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1450:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1461:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1446:3:54"},"nodeType":"YulFunctionCall","src":"1446:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1440:5:54"},"nodeType":"YulFunctionCall","src":"1440:25:54"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1428:8:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1494:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1503:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1506:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1496:6:54"},"nodeType":"YulFunctionCall","src":"1496:12:54"},"nodeType":"YulExpressionStatement","src":"1496:12:54"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1480:8:54"},{"name":"_1","nodeType":"YulIdentifier","src":"1490:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1477:2:54"},"nodeType":"YulFunctionCall","src":"1477:16:54"},"nodeType":"YulIf","src":"1474:36:54"},{"nodeType":"YulAssignment","src":"1519:73:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1562:9:54"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1573:8:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1558:3:54"},"nodeType":"YulFunctionCall","src":"1558:24:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1584:7:54"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1529:28:54"},"nodeType":"YulFunctionCall","src":"1529:63:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1519:6:54"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1112:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1123:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1135:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1143:6:54","type":""}],"src":"1036:562:54"},{"body":{"nodeType":"YulBlock","src":"1658:325:54","statements":[{"nodeType":"YulAssignment","src":"1668:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1682:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1685:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1678:3:54"},"nodeType":"YulFunctionCall","src":"1678:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1668:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"1699:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1729:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"1735:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1725:3:54"},"nodeType":"YulFunctionCall","src":"1725:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1703:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1776:31:54","statements":[{"nodeType":"YulAssignment","src":"1778:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1792:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1800:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1788:3:54"},"nodeType":"YulFunctionCall","src":"1788:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1778:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1756:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1749:6:54"},"nodeType":"YulFunctionCall","src":"1749:26:54"},"nodeType":"YulIf","src":"1746:61:54"},{"body":{"nodeType":"YulBlock","src":"1866:111:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1887:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1894:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1899:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1890:3:54"},"nodeType":"YulFunctionCall","src":"1890:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1880:6:54"},"nodeType":"YulFunctionCall","src":"1880:31:54"},"nodeType":"YulExpressionStatement","src":"1880:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1931:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1934:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1924:6:54"},"nodeType":"YulFunctionCall","src":"1924:15:54"},"nodeType":"YulExpressionStatement","src":"1924:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1959:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1962:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1952:6:54"},"nodeType":"YulFunctionCall","src":"1952:15:54"},"nodeType":"YulExpressionStatement","src":"1952:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1822:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1845:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1853:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1842:2:54"},"nodeType":"YulFunctionCall","src":"1842:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1819:2:54"},"nodeType":"YulFunctionCall","src":"1819:38:54"},"nodeType":"YulIf","src":"1816:161:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1638:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1647:6:54","type":""}],"src":"1603:380:54"}]},"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 abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        if gt(i, _1)\n        {\n            mstore(add(add(memPtr, _1), _4), 0)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162000dfa38038062000dfa8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000281565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b6020821081036200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b610b6980620002916000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af4565b61040d565b60606004805461020f90610aa1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d7908490610af4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b602082108103610aee577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea2646970667358221220a60fab3effe796aef19e37978ae96350311edfb525f1e2233ce1888bc35e2ca464736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xDFA CODESIZE SUB DUP1 PUSH3 0xDFA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1DB JUMP JUMPDEST DUP2 MLOAD PUSH3 0x49 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x5F SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP POP POP PUSH3 0x281 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x76 SWAP1 PUSH3 0x245 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x9A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xE5 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xE5 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xC8 JUMP JUMPDEST POP PUSH3 0xF3 SWAP3 SWAP2 POP PUSH3 0xF7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xF3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0xF8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x153 JUMPI PUSH3 0x153 PUSH3 0x10E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x17E JUMPI PUSH3 0x17E PUSH3 0x10E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x1BF JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x1A0 JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x1D1 JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x215 DUP7 DUP4 DUP8 ADD PUSH3 0x124 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x23B DUP6 DUP3 DUP7 ADD PUSH3 0x124 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x25A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x27B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB69 DUP1 PUSH3 0x291 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x94A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9E6 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xA10 JUMP JUMPDEST PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E6 JUMP JUMPDEST PUSH2 0x2CE JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0xA4C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x31A JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E6 JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E6 JUMP JUMPDEST PUSH2 0x3FF JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xAA1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x23B SWAP1 PUSH2 0xAA1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x40D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B8 DUP6 DUP3 DUP6 PUSH2 0x5C0 JUMP JUMPDEST PUSH2 0x2C3 DUP6 DUP6 DUP6 PUSH2 0x697 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2A0 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x315 SWAP1 DUP8 SWAP1 PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x40D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xAA1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C3 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x40D JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x697 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x4AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x552 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x691 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x684 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH2 0x691 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x40D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x73A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x893 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8D7 SWAP1 DUP5 SWAP1 PUSH2 0xAF4 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x93D SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x691 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x977 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x95B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA02 DUP4 PUSH2 0x9BD JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA2E DUP5 PUSH2 0x9BD JUMP JUMPDEST SWAP3 POP PUSH2 0xA3C PUSH1 0x20 DUP6 ADD PUSH2 0x9BD JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA67 DUP3 PUSH2 0x9BD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8A DUP4 PUSH2 0x9BD JUMP JUMPDEST SWAP2 POP PUSH2 0xA98 PUSH1 0x20 DUP5 ADD PUSH2 0x9BD JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAB5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xAEE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xB2E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xF 0xAB RETURNDATACOPY SELFDESTRUCT 0xE7 SWAP7 0xAE CALL SWAP15 CALLDATACOPY SWAP8 DUP11 0xE9 PUSH4 0x50311EDF 0xB5 0x25 CALL 0xE2 0x23 EXTCODECOPY 0xE1 DUP9 DUP12 0xC3 0x5E 0x2C LOG4 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"1403:11214:1:-:0;;;1978:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2067:17:1;;;;:7;;:17;;;;;:::i;:::-;;1978:113;;1403:11214;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1403:11214:1;;;-1:-1:-1;1403:11214:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:54;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:54;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:54;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:54:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:54;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;1403:11214:1;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_697":{"entryPoint":null,"id":697,"parameterSlots":3,"returnSlots":0},"@_approve_632":{"entryPoint":1037,"id":632,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_686":{"entryPoint":null,"id":686,"parameterSlots":3,"returnSlots":0},"@_msgSender_2136":{"entryPoint":null,"id":2136,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_675":{"entryPoint":1472,"id":675,"parameterSlots":3,"returnSlots":0},"@_transfer_459":{"entryPoint":1687,"id":459,"parameterSlots":3,"returnSlots":0},"@allowance_254":{"entryPoint":null,"id":254,"parameterSlots":2,"returnSlots":1},"@approve_279":{"entryPoint":658,"id":279,"parameterSlots":2,"returnSlots":1},"@balanceOf_211":{"entryPoint":null,"id":211,"parameterSlots":1,"returnSlots":1},"@decimals_187":{"entryPoint":null,"id":187,"parameterSlots":0,"returnSlots":1},"@decreaseAllowance_382":{"entryPoint":809,"id":382,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_341":{"entryPoint":718,"id":341,"parameterSlots":2,"returnSlots":1},"@name_167":{"entryPoint":512,"id":167,"parameterSlots":0,"returnSlots":1},"@symbol_177":{"entryPoint":794,"id":177,"parameterSlots":0,"returnSlots":1},"@totalSupply_197":{"entryPoint":null,"id":197,"parameterSlots":0,"returnSlots":1},"@transferFrom_312":{"entryPoint":682,"id":312,"parameterSlots":3,"returnSlots":1},"@transfer_236":{"entryPoint":1023,"id":236,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":2493,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2636,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":2670,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2576,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2534,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_bool__to_t_bool__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":2378,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2804,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":2721,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6002:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"135:535:54","statements":[{"nodeType":"YulVariableDeclaration","src":"145:12:54","value":{"kind":"number","nodeType":"YulLiteral","src":"155:2:54","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"149:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"173:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"184:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"166:6:54"},"nodeType":"YulFunctionCall","src":"166:21:54"},"nodeType":"YulExpressionStatement","src":"166:21:54"},{"nodeType":"YulVariableDeclaration","src":"196:27:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"216:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"210:5:54"},"nodeType":"YulFunctionCall","src":"210:13:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"200:6:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"243:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"254:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"239:3:54"},"nodeType":"YulFunctionCall","src":"239:18:54"},{"name":"length","nodeType":"YulIdentifier","src":"259:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"232:6:54"},"nodeType":"YulFunctionCall","src":"232:34:54"},"nodeType":"YulExpressionStatement","src":"232:34:54"},{"nodeType":"YulVariableDeclaration","src":"275:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"284:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"279:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"344:90:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"373:9:54"},{"name":"i","nodeType":"YulIdentifier","src":"384:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"369:3:54"},"nodeType":"YulFunctionCall","src":"369:17:54"},{"kind":"number","nodeType":"YulLiteral","src":"388:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:54"},"nodeType":"YulFunctionCall","src":"365:26:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"407:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"415:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:54"},"nodeType":"YulFunctionCall","src":"403:14:54"},{"name":"_1","nodeType":"YulIdentifier","src":"419:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"399:3:54"},"nodeType":"YulFunctionCall","src":"399:23:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"393:5:54"},"nodeType":"YulFunctionCall","src":"393:30:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"358:6:54"},"nodeType":"YulFunctionCall","src":"358:66:54"},"nodeType":"YulExpressionStatement","src":"358:66:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"305:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"308:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"302:2:54"},"nodeType":"YulFunctionCall","src":"302:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"316:19:54","statements":[{"nodeType":"YulAssignment","src":"318:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"327:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"330:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"323:3:54"},"nodeType":"YulFunctionCall","src":"323:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"318:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"298:3:54","statements":[]},"src":"294:140:54"},{"body":{"nodeType":"YulBlock","src":"468:66:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"497:9:54"},{"name":"length","nodeType":"YulIdentifier","src":"508:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"493:3:54"},"nodeType":"YulFunctionCall","src":"493:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"517:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"489:3:54"},"nodeType":"YulFunctionCall","src":"489:31:54"},{"kind":"number","nodeType":"YulLiteral","src":"522:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"482:6:54"},"nodeType":"YulFunctionCall","src":"482:42:54"},"nodeType":"YulExpressionStatement","src":"482:42:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"449:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"452:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"446:2:54"},"nodeType":"YulFunctionCall","src":"446:13:54"},"nodeType":"YulIf","src":"443:91:54"},{"nodeType":"YulAssignment","src":"543:121:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"559:9:54"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"578:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"586:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"574:3:54"},"nodeType":"YulFunctionCall","src":"574:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"591:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"570:3:54"},"nodeType":"YulFunctionCall","src":"570:88:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"555:3:54"},"nodeType":"YulFunctionCall","src":"555:104:54"},{"kind":"number","nodeType":"YulLiteral","src":"661:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"551:3:54"},"nodeType":"YulFunctionCall","src":"551:113:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"543:4:54"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"104:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"115:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"126:4:54","type":""}],"src":"14:656:54"},{"body":{"nodeType":"YulBlock","src":"724:147:54","statements":[{"nodeType":"YulAssignment","src":"734:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"756:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"743:12:54"},"nodeType":"YulFunctionCall","src":"743:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"734:5:54"}]},{"body":{"nodeType":"YulBlock","src":"849:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"858:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"861:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"851:6:54"},"nodeType":"YulFunctionCall","src":"851:12:54"},"nodeType":"YulExpressionStatement","src":"851:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"785:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"796:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"803:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"792:3:54"},"nodeType":"YulFunctionCall","src":"792:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"782:2:54"},"nodeType":"YulFunctionCall","src":"782:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"775:6:54"},"nodeType":"YulFunctionCall","src":"775:73:54"},"nodeType":"YulIf","src":"772:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"703:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"714:5:54","type":""}],"src":"675:196:54"},{"body":{"nodeType":"YulBlock","src":"963:167:54","statements":[{"body":{"nodeType":"YulBlock","src":"1009:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1018:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1021:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1011:6:54"},"nodeType":"YulFunctionCall","src":"1011:12:54"},"nodeType":"YulExpressionStatement","src":"1011:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"984:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"993:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"980:3:54"},"nodeType":"YulFunctionCall","src":"980:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1005:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"976:3:54"},"nodeType":"YulFunctionCall","src":"976:32:54"},"nodeType":"YulIf","src":"973:52:54"},{"nodeType":"YulAssignment","src":"1034:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1063:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1044:18:54"},"nodeType":"YulFunctionCall","src":"1044:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1034:6:54"}]},{"nodeType":"YulAssignment","src":"1082:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1109:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1105:3:54"},"nodeType":"YulFunctionCall","src":"1105:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1092:12:54"},"nodeType":"YulFunctionCall","src":"1092:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1082:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"921:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"932:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"944:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"952:6:54","type":""}],"src":"876:254:54"},{"body":{"nodeType":"YulBlock","src":"1230:92:54","statements":[{"nodeType":"YulAssignment","src":"1240:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1252:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1263:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1248:3:54"},"nodeType":"YulFunctionCall","src":"1248:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1240:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1282:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1307:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1300:6:54"},"nodeType":"YulFunctionCall","src":"1300:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1293:6:54"},"nodeType":"YulFunctionCall","src":"1293:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1275:6:54"},"nodeType":"YulFunctionCall","src":"1275:41:54"},"nodeType":"YulExpressionStatement","src":"1275:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1199:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1210:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1221:4:54","type":""}],"src":"1135:187:54"},{"body":{"nodeType":"YulBlock","src":"1428:76:54","statements":[{"nodeType":"YulAssignment","src":"1438:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1450:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1461:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1446:3:54"},"nodeType":"YulFunctionCall","src":"1446:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1438:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1480:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"1491:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1473:6:54"},"nodeType":"YulFunctionCall","src":"1473:25:54"},"nodeType":"YulExpressionStatement","src":"1473:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1397:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1408:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1419:4:54","type":""}],"src":"1327:177:54"},{"body":{"nodeType":"YulBlock","src":"1613:224:54","statements":[{"body":{"nodeType":"YulBlock","src":"1659:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1668:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1671:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1661:6:54"},"nodeType":"YulFunctionCall","src":"1661:12:54"},"nodeType":"YulExpressionStatement","src":"1661:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1634:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1643:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1630:3:54"},"nodeType":"YulFunctionCall","src":"1630:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1655:2:54","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1626:3:54"},"nodeType":"YulFunctionCall","src":"1626:32:54"},"nodeType":"YulIf","src":"1623:52:54"},{"nodeType":"YulAssignment","src":"1684:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1713:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1694:18:54"},"nodeType":"YulFunctionCall","src":"1694:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1684:6:54"}]},{"nodeType":"YulAssignment","src":"1732:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1765:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1776:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1761:3:54"},"nodeType":"YulFunctionCall","src":"1761:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1742:18:54"},"nodeType":"YulFunctionCall","src":"1742:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1732:6:54"}]},{"nodeType":"YulAssignment","src":"1789:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1816:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1827:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1812:3:54"},"nodeType":"YulFunctionCall","src":"1812:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1799:12:54"},"nodeType":"YulFunctionCall","src":"1799:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1789:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1563:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1574:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1586:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1594:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1602:6:54","type":""}],"src":"1509:328:54"},{"body":{"nodeType":"YulBlock","src":"1939:87:54","statements":[{"nodeType":"YulAssignment","src":"1949:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1961:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1972:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1957:3:54"},"nodeType":"YulFunctionCall","src":"1957:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1949:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1991:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2006:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2014:4:54","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2002:3:54"},"nodeType":"YulFunctionCall","src":"2002:17:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1984:6:54"},"nodeType":"YulFunctionCall","src":"1984:36:54"},"nodeType":"YulExpressionStatement","src":"1984:36:54"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1908:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1919:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1930:4:54","type":""}],"src":"1842:184:54"},{"body":{"nodeType":"YulBlock","src":"2101:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"2147:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2156:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2159:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2149:6:54"},"nodeType":"YulFunctionCall","src":"2149:12:54"},"nodeType":"YulExpressionStatement","src":"2149:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2122:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2131:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2118:3:54"},"nodeType":"YulFunctionCall","src":"2118:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2143:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2114:3:54"},"nodeType":"YulFunctionCall","src":"2114:32:54"},"nodeType":"YulIf","src":"2111:52:54"},{"nodeType":"YulAssignment","src":"2172:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2201:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2182:18:54"},"nodeType":"YulFunctionCall","src":"2182:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2172:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2067:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2078:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2090:6:54","type":""}],"src":"2031:186:54"},{"body":{"nodeType":"YulBlock","src":"2309:173:54","statements":[{"body":{"nodeType":"YulBlock","src":"2355:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2364:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2367:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2357:6:54"},"nodeType":"YulFunctionCall","src":"2357:12:54"},"nodeType":"YulExpressionStatement","src":"2357:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2330:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2339:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2326:3:54"},"nodeType":"YulFunctionCall","src":"2326:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2351:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2322:3:54"},"nodeType":"YulFunctionCall","src":"2322:32:54"},"nodeType":"YulIf","src":"2319:52:54"},{"nodeType":"YulAssignment","src":"2380:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2409:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2390:18:54"},"nodeType":"YulFunctionCall","src":"2390:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2380:6:54"}]},{"nodeType":"YulAssignment","src":"2428:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2461:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2472:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2457:3:54"},"nodeType":"YulFunctionCall","src":"2457:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2438:18:54"},"nodeType":"YulFunctionCall","src":"2438:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2428:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2267:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2278:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2290:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2298:6:54","type":""}],"src":"2222:260:54"},{"body":{"nodeType":"YulBlock","src":"2542:382:54","statements":[{"nodeType":"YulAssignment","src":"2552:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2566:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"2569:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2562:3:54"},"nodeType":"YulFunctionCall","src":"2562:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2552:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"2583:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2613:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"2619:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2609:3:54"},"nodeType":"YulFunctionCall","src":"2609:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"2587:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2660:31:54","statements":[{"nodeType":"YulAssignment","src":"2662:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2676:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2684:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2672:3:54"},"nodeType":"YulFunctionCall","src":"2672:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2662:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2640:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2633:6:54"},"nodeType":"YulFunctionCall","src":"2633:26:54"},"nodeType":"YulIf","src":"2630:61:54"},{"body":{"nodeType":"YulBlock","src":"2750:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2774:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2764:6:54"},"nodeType":"YulFunctionCall","src":"2764:88:54"},"nodeType":"YulExpressionStatement","src":"2764:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2872:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2875:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2865:6:54"},"nodeType":"YulFunctionCall","src":"2865:15:54"},"nodeType":"YulExpressionStatement","src":"2865:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2900:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2903:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2893:6:54"},"nodeType":"YulFunctionCall","src":"2893:15:54"},"nodeType":"YulExpressionStatement","src":"2893:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2706:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2729:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2737:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2726:2:54"},"nodeType":"YulFunctionCall","src":"2726:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2703:2:54"},"nodeType":"YulFunctionCall","src":"2703:38:54"},"nodeType":"YulIf","src":"2700:218:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2522:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2531:6:54","type":""}],"src":"2487:437:54"},{"body":{"nodeType":"YulBlock","src":"2977:234:54","statements":[{"body":{"nodeType":"YulBlock","src":"3012:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3033:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3036:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3026:6:54"},"nodeType":"YulFunctionCall","src":"3026:88:54"},"nodeType":"YulExpressionStatement","src":"3026:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3134:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3137:4:54","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3127:6:54"},"nodeType":"YulFunctionCall","src":"3127:15:54"},"nodeType":"YulExpressionStatement","src":"3127:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3162:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3165:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3155:6:54"},"nodeType":"YulFunctionCall","src":"3155:15:54"},"nodeType":"YulExpressionStatement","src":"3155:15:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2993:1:54"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"3000:1:54"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2996:3:54"},"nodeType":"YulFunctionCall","src":"2996:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2990:2:54"},"nodeType":"YulFunctionCall","src":"2990:13:54"},"nodeType":"YulIf","src":"2987:193:54"},{"nodeType":"YulAssignment","src":"3189:16:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3200:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"3203:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3196:3:54"},"nodeType":"YulFunctionCall","src":"3196:9:54"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3189:3:54"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2960:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"2963:1:54","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"2969:3:54","type":""}],"src":"2929:282:54"},{"body":{"nodeType":"YulBlock","src":"3390:227:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3407:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3418:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3400:6:54"},"nodeType":"YulFunctionCall","src":"3400:21:54"},"nodeType":"YulExpressionStatement","src":"3400:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3441:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3452:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3437:3:54"},"nodeType":"YulFunctionCall","src":"3437:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"3457:2:54","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3430:6:54"},"nodeType":"YulFunctionCall","src":"3430:30:54"},"nodeType":"YulExpressionStatement","src":"3430:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3480:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3491:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3476:3:54"},"nodeType":"YulFunctionCall","src":"3476:18:54"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"3496:34:54","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3469:6:54"},"nodeType":"YulFunctionCall","src":"3469:62:54"},"nodeType":"YulExpressionStatement","src":"3469:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3551:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3562:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3547:3:54"},"nodeType":"YulFunctionCall","src":"3547:18:54"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"3567:7:54","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3540:6:54"},"nodeType":"YulFunctionCall","src":"3540:35:54"},"nodeType":"YulExpressionStatement","src":"3540:35:54"},{"nodeType":"YulAssignment","src":"3584:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3596:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3607:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3592:3:54"},"nodeType":"YulFunctionCall","src":"3592:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3584:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3367:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3381:4:54","type":""}],"src":"3216:401:54"},{"body":{"nodeType":"YulBlock","src":"3796:226:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3813:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3824:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3806:6:54"},"nodeType":"YulFunctionCall","src":"3806:21:54"},"nodeType":"YulExpressionStatement","src":"3806:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3847:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3858:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3843:3:54"},"nodeType":"YulFunctionCall","src":"3843:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"3863:2:54","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3836:6:54"},"nodeType":"YulFunctionCall","src":"3836:30:54"},"nodeType":"YulExpressionStatement","src":"3836:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3886:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3897:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3882:3:54"},"nodeType":"YulFunctionCall","src":"3882:18:54"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"3902:34:54","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3875:6:54"},"nodeType":"YulFunctionCall","src":"3875:62:54"},"nodeType":"YulExpressionStatement","src":"3875:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3957:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3968:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3953:3:54"},"nodeType":"YulFunctionCall","src":"3953:18:54"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"3973:6:54","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3946:6:54"},"nodeType":"YulFunctionCall","src":"3946:34:54"},"nodeType":"YulExpressionStatement","src":"3946:34:54"},{"nodeType":"YulAssignment","src":"3989:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4001:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4012:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3997:3:54"},"nodeType":"YulFunctionCall","src":"3997:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3989:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3773:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3787:4:54","type":""}],"src":"3622:400:54"},{"body":{"nodeType":"YulBlock","src":"4201:224:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4218:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4229:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4211:6:54"},"nodeType":"YulFunctionCall","src":"4211:21:54"},"nodeType":"YulExpressionStatement","src":"4211:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4252:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4263:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4248:3:54"},"nodeType":"YulFunctionCall","src":"4248:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"4268:2:54","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4241:6:54"},"nodeType":"YulFunctionCall","src":"4241:30:54"},"nodeType":"YulExpressionStatement","src":"4241:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4291:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4302:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4287:3:54"},"nodeType":"YulFunctionCall","src":"4287:18:54"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"4307:34:54","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4280:6:54"},"nodeType":"YulFunctionCall","src":"4280:62:54"},"nodeType":"YulExpressionStatement","src":"4280:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4362:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4373:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4358:3:54"},"nodeType":"YulFunctionCall","src":"4358:18:54"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"4378:4:54","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4351:6:54"},"nodeType":"YulFunctionCall","src":"4351:32:54"},"nodeType":"YulExpressionStatement","src":"4351:32:54"},{"nodeType":"YulAssignment","src":"4392:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4404:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4415:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4400:3:54"},"nodeType":"YulFunctionCall","src":"4400:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4392:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4178:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4192:4:54","type":""}],"src":"4027:398:54"},{"body":{"nodeType":"YulBlock","src":"4604:179:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4621:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4632:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4614:6:54"},"nodeType":"YulFunctionCall","src":"4614:21:54"},"nodeType":"YulExpressionStatement","src":"4614:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4655:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4666:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4651:3:54"},"nodeType":"YulFunctionCall","src":"4651:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"4671:2:54","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4644:6:54"},"nodeType":"YulFunctionCall","src":"4644:30:54"},"nodeType":"YulExpressionStatement","src":"4644:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4694:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4705:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4690:3:54"},"nodeType":"YulFunctionCall","src":"4690:18:54"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"4710:31:54","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4683:6:54"},"nodeType":"YulFunctionCall","src":"4683:59:54"},"nodeType":"YulExpressionStatement","src":"4683:59:54"},{"nodeType":"YulAssignment","src":"4751:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4763:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4774:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4759:3:54"},"nodeType":"YulFunctionCall","src":"4759:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4751:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4581:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4595:4:54","type":""}],"src":"4430:353:54"},{"body":{"nodeType":"YulBlock","src":"4962:227:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4979:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4990:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4972:6:54"},"nodeType":"YulFunctionCall","src":"4972:21:54"},"nodeType":"YulExpressionStatement","src":"4972:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5013:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5024:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5009:3:54"},"nodeType":"YulFunctionCall","src":"5009:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5029:2:54","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5002:6:54"},"nodeType":"YulFunctionCall","src":"5002:30:54"},"nodeType":"YulExpressionStatement","src":"5002:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5052:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5063:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5048:3:54"},"nodeType":"YulFunctionCall","src":"5048:18:54"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"5068:34:54","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5041:6:54"},"nodeType":"YulFunctionCall","src":"5041:62:54"},"nodeType":"YulExpressionStatement","src":"5041:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5123:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5134:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5119:3:54"},"nodeType":"YulFunctionCall","src":"5119:18:54"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"5139:7:54","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5112:6:54"},"nodeType":"YulFunctionCall","src":"5112:35:54"},"nodeType":"YulExpressionStatement","src":"5112:35:54"},{"nodeType":"YulAssignment","src":"5156:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5168:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5179:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5164:3:54"},"nodeType":"YulFunctionCall","src":"5164:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5156:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4939:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4953:4:54","type":""}],"src":"4788:401:54"},{"body":{"nodeType":"YulBlock","src":"5368:225:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5385:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5396:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5378:6:54"},"nodeType":"YulFunctionCall","src":"5378:21:54"},"nodeType":"YulExpressionStatement","src":"5378:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5419:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5430:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5415:3:54"},"nodeType":"YulFunctionCall","src":"5415:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5435:2:54","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5408:6:54"},"nodeType":"YulFunctionCall","src":"5408:30:54"},"nodeType":"YulExpressionStatement","src":"5408:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5458:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5469:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5454:3:54"},"nodeType":"YulFunctionCall","src":"5454:18:54"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"5474:34:54","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5447:6:54"},"nodeType":"YulFunctionCall","src":"5447:62:54"},"nodeType":"YulExpressionStatement","src":"5447:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5529:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5540:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5525:3:54"},"nodeType":"YulFunctionCall","src":"5525:18:54"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"5545:5:54","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5518:6:54"},"nodeType":"YulFunctionCall","src":"5518:33:54"},"nodeType":"YulExpressionStatement","src":"5518:33:54"},{"nodeType":"YulAssignment","src":"5560:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5572:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5583:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5568:3:54"},"nodeType":"YulFunctionCall","src":"5568:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5560:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5345:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5359:4:54","type":""}],"src":"5194:399:54"},{"body":{"nodeType":"YulBlock","src":"5772:228:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5789:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5800:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5782:6:54"},"nodeType":"YulFunctionCall","src":"5782:21:54"},"nodeType":"YulExpressionStatement","src":"5782:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5823:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5834:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5819:3:54"},"nodeType":"YulFunctionCall","src":"5819:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5839:2:54","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5812:6:54"},"nodeType":"YulFunctionCall","src":"5812:30:54"},"nodeType":"YulExpressionStatement","src":"5812:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5862:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5873:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5858:3:54"},"nodeType":"YulFunctionCall","src":"5858:18:54"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"5878:34:54","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5851:6:54"},"nodeType":"YulFunctionCall","src":"5851:62:54"},"nodeType":"YulExpressionStatement","src":"5851:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5933:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5944:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5929:3:54"},"nodeType":"YulFunctionCall","src":"5929:18:54"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"5949:8:54","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5922:6:54"},"nodeType":"YulFunctionCall","src":"5922:36:54"},"nodeType":"YulExpressionStatement","src":"5922:36:54"},{"nodeType":"YulAssignment","src":"5967:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5979:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5990:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5975:3:54"},"nodeType":"YulFunctionCall","src":"5975:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5967:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5749:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5763:4:54","type":""}],"src":"5598:402:54"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { 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        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_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_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af4565b61040d565b60606004805461020f90610aa1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d7908490610af4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b602082108103610aee577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea2646970667358221220a60fab3effe796aef19e37978ae96350311edfb525f1e2233ce1888bc35e2ca464736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x94A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9E6 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xA10 JUMP JUMPDEST PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E6 JUMP JUMPDEST PUSH2 0x2CE JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0xA4C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x31A JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E6 JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E6 JUMP JUMPDEST PUSH2 0x3FF JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xAA1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x23B SWAP1 PUSH2 0xAA1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x40D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B8 DUP6 DUP3 DUP6 PUSH2 0x5C0 JUMP JUMPDEST PUSH2 0x2C3 DUP6 DUP6 DUP6 PUSH2 0x697 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2A0 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x315 SWAP1 DUP8 SWAP1 PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x40D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xAA1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C3 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x40D JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP2 DUP6 DUP6 PUSH2 0x697 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x4AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x552 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x691 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x684 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH2 0x691 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x40D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x73A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x893 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3E9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8D7 SWAP1 DUP5 SWAP1 PUSH2 0xAF4 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x93D SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x691 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x977 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x95B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA02 DUP4 PUSH2 0x9BD JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA2E DUP5 PUSH2 0x9BD JUMP JUMPDEST SWAP3 POP PUSH2 0xA3C PUSH1 0x20 DUP6 ADD PUSH2 0x9BD JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA67 DUP3 PUSH2 0x9BD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8A DUP4 PUSH2 0x9BD JUMP JUMPDEST SWAP2 POP PUSH2 0xA98 PUSH1 0x20 DUP5 ADD PUSH2 0x9BD JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAB5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xAEE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xB2E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xF 0xAB RETURNDATACOPY SELFDESTRUCT 0xE7 SWAP7 0xAE CALL SWAP15 CALLDATACOPY SWAP8 DUP11 0xE9 PUSH4 0x50311EDF 0xB5 0x25 CALL 0xE2 0x23 EXTCODECOPY 0xE1 DUP9 DUP12 0xC3 0x5E 0x2C LOG4 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"1403:11214:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1300:14:54;;1293:22;1275:41;;1263:2;1248:18;4433:197:1;1135:187:54;3244:106:1;3331:12;;3244:106;;;1473:25:54;;;1461:2;1446:18;3244:106:1;1327:177:54;5192:286:1;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1984:36:54;;1972:2;1957:18;3093:91:1;1842:184:54;5873:234:1;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;3508:18;;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;4091:18;;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149;2156:98;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:9;4570:32:1;719:10:9;4586:7:1;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:1;;4433:197;-1:-1:-1;;;4433:197:1:o;5192:286::-;5319:4;719:10:9;5375:38:1;5391:4;719:10:9;5406:6:1;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:1;;5192:286;-1:-1:-1;;;;5192:286:1:o;5873:234::-;719:10:9;5961:4:1;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5961:4;;719:10:9;6015:64:1;;719:10:9;;4091:27:1;;6040:38;;6068:10;;6040:38;:::i;:::-;6015:8;:64::i;2367:102::-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;719:10:9;6687:4:1;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6687:4;;719:10:9;6831:15:1;6811:16;:35;;6803:85;;;;;;;3418:2:54;6803:85:1;;;3400:21:54;3457:2;3437:18;;;3430:30;3496:34;3476:18;;;3469:62;3567:7;3547:18;;;3540:35;3592:19;;6803:85:1;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:9;3862:28:1;719:10:9;3879:2:1;3883:6;3862:9;:28::i;10110:370::-;10241:19;;;10233:68;;;;;;;3824:2:54;10233:68:1;;;3806:21:54;3863:2;3843:18;;;3836:30;3902:34;3882:18;;;3875:62;3973:6;3953:18;;;3946:34;3997:19;;10233:68:1;3622:400:54;10233:68:1;10319:21;;;10311:68;;;;;;;4229:2:54;10311:68:1;;;4211:21:54;4268:2;4248:18;;;4241:30;4307:34;4287:18;;;4280:62;4378:4;4358:18;;;4351:32;4400:19;;10311:68:1;4027:398:54;10311:68:1;10390:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;1473:25:54;;;10441:32:1;;1446:18:54;10441:32:1;;;;;;;10110:370;;;:::o;10761:441::-;4091:18;;;;10891:24;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10977:17;10957:37;;10953:243;;11038:6;11018:16;:26;;11010:68;;;;;;;4632:2:54;11010:68:1;;;4614:21:54;4671:2;4651:18;;;4644:30;4710:31;4690:18;;;4683:59;4759:18;;11010:68:1;4430:353:54;11010:68:1;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;7601:18;;;7593:68;;;;;;;4990:2:54;7593:68:1;;;4972:21:54;5029:2;5009:18;;;5002:30;5068:34;5048:18;;;5041:62;5139:7;5119:18;;;5112:35;5164:19;;7593:68:1;4788:401:54;7593:68:1;7679:16;;;7671:64;;;;;;;5396:2:54;7671:64:1;;;5378:21:54;5435:2;5415:18;;;5408:30;5474:34;5454:18;;;5447:62;5545:5;5525:18;;;5518:33;5568:19;;7671:64:1;5194:399:54;7671:64:1;7817:15;;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;;;;5800:2:54;7842:72:1;;;5782:21:54;5839:2;5819:18;;;5812:30;5878:34;5858:18;;;5851:62;5949:8;5929:18;;;5922:36;5975:19;;7842:72:1;5598:402:54;7842:72:1;7948:15;;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;8045:26;;8054:4;8045:26;;;8064:6;8045:26;;;;1473:25:54;;1461:2;1446:18;;1327:177;8045:26:1;;;;;;;;8082:37;11786:121;14:656:54;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:54;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:54:o;675:196::-;743:20;;803:42;792:54;;782:65;;772:93;;861:1;858;851:12;772:93;675:196;;;:::o;876:254::-;944:6;952;1005:2;993:9;984:7;980:23;976:32;973:52;;;1021:1;1018;1011:12;973:52;1044:29;1063:9;1044:29;:::i;:::-;1034:39;1120:2;1105:18;;;;1092:32;;-1:-1:-1;;;876:254:54:o;1509:328::-;1586:6;1594;1602;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;1694:29;1713:9;1694:29;:::i;:::-;1684:39;;1742:38;1776:2;1765:9;1761:18;1742:38;:::i;:::-;1732:48;;1827:2;1816:9;1812:18;1799:32;1789:42;;1509:328;;;;;:::o;2031:186::-;2090:6;2143:2;2131:9;2122:7;2118:23;2114:32;2111:52;;;2159:1;2156;2149:12;2111:52;2182:29;2201:9;2182:29;:::i;:::-;2172:39;2031:186;-1:-1:-1;;;2031:186:54:o;2222:260::-;2290:6;2298;2351:2;2339:9;2330:7;2326:23;2322:32;2319:52;;;2367:1;2364;2357:12;2319:52;2390:29;2409:9;2390:29;:::i;:::-;2380:39;;2438:38;2472:2;2461:9;2457:18;2438:38;:::i;:::-;2428:48;;2222:260;;;;;:::o;2487:437::-;2566:1;2562:12;;;;2609;;;2630:61;;2684:4;2676:6;2672:17;2662:27;;2630:61;2737:2;2729:6;2726:14;2706:18;2703:38;2700:218;;2774:77;2771:1;2764:88;2875:4;2872:1;2865:15;2903:4;2900:1;2893:15;2700:218;;2487:437;;;:::o;2929:282::-;2969:3;3000:1;2996:6;2993:1;2990:13;2987:193;;;3036:77;3033:1;3026:88;3137:4;3134:1;3127:15;3165:4;3162:1;3155:15;2987:193;-1:-1:-1;3196:9:54;;2929:282::o"},"gasEstimates":{"creation":{"codeDepositCost":"584200","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"24599","balanceOf(address)":"2561","decimals()":"244","decreaseAllowance(address,uint256)":"26862","increaseAllowance(address,uint256)":"26908","name()":"infinite","symbol()":"infinite","totalSupply()":"2304","transfer(address,uint256)":"51142","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"infinite","_approve(address,address,uint256)":"infinite","_beforeTokenTransfer(address,address,uint256)":"infinite","_burn(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_spendAllowance(address,address,uint256)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n    mapping(address => uint256) private _balances;\\n\\n    mapping(address => mapping(address => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * The default value of {decimals} is 18. To select a different value for\\n     * {decimals} you should overload it.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n     * overridden;\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual override returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual override returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `amount`.\\n     */\\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `amount`.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) public virtual override returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, amount);\\n        _transfer(from, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, allowance(owner, spender) + addedValue);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `spender` must have allowance for the caller of at least\\n     * `subtractedValue`.\\n     */\\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        uint256 currentAllowance = allowance(owner, spender);\\n        require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n        unchecked {\\n            _approve(owner, spender, currentAllowance - subtractedValue);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves `amount` of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {\\n        require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n        require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, amount);\\n\\n        uint256 fromBalance = _balances[from];\\n        require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n        unchecked {\\n            _balances[from] = fromBalance - amount;\\n        }\\n        _balances[to] += amount;\\n\\n        emit Transfer(from, to, amount);\\n\\n        _afterTokenTransfer(from, to, amount);\\n    }\\n\\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n     * the total supply.\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function _mint(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n        _beforeTokenTransfer(address(0), account, amount);\\n\\n        _totalSupply += amount;\\n        _balances[account] += amount;\\n        emit Transfer(address(0), account, amount);\\n\\n        _afterTokenTransfer(address(0), account, amount);\\n    }\\n\\n    /**\\n     * @dev Destroys `amount` tokens from `account`, reducing the\\n     * total supply.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     * - `account` must have at least `amount` tokens.\\n     */\\n    function _burn(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n        _beforeTokenTransfer(account, address(0), amount);\\n\\n        uint256 accountBalance = _balances[account];\\n        require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n        unchecked {\\n            _balances[account] = accountBalance - amount;\\n        }\\n        _totalSupply -= amount;\\n\\n        emit Transfer(account, address(0), amount);\\n\\n        _afterTokenTransfer(account, address(0), amount);\\n    }\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     */\\n    function _approve(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n        require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n        _allowances[owner][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n     *\\n     * Does not update the allowance amount in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Might emit an {Approval} event.\\n     */\\n    function _spendAllowance(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * will be transferred to `to`.\\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * has been transferred to `to`.\\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":128,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":134,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":136,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":138,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":140,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"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.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._","kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_864":{"entryPoint":null,"id":864,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":292,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":475,"id":null,"parameterSlots":2,"returnSlots":2},"extract_byte_array_length":{"entryPoint":581,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x41":{"entryPoint":270,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1985:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:54"},"nodeType":"YulFunctionCall","src":"66:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:54"},"nodeType":"YulFunctionCall","src":"56:31:54"},"nodeType":"YulExpressionStatement","src":"56:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:54"},"nodeType":"YulFunctionCall","src":"96:15:54"},"nodeType":"YulExpressionStatement","src":"96:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:54"},"nodeType":"YulFunctionCall","src":"120:15:54"},"nodeType":"YulExpressionStatement","src":"120:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:54"},{"body":{"nodeType":"YulBlock","src":"210:821:54","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:54"},"nodeType":"YulFunctionCall","src":"261:12:54"},"nodeType":"YulExpressionStatement","src":"261:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:54"},"nodeType":"YulFunctionCall","src":"234:17:54"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:54"},"nodeType":"YulFunctionCall","src":"230:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:54"},"nodeType":"YulFunctionCall","src":"223:35:54"},"nodeType":"YulIf","src":"220:55:54"},{"nodeType":"YulVariableDeclaration","src":"284:23:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:54"},"nodeType":"YulFunctionCall","src":"294:13:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:54","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:54","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:54"},"nodeType":"YulFunctionCall","src":"330:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:54"},"nodeType":"YulFunctionCall","src":"326:18:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:54"},"nodeType":"YulFunctionCall","src":"369:18:54"},"nodeType":"YulExpressionStatement","src":"369:18:54"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:54"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:54"},"nodeType":"YulFunctionCall","src":"356:10:54"},"nodeType":"YulIf","src":"353:36:54"},{"nodeType":"YulVariableDeclaration","src":"398:17:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:54","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:54"},"nodeType":"YulFunctionCall","src":"408:7:54"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:54"},"nodeType":"YulFunctionCall","src":"438:9:54"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:54"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:54"},"nodeType":"YulFunctionCall","src":"498:13:54"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:54"},"nodeType":"YulFunctionCall","src":"494:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:54","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:54"},"nodeType":"YulFunctionCall","src":"490:31:54"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:54"},"nodeType":"YulFunctionCall","src":"486:40:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:54"},"nodeType":"YulFunctionCall","src":"474:53:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:54"},"nodeType":"YulFunctionCall","src":"588:18:54"},"nodeType":"YulExpressionStatement","src":"588:18:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:54"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:54"},"nodeType":"YulFunctionCall","src":"542:18:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:54"},"nodeType":"YulFunctionCall","src":"562:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:54"},"nodeType":"YulFunctionCall","src":"539:46:54"},"nodeType":"YulIf","src":"536:72:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:54"},"nodeType":"YulFunctionCall","src":"617:22:54"},"nodeType":"YulExpressionStatement","src":"617:22:54"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:54"},"nodeType":"YulFunctionCall","src":"648:18:54"},"nodeType":"YulExpressionStatement","src":"648:18:54"},{"nodeType":"YulVariableDeclaration","src":"675:14:54","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:54","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:54"},"nodeType":"YulFunctionCall","src":"737:12:54"},"nodeType":"YulExpressionStatement","src":"737:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:54"},"nodeType":"YulFunctionCall","src":"708:15:54"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:54"},"nodeType":"YulFunctionCall","src":"704:24:54"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:54"},"nodeType":"YulFunctionCall","src":"701:33:54"},"nodeType":"YulIf","src":"698:53:54"},{"nodeType":"YulVariableDeclaration","src":"760:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:54"},"nodeType":"YulFunctionCall","src":"850:14:54"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:54"},"nodeType":"YulFunctionCall","src":"846:23:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:54"},"nodeType":"YulFunctionCall","src":"881:14:54"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:54"},"nodeType":"YulFunctionCall","src":"877:23:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:54"},"nodeType":"YulFunctionCall","src":"871:30:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:54"},"nodeType":"YulFunctionCall","src":"839:63:54"},"nodeType":"YulExpressionStatement","src":"839:63:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:54"},"nodeType":"YulFunctionCall","src":"787:9:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:54","statements":[{"nodeType":"YulAssignment","src":"799:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:54"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:54"},"nodeType":"YulFunctionCall","src":"804:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:54","statements":[]},"src":"779:133:54"},{"body":{"nodeType":"YulBlock","src":"942:59:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"971:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:54"},"nodeType":"YulFunctionCall","src":"967:15:54"},{"name":"_4","nodeType":"YulIdentifier","src":"984:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"963:3:54"},"nodeType":"YulFunctionCall","src":"963:24:54"},{"kind":"number","nodeType":"YulLiteral","src":"989:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"956:6:54"},"nodeType":"YulFunctionCall","src":"956:35:54"},"nodeType":"YulExpressionStatement","src":"956:35:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"927:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"930:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"924:2:54"},"nodeType":"YulFunctionCall","src":"924:9:54"},"nodeType":"YulIf","src":"921:80:54"},{"nodeType":"YulAssignment","src":"1010:15:54","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1019:6:54"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1010:5:54"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:54","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:54","type":""}],"src":"146:885:54"},{"body":{"nodeType":"YulBlock","src":"1154:444:54","statements":[{"body":{"nodeType":"YulBlock","src":"1200:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1209:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1212:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1202:6:54"},"nodeType":"YulFunctionCall","src":"1202:12:54"},"nodeType":"YulExpressionStatement","src":"1202:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1175:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1184:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1171:3:54"},"nodeType":"YulFunctionCall","src":"1171:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1196:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1167:3:54"},"nodeType":"YulFunctionCall","src":"1167:32:54"},"nodeType":"YulIf","src":"1164:52:54"},{"nodeType":"YulVariableDeclaration","src":"1225:30:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1245:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1239:5:54"},"nodeType":"YulFunctionCall","src":"1239:16:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1229:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1264:28:54","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1282:2:54","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1278:3:54"},"nodeType":"YulFunctionCall","src":"1278:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1274:3:54"},"nodeType":"YulFunctionCall","src":"1274:18:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1268:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1319:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1328:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1331:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1321:6:54"},"nodeType":"YulFunctionCall","src":"1321:12:54"},"nodeType":"YulExpressionStatement","src":"1321:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1307:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"1315:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1304:2:54"},"nodeType":"YulFunctionCall","src":"1304:14:54"},"nodeType":"YulIf","src":"1301:34:54"},{"nodeType":"YulAssignment","src":"1344:71:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1387:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"1398:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1383:3:54"},"nodeType":"YulFunctionCall","src":"1383:22:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1407:7:54"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1354:28:54"},"nodeType":"YulFunctionCall","src":"1354:61:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1344:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"1424:41:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1450:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1461:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1446:3:54"},"nodeType":"YulFunctionCall","src":"1446:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1440:5:54"},"nodeType":"YulFunctionCall","src":"1440:25:54"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1428:8:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1494:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1503:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1506:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1496:6:54"},"nodeType":"YulFunctionCall","src":"1496:12:54"},"nodeType":"YulExpressionStatement","src":"1496:12:54"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1480:8:54"},{"name":"_1","nodeType":"YulIdentifier","src":"1490:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1477:2:54"},"nodeType":"YulFunctionCall","src":"1477:16:54"},"nodeType":"YulIf","src":"1474:36:54"},{"nodeType":"YulAssignment","src":"1519:73:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1562:9:54"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1573:8:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1558:3:54"},"nodeType":"YulFunctionCall","src":"1558:24:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1584:7:54"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1529:28:54"},"nodeType":"YulFunctionCall","src":"1529:63:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1519:6:54"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1112:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1123:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1135:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1143:6:54","type":""}],"src":"1036:562:54"},{"body":{"nodeType":"YulBlock","src":"1658:325:54","statements":[{"nodeType":"YulAssignment","src":"1668:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1682:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1685:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1678:3:54"},"nodeType":"YulFunctionCall","src":"1678:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1668:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"1699:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1729:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"1735:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1725:3:54"},"nodeType":"YulFunctionCall","src":"1725:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1703:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1776:31:54","statements":[{"nodeType":"YulAssignment","src":"1778:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1792:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1800:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1788:3:54"},"nodeType":"YulFunctionCall","src":"1788:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1778:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1756:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1749:6:54"},"nodeType":"YulFunctionCall","src":"1749:26:54"},"nodeType":"YulIf","src":"1746:61:54"},{"body":{"nodeType":"YulBlock","src":"1866:111:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1887:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1894:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1899:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1890:3:54"},"nodeType":"YulFunctionCall","src":"1890:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1880:6:54"},"nodeType":"YulFunctionCall","src":"1880:31:54"},"nodeType":"YulExpressionStatement","src":"1880:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1931:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1934:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1924:6:54"},"nodeType":"YulFunctionCall","src":"1924:15:54"},"nodeType":"YulExpressionStatement","src":"1924:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1959:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1962:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1952:6:54"},"nodeType":"YulFunctionCall","src":"1952:15:54"},"nodeType":"YulExpressionStatement","src":"1952:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1822:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1845:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1853:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1842:2:54"},"nodeType":"YulFunctionCall","src":"1842:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1819:2:54"},"nodeType":"YulFunctionCall","src":"1819:38:54"},"nodeType":"YulIf","src":"1816:161:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1638:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1647:6:54","type":""}],"src":"1603:380:54"}]},"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 abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        if gt(i, _1)\n        {\n            mstore(add(add(memPtr, _1), _4), 0)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620018ed380380620018ed8339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000281565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b6020821081036200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b61165c80620002916000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004611121565b610252565b60405190151581526020015b60405180910390f35b610114610337565b60405161010391906111b4565b61013461012f3660046111c7565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c610167366004611209565b6103fd565b005b61016c61017c366004611233565b61055a565b61016c61018f366004611233565b6105e1565b6101346101a23660046111c7565b6105fc565b6101ba6101b536600461126f565b61066e565b604051908152602001610103565b610114610722565b61016c6101de36600461128a565b610731565b61016c6101f13660046112f5565b610740565b6101146102043660046111c7565b6107ce565b6100f76102173660046113ef565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461034690611422565b80601f016020809104026020016040519081016040528092919081815260200182805461037290611422565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60006103d482610842565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610408826105fc565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806104d957506104d98133610217565b61054b5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104a7565b61055583836108b6565b505050565b6105643382610956565b6105d65760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104a7565b610555838383610a16565b61055583838360405180602001604052806000815250610740565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806103315760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104a7565b600073ffffffffffffffffffffffffffffffffffffffff82166106f95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016104a7565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461034690611422565b61073c338383610c49565b5050565b61074a3383610956565b6107bc5760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104a7565b6107c884848484610d5c565b50505050565b60606107d982610842565b60006107f060408051602081019091526000815290565b90506000815111610810576040518060200160405280600081525061083b565b8061081a84610de5565b60405160200161082b929190611475565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff166108b35760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104a7565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610910826105fc565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610962836105fc565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806109d0575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610a0e57508373ffffffffffffffffffffffffffffffffffffffff166109f6846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610a36826105fc565b73ffffffffffffffffffffffffffffffffffffffff1614610abf5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104a7565b73ffffffffffffffffffffffffffffffffffffffff8216610b475760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104a7565b610b526000826108b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610b889084906114d3565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610bc39084906114ea565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cc45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104a7565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d67848484610a16565b610d7384848484610f1a565b6107c85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104a7565b606081600003610e2857505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610e525780610e3c81611502565b9150610e4b9050600a83611569565b9150610e2c565b60008167ffffffffffffffff811115610e6d57610e6d6112c6565b6040519080825280601f01601f191660200182016040528015610e97576020820181803683370190505b5090505b8415610a0e57610eac6001836114d3565b9150610eb9600a8661157d565b610ec49060306114ea565b60f81b818381518110610ed957610ed9611591565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610f13600a86611569565b9450610e9b565b600073ffffffffffffffffffffffffffffffffffffffff84163b156110e8576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610f919033908990889088906004016115c0565b6020604051808303816000875af1925050508015610fea575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610fe791810190611609565b60015b61109d573d808015611018576040519150601f19603f3d011682016040523d82523d6000602084013e61101d565b606091505b5080516000036110955760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104a7565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610a0e565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146108b357600080fd5b60006020828403121561113357600080fd5b813561083b816110f3565b60005b83811015611159578181015183820152602001611141565b838111156107c85750506000910152565b6000815180845261118281602086016020860161113e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061083b602083018461116a565b6000602082840312156111d957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461120457600080fd5b919050565b6000806040838503121561121c57600080fd5b611225836111e0565b946020939093013593505050565b60008060006060848603121561124857600080fd5b611251846111e0565b925061125f602085016111e0565b9150604084013590509250925092565b60006020828403121561128157600080fd5b61083b826111e0565b6000806040838503121561129d57600080fd5b6112a6836111e0565b9150602083013580151581146112bb57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561130b57600080fd5b611314856111e0565b9350611322602086016111e0565b925060408501359150606085013567ffffffffffffffff8082111561134657600080fd5b818701915087601f83011261135a57600080fd5b81358181111561136c5761136c6112c6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156113b2576113b26112c6565b816040528281528a60208487010111156113cb57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561140257600080fd5b61140b836111e0565b9150611419602084016111e0565b90509250929050565b600181811c9082168061143657607f821691505b60208210810361146f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161148781846020880161113e565b83519083019061149b81836020880161113e565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114e5576114e56114a4565b500390565b600082198211156114fd576114fd6114a4565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611533576115336114a4565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826115785761157861153a565b500490565b60008261158c5761158c61153a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526115ff608083018461116a565b9695505050505050565b60006020828403121561161b57600080fd5b815161083b816110f356fea26469706673582212209615665e1f4556e9e842ed4ae0ff27a11f5a728340e2f9ba045e18dfd40cbd5564736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18ED CODESIZE SUB DUP1 PUSH3 0x18ED DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1DB JUMP JUMPDEST DUP2 MLOAD PUSH3 0x49 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x5F SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP POP POP PUSH3 0x281 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x76 SWAP1 PUSH3 0x245 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x9A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xE5 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xE5 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xC8 JUMP JUMPDEST POP PUSH3 0xF3 SWAP3 SWAP2 POP PUSH3 0xF7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xF3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0xF8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x153 JUMPI PUSH3 0x153 PUSH3 0x10E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x17E JUMPI PUSH3 0x17E PUSH3 0x10E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x1BF JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x1A0 JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x1D1 JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x215 DUP7 DUP4 DUP8 ADD PUSH3 0x124 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x23B DUP6 DUP3 DUP7 ADD PUSH3 0x124 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x25A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x27B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x165C DUP1 PUSH3 0x291 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1121 JUMP JUMPDEST PUSH2 0x252 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0x11B4 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x11C7 JUMP JUMPDEST PUSH2 0x3C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x167 CALLDATASIZE PUSH1 0x4 PUSH2 0x1209 JUMP JUMPDEST PUSH2 0x3FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16C PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0x1233 JUMP JUMPDEST PUSH2 0x55A JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0x1233 JUMP JUMPDEST PUSH2 0x5E1 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C7 JUMP JUMPDEST PUSH2 0x5FC JUMP JUMPDEST PUSH2 0x1BA PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x722 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x1DE CALLDATASIZE PUSH1 0x4 PUSH2 0x128A JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F5 JUMP JUMPDEST PUSH2 0x740 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C7 JUMP JUMPDEST PUSH2 0x7CE JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x13EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2E5 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x331 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x346 SWAP1 PUSH2 0x1422 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x372 SWAP1 PUSH2 0x1422 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x394 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D4 DUP3 PUSH2 0x842 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP3 PUSH2 0x5FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ DUP1 PUSH2 0x4D9 JUMPI POP PUSH2 0x4D9 DUP2 CALLER PUSH2 0x217 JUMP JUMPDEST PUSH2 0x54B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0x555 DUP4 DUP4 PUSH2 0x8B6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x564 CALLER DUP3 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x5D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0x555 DUP4 DUP4 DUP4 PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x555 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x740 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x331 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x6F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x346 SWAP1 PUSH2 0x1422 JUMP JUMPDEST PUSH2 0x73C CALLER DUP4 DUP4 PUSH2 0xC49 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x74A CALLER DUP4 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x7BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0x7C8 DUP5 DUP5 DUP5 DUP5 PUSH2 0xD5C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x7D9 DUP3 PUSH2 0x842 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F0 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x810 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x83B JUMP JUMPDEST DUP1 PUSH2 0x81A DUP5 PUSH2 0xDE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x82B SWAP3 SWAP2 SWAP1 PUSH2 0x1475 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x910 DUP3 PUSH2 0x5FC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x962 DUP4 PUSH2 0x5FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x9D0 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0xA0E JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9F6 DUP5 PUSH2 0x3C9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA36 DUP3 PUSH2 0x5FC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB47 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0xB52 PUSH1 0x0 DUP3 PUSH2 0x8B6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xB88 SWAP1 DUP5 SWAP1 PUSH2 0x14D3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xBC3 SWAP1 DUP5 SWAP1 PUSH2 0x14EA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xD67 DUP5 DUP5 DUP5 PUSH2 0xA16 JUMP JUMPDEST PUSH2 0xD73 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF1A JUMP JUMPDEST PUSH2 0x7C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0xE28 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xE52 JUMPI DUP1 PUSH2 0xE3C DUP2 PUSH2 0x1502 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4B SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x1569 JUMP JUMPDEST SWAP2 POP PUSH2 0xE2C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE6D JUMPI PUSH2 0xE6D PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE97 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0xA0E JUMPI PUSH2 0xEAC PUSH1 0x1 DUP4 PUSH2 0x14D3 JUMP JUMPDEST SWAP2 POP PUSH2 0xEB9 PUSH1 0xA DUP7 PUSH2 0x157D JUMP JUMPDEST PUSH2 0xEC4 SWAP1 PUSH1 0x30 PUSH2 0x14EA JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xED9 JUMPI PUSH2 0xED9 PUSH2 0x1591 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0xF13 PUSH1 0xA DUP7 PUSH2 0x1569 JUMP JUMPDEST SWAP5 POP PUSH2 0xE9B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xF91 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xFEA JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xFE7 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1609 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x109D JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1018 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 0x101D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1095 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0xA0E JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x83B DUP2 PUSH2 0x10F3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1159 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1141 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7C8 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1182 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x113E JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x83B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x116A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x121C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1225 DUP4 PUSH2 0x11E0 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1251 DUP5 PUSH2 0x11E0 JUMP JUMPDEST SWAP3 POP PUSH2 0x125F PUSH1 0x20 DUP6 ADD PUSH2 0x11E0 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x83B DUP3 PUSH2 0x11E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x129D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12A6 DUP4 PUSH2 0x11E0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x12BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x130B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1314 DUP6 PUSH2 0x11E0 JUMP JUMPDEST SWAP4 POP PUSH2 0x1322 PUSH1 0x20 DUP7 ADD PUSH2 0x11E0 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1346 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x135A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x136C JUMPI PUSH2 0x136C PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x13B2 JUMPI PUSH2 0x13B2 PUSH2 0x12C6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x13CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x140B DUP4 PUSH2 0x11E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x1419 PUSH1 0x20 DUP5 ADD PUSH2 0x11E0 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1436 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x146F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1487 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x113E JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x149B DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x113E JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x14E5 JUMPI PUSH2 0x14E5 PUSH2 0x14A4 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x14FD JUMPI PUSH2 0x14FD PUSH2 0x14A4 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1533 JUMPI PUSH2 0x1533 PUSH2 0x14A4 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1578 JUMPI PUSH2 0x1578 PUSH2 0x153A JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x158C JUMPI PUSH2 0x158C PUSH2 0x153A JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x15FF PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x116A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x161B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x83B DUP2 PUSH2 0x10F3 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 ISZERO PUSH7 0x5E1F4556E9E842 0xED 0x4A 0xE0 SELFDESTRUCT 0x27 LOG1 0x1F GAS PUSH19 0x8340E2F9BA045E18DFD40CBD5564736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"628:13718:4:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1479:17:4;;;;:7;;:17;;;;;:::i;:::-;;1390:113;;628:13718;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:13718:4;;;-1:-1:-1;628:13718:4;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:54;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:54;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:54;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:54:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:54;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;628:13718:4;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_1667":{"entryPoint":null,"id":1667,"parameterSlots":3,"returnSlots":0},"@_approve_1537":{"entryPoint":2230,"id":1537,"parameterSlots":2,"returnSlots":0},"@_baseURI_1015":{"entryPoint":null,"id":1015,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_1656":{"entryPoint":null,"id":1656,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_1645":{"entryPoint":3866,"id":1645,"parameterSlots":4,"returnSlots":1},"@_exists_1234":{"entryPoint":null,"id":1234,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_1268":{"entryPoint":2390,"id":1268,"parameterSlots":2,"returnSlots":1},"@_msgSender_2136":{"entryPoint":null,"id":2136,"parameterSlots":0,"returnSlots":1},"@_requireMinted_1583":{"entryPoint":2114,"id":1583,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_1216":{"entryPoint":3420,"id":1216,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_1569":{"entryPoint":3145,"id":1569,"parameterSlots":3,"returnSlots":0},"@_transfer_1513":{"entryPoint":2582,"id":1513,"parameterSlots":3,"returnSlots":0},"@approve_1058":{"entryPoint":1021,"id":1058,"parameterSlots":2,"returnSlots":0},"@balanceOf_919":{"entryPoint":1646,"id":919,"parameterSlots":1,"returnSlots":1},"@getApproved_1076":{"entryPoint":969,"id":1076,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_1111":{"entryPoint":null,"id":1111,"parameterSlots":2,"returnSlots":1},"@isContract_1847":{"entryPoint":null,"id":1847,"parameterSlots":1,"returnSlots":1},"@name_957":{"entryPoint":823,"id":957,"parameterSlots":0,"returnSlots":1},"@ownerOf_947":{"entryPoint":1532,"id":947,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_1157":{"entryPoint":1505,"id":1157,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_1187":{"entryPoint":1856,"id":1187,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_1093":{"entryPoint":1841,"id":1093,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2395":{"entryPoint":null,"id":2395,"parameterSlots":1,"returnSlots":1},"@supportsInterface_895":{"entryPoint":594,"id":895,"parameterSlots":1,"returnSlots":1},"@symbol_967":{"entryPoint":1826,"id":967,"parameterSlots":0,"returnSlots":1},"@toString_2234":{"entryPoint":3557,"id":2234,"parameterSlots":1,"returnSlots":1},"@tokenURI_1006":{"entryPoint":1998,"id":1006,"parameterSlots":1,"returnSlots":1},"@transferFrom_1138":{"entryPoint":1370,"id":1138,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":4576,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4719,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":5103,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4659,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":4853,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4746,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4617,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":4385,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":5641,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4551,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4458,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":5237,"id":null,"parameterSlots":3,"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_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5568,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__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":4532,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":5354,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":5481,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":5331,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":4414,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":5154,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":5378,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint256":{"entryPoint":5501,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":5284,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":5434,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":5521,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4806,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":4339,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:11590:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:133:54","statements":[{"body":{"nodeType":"YulBlock","src":"169:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:54"},"nodeType":"YulFunctionCall","src":"171:12:54"},"nodeType":"YulExpressionStatement","src":"171:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"99:66:54","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:54"},"nodeType":"YulFunctionCall","src":"88:78:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:54"},"nodeType":"YulFunctionCall","src":"78:89:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:54"},"nodeType":"YulFunctionCall","src":"71:97:54"},"nodeType":"YulIf","src":"68:117:54"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:54","type":""}],"src":"14:177:54"},{"body":{"nodeType":"YulBlock","src":"265:176:54","statements":[{"body":{"nodeType":"YulBlock","src":"311:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"320:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"323:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"313:6:54"},"nodeType":"YulFunctionCall","src":"313:12:54"},"nodeType":"YulExpressionStatement","src":"313:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"286:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"295:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"282:3:54"},"nodeType":"YulFunctionCall","src":"282:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"307:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"278:3:54"},"nodeType":"YulFunctionCall","src":"278:32:54"},"nodeType":"YulIf","src":"275:52:54"},{"nodeType":"YulVariableDeclaration","src":"336:36:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"362:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"349:12:54"},"nodeType":"YulFunctionCall","src":"349:23:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"340:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"405:5:54"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"381:23:54"},"nodeType":"YulFunctionCall","src":"381:30:54"},"nodeType":"YulExpressionStatement","src":"381:30:54"},{"nodeType":"YulAssignment","src":"420:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"430:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"420:6:54"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"231:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"242:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"254:6:54","type":""}],"src":"196:245:54"},{"body":{"nodeType":"YulBlock","src":"541:92:54","statements":[{"nodeType":"YulAssignment","src":"551:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"563:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"574:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"559:3:54"},"nodeType":"YulFunctionCall","src":"559:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"551:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"593:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"618:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"611:6:54"},"nodeType":"YulFunctionCall","src":"611:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"604:6:54"},"nodeType":"YulFunctionCall","src":"604:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"586:6:54"},"nodeType":"YulFunctionCall","src":"586:41:54"},"nodeType":"YulExpressionStatement","src":"586:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"510:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"521:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"532:4:54","type":""}],"src":"446:187:54"},{"body":{"nodeType":"YulBlock","src":"691:205:54","statements":[{"nodeType":"YulVariableDeclaration","src":"701:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"710:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"705:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"770:63:54","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"795:3:54"},{"name":"i","nodeType":"YulIdentifier","src":"800:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"791:3:54"},"nodeType":"YulFunctionCall","src":"791:11:54"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"814:3:54"},{"name":"i","nodeType":"YulIdentifier","src":"819:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"810:3:54"},"nodeType":"YulFunctionCall","src":"810:11:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"804:5:54"},"nodeType":"YulFunctionCall","src":"804:18:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"784:6:54"},"nodeType":"YulFunctionCall","src":"784:39:54"},"nodeType":"YulExpressionStatement","src":"784:39:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"731:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"734:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"728:2:54"},"nodeType":"YulFunctionCall","src":"728:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"742:19:54","statements":[{"nodeType":"YulAssignment","src":"744:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"753:1:54"},{"kind":"number","nodeType":"YulLiteral","src":"756:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"749:3:54"},"nodeType":"YulFunctionCall","src":"749:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"744:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"724:3:54","statements":[]},"src":"720:113:54"},{"body":{"nodeType":"YulBlock","src":"859:31:54","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"872:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"877:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"868:3:54"},"nodeType":"YulFunctionCall","src":"868:16:54"},{"kind":"number","nodeType":"YulLiteral","src":"886:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"861:6:54"},"nodeType":"YulFunctionCall","src":"861:27:54"},"nodeType":"YulExpressionStatement","src":"861:27:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"848:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"851:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"845:2:54"},"nodeType":"YulFunctionCall","src":"845:13:54"},"nodeType":"YulIf","src":"842:48:54"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"669:3:54","type":""},{"name":"dst","nodeType":"YulTypedName","src":"674:3:54","type":""},{"name":"length","nodeType":"YulTypedName","src":"679:6:54","type":""}],"src":"638:258:54"},{"body":{"nodeType":"YulBlock","src":"951:267:54","statements":[{"nodeType":"YulVariableDeclaration","src":"961:26:54","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"981:5:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"975:5:54"},"nodeType":"YulFunctionCall","src":"975:12:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"965:6:54","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1003:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"1008:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"996:6:54"},"nodeType":"YulFunctionCall","src":"996:19:54"},"nodeType":"YulExpressionStatement","src":"996:19:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1050:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"1057:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1046:3:54"},"nodeType":"YulFunctionCall","src":"1046:16:54"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1068:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1073:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1064:3:54"},"nodeType":"YulFunctionCall","src":"1064:14:54"},{"name":"length","nodeType":"YulIdentifier","src":"1080:6:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1024:21:54"},"nodeType":"YulFunctionCall","src":"1024:63:54"},"nodeType":"YulExpressionStatement","src":"1024:63:54"},{"nodeType":"YulAssignment","src":"1096:116:54","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1111:3:54"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1124:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1132:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1120:3:54"},"nodeType":"YulFunctionCall","src":"1120:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"1137:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1116:3:54"},"nodeType":"YulFunctionCall","src":"1116:88:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1107:3:54"},"nodeType":"YulFunctionCall","src":"1107:98:54"},{"kind":"number","nodeType":"YulLiteral","src":"1207:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1103:3:54"},"nodeType":"YulFunctionCall","src":"1103:109:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1096:3:54"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"928:5:54","type":""},{"name":"pos","nodeType":"YulTypedName","src":"935:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"943:3:54","type":""}],"src":"901:317:54"},{"body":{"nodeType":"YulBlock","src":"1344:99:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1361:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1372:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1354:6:54"},"nodeType":"YulFunctionCall","src":"1354:21:54"},"nodeType":"YulExpressionStatement","src":"1354:21:54"},{"nodeType":"YulAssignment","src":"1384:53:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1410:6:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1422:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1433:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1418:3:54"},"nodeType":"YulFunctionCall","src":"1418:18:54"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1392:17:54"},"nodeType":"YulFunctionCall","src":"1392:45:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1384:4:54"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1313:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1324:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1335:4:54","type":""}],"src":"1223:220:54"},{"body":{"nodeType":"YulBlock","src":"1518:110:54","statements":[{"body":{"nodeType":"YulBlock","src":"1564:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1573:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1576:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1566:6:54"},"nodeType":"YulFunctionCall","src":"1566:12:54"},"nodeType":"YulExpressionStatement","src":"1566:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1548:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1535:3:54"},"nodeType":"YulFunctionCall","src":"1535:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1560:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1531:3:54"},"nodeType":"YulFunctionCall","src":"1531:32:54"},"nodeType":"YulIf","src":"1528:52:54"},{"nodeType":"YulAssignment","src":"1589:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1612:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1599:12:54"},"nodeType":"YulFunctionCall","src":"1599:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1589:6:54"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1484:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1495:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1507:6:54","type":""}],"src":"1448:180:54"},{"body":{"nodeType":"YulBlock","src":"1734:125:54","statements":[{"nodeType":"YulAssignment","src":"1744:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1756:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1767:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1752:3:54"},"nodeType":"YulFunctionCall","src":"1752:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1744:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1786:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1801:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1809:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1797:3:54"},"nodeType":"YulFunctionCall","src":"1797:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1779:6:54"},"nodeType":"YulFunctionCall","src":"1779:74:54"},"nodeType":"YulExpressionStatement","src":"1779:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1703:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1714:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1725:4:54","type":""}],"src":"1633:226:54"},{"body":{"nodeType":"YulBlock","src":"1913:147:54","statements":[{"nodeType":"YulAssignment","src":"1923:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1945:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1932:12:54"},"nodeType":"YulFunctionCall","src":"1932:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1923:5:54"}]},{"body":{"nodeType":"YulBlock","src":"2038:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2047:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2050:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2040:6:54"},"nodeType":"YulFunctionCall","src":"2040:12:54"},"nodeType":"YulExpressionStatement","src":"2040:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1974:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1985:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"1992:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1981:3:54"},"nodeType":"YulFunctionCall","src":"1981:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1971:2:54"},"nodeType":"YulFunctionCall","src":"1971:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1964:6:54"},"nodeType":"YulFunctionCall","src":"1964:73:54"},"nodeType":"YulIf","src":"1961:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1892:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1903:5:54","type":""}],"src":"1864:196:54"},{"body":{"nodeType":"YulBlock","src":"2152:167:54","statements":[{"body":{"nodeType":"YulBlock","src":"2198:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2207:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2210:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2200:6:54"},"nodeType":"YulFunctionCall","src":"2200:12:54"},"nodeType":"YulExpressionStatement","src":"2200:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2173:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2182:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2169:3:54"},"nodeType":"YulFunctionCall","src":"2169:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2165:3:54"},"nodeType":"YulFunctionCall","src":"2165:32:54"},"nodeType":"YulIf","src":"2162:52:54"},{"nodeType":"YulAssignment","src":"2223:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2252:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2233:18:54"},"nodeType":"YulFunctionCall","src":"2233:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2223:6:54"}]},{"nodeType":"YulAssignment","src":"2271:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2298:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2309:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2294:3:54"},"nodeType":"YulFunctionCall","src":"2294:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2281:12:54"},"nodeType":"YulFunctionCall","src":"2281:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2271:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2110:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2121:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2133:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2141:6:54","type":""}],"src":"2065:254:54"},{"body":{"nodeType":"YulBlock","src":"2428:224:54","statements":[{"body":{"nodeType":"YulBlock","src":"2474:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2483:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2486:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2476:6:54"},"nodeType":"YulFunctionCall","src":"2476:12:54"},"nodeType":"YulExpressionStatement","src":"2476:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2449:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2458:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2445:3:54"},"nodeType":"YulFunctionCall","src":"2445:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2470:2:54","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2441:3:54"},"nodeType":"YulFunctionCall","src":"2441:32:54"},"nodeType":"YulIf","src":"2438:52:54"},{"nodeType":"YulAssignment","src":"2499:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2528:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2509:18:54"},"nodeType":"YulFunctionCall","src":"2509:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2499:6:54"}]},{"nodeType":"YulAssignment","src":"2547:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2580:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2591:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2576:3:54"},"nodeType":"YulFunctionCall","src":"2576:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2557:18:54"},"nodeType":"YulFunctionCall","src":"2557:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2547:6:54"}]},{"nodeType":"YulAssignment","src":"2604:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2631:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2642:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2627:3:54"},"nodeType":"YulFunctionCall","src":"2627:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2614:12:54"},"nodeType":"YulFunctionCall","src":"2614:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2604:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2378:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2389:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2401:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2409:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2417:6:54","type":""}],"src":"2324:328:54"},{"body":{"nodeType":"YulBlock","src":"2727:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"2773:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2782:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2785:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2775:6:54"},"nodeType":"YulFunctionCall","src":"2775:12:54"},"nodeType":"YulExpressionStatement","src":"2775:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2748:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2757:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2744:3:54"},"nodeType":"YulFunctionCall","src":"2744:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2769:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2740:3:54"},"nodeType":"YulFunctionCall","src":"2740:32:54"},"nodeType":"YulIf","src":"2737:52:54"},{"nodeType":"YulAssignment","src":"2798:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2827:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2808:18:54"},"nodeType":"YulFunctionCall","src":"2808:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2798:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2693:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2704:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2716:6:54","type":""}],"src":"2657:186:54"},{"body":{"nodeType":"YulBlock","src":"2949:76:54","statements":[{"nodeType":"YulAssignment","src":"2959:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2971:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2982:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2967:3:54"},"nodeType":"YulFunctionCall","src":"2967:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2959:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3001:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"3012:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2994:6:54"},"nodeType":"YulFunctionCall","src":"2994:25:54"},"nodeType":"YulExpressionStatement","src":"2994:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2918:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2929:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2940:4:54","type":""}],"src":"2848:177:54"},{"body":{"nodeType":"YulBlock","src":"3114:263:54","statements":[{"body":{"nodeType":"YulBlock","src":"3160:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3169:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3172:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3162:6:54"},"nodeType":"YulFunctionCall","src":"3162:12:54"},"nodeType":"YulExpressionStatement","src":"3162:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3135:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3144:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3131:3:54"},"nodeType":"YulFunctionCall","src":"3131:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3156:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3127:3:54"},"nodeType":"YulFunctionCall","src":"3127:32:54"},"nodeType":"YulIf","src":"3124:52:54"},{"nodeType":"YulAssignment","src":"3185:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3214:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3195:18:54"},"nodeType":"YulFunctionCall","src":"3195:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3185:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"3233:45:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3263:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3274:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3259:3:54"},"nodeType":"YulFunctionCall","src":"3259:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3246:12:54"},"nodeType":"YulFunctionCall","src":"3246:32:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3237:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3331:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3340:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3343:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3333:6:54"},"nodeType":"YulFunctionCall","src":"3333:12:54"},"nodeType":"YulExpressionStatement","src":"3333:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3300:5:54"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3321:5:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3314:6:54"},"nodeType":"YulFunctionCall","src":"3314:13:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3307:6:54"},"nodeType":"YulFunctionCall","src":"3307:21:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3297:2:54"},"nodeType":"YulFunctionCall","src":"3297:32:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3290:6:54"},"nodeType":"YulFunctionCall","src":"3290:40:54"},"nodeType":"YulIf","src":"3287:60:54"},{"nodeType":"YulAssignment","src":"3356:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"3366:5:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3356:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3072:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3083:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3095:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3103:6:54","type":""}],"src":"3030:347:54"},{"body":{"nodeType":"YulBlock","src":"3414:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3431:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3434:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3424:6:54"},"nodeType":"YulFunctionCall","src":"3424:88:54"},"nodeType":"YulExpressionStatement","src":"3424:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3528:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3531:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3521:6:54"},"nodeType":"YulFunctionCall","src":"3521:15:54"},"nodeType":"YulExpressionStatement","src":"3521:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3552:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3555:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3545:6:54"},"nodeType":"YulFunctionCall","src":"3545:15:54"},"nodeType":"YulExpressionStatement","src":"3545:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3382:184:54"},{"body":{"nodeType":"YulBlock","src":"3701:1067:54","statements":[{"body":{"nodeType":"YulBlock","src":"3748:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3757:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3760:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3750:6:54"},"nodeType":"YulFunctionCall","src":"3750:12:54"},"nodeType":"YulExpressionStatement","src":"3750:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3722:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3731:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3718:3:54"},"nodeType":"YulFunctionCall","src":"3718:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3743:3:54","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3714:3:54"},"nodeType":"YulFunctionCall","src":"3714:33:54"},"nodeType":"YulIf","src":"3711:53:54"},{"nodeType":"YulAssignment","src":"3773:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3802:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3783:18:54"},"nodeType":"YulFunctionCall","src":"3783:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3773:6:54"}]},{"nodeType":"YulAssignment","src":"3821:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3854:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3865:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3850:3:54"},"nodeType":"YulFunctionCall","src":"3850:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:54"},"nodeType":"YulFunctionCall","src":"3831:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3821:6:54"}]},{"nodeType":"YulAssignment","src":"3878:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3905:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3916:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3901:3:54"},"nodeType":"YulFunctionCall","src":"3901:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3888:12:54"},"nodeType":"YulFunctionCall","src":"3888:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3878:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"3929:46:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3960:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3971:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3956:3:54"},"nodeType":"YulFunctionCall","src":"3956:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3943:12:54"},"nodeType":"YulFunctionCall","src":"3943:32:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3933:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3984:28:54","value":{"kind":"number","nodeType":"YulLiteral","src":"3994:18:54","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3988:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4039:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4048:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4051:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4041:6:54"},"nodeType":"YulFunctionCall","src":"4041:12:54"},"nodeType":"YulExpressionStatement","src":"4041:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4027:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4035:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4024:2:54"},"nodeType":"YulFunctionCall","src":"4024:14:54"},"nodeType":"YulIf","src":"4021:34:54"},{"nodeType":"YulVariableDeclaration","src":"4064:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4078:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"4089:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4074:3:54"},"nodeType":"YulFunctionCall","src":"4074:22:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4068:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4144:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4153:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4156:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4146:6:54"},"nodeType":"YulFunctionCall","src":"4146:12:54"},"nodeType":"YulExpressionStatement","src":"4146:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4123:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4127:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4119:3:54"},"nodeType":"YulFunctionCall","src":"4119:13:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4134:7:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4115:3:54"},"nodeType":"YulFunctionCall","src":"4115:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4108:6:54"},"nodeType":"YulFunctionCall","src":"4108:35:54"},"nodeType":"YulIf","src":"4105:55:54"},{"nodeType":"YulVariableDeclaration","src":"4169:26:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4192:2:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4179:12:54"},"nodeType":"YulFunctionCall","src":"4179:16:54"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4173:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4218:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4220:16:54"},"nodeType":"YulFunctionCall","src":"4220:18:54"},"nodeType":"YulExpressionStatement","src":"4220:18:54"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4210:2:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4214:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4207:2:54"},"nodeType":"YulFunctionCall","src":"4207:10:54"},"nodeType":"YulIf","src":"4204:36:54"},{"nodeType":"YulVariableDeclaration","src":"4249:76:54","value":{"kind":"number","nodeType":"YulLiteral","src":"4259:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4253:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4334:23:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4354:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4348:5:54"},"nodeType":"YulFunctionCall","src":"4348:9:54"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4338:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4366:71:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4388:6:54"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4412:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4416:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4408:3:54"},"nodeType":"YulFunctionCall","src":"4408:13:54"},{"name":"_4","nodeType":"YulIdentifier","src":"4423:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4404:3:54"},"nodeType":"YulFunctionCall","src":"4404:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"4428:2:54","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4400:3:54"},"nodeType":"YulFunctionCall","src":"4400:31:54"},{"name":"_4","nodeType":"YulIdentifier","src":"4433:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4396:3:54"},"nodeType":"YulFunctionCall","src":"4396:40:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4384:3:54"},"nodeType":"YulFunctionCall","src":"4384:53:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4370:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4496:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4498:16:54"},"nodeType":"YulFunctionCall","src":"4498:18:54"},"nodeType":"YulExpressionStatement","src":"4498:18:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4455:10:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4467:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4452:2:54"},"nodeType":"YulFunctionCall","src":"4452:18:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4475:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4487:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4472:2:54"},"nodeType":"YulFunctionCall","src":"4472:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4449:2:54"},"nodeType":"YulFunctionCall","src":"4449:46:54"},"nodeType":"YulIf","src":"4446:72:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4534:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4538:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4527:6:54"},"nodeType":"YulFunctionCall","src":"4527:22:54"},"nodeType":"YulExpressionStatement","src":"4527:22:54"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4565:6:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4573:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4558:6:54"},"nodeType":"YulFunctionCall","src":"4558:18:54"},"nodeType":"YulExpressionStatement","src":"4558:18:54"},{"body":{"nodeType":"YulBlock","src":"4622:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4631:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4634:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4624:6:54"},"nodeType":"YulFunctionCall","src":"4624:12:54"},"nodeType":"YulExpressionStatement","src":"4624:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4599:2:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4603:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4595:3:54"},"nodeType":"YulFunctionCall","src":"4595:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"4608:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4591:3:54"},"nodeType":"YulFunctionCall","src":"4591:20:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4613:7:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4588:2:54"},"nodeType":"YulFunctionCall","src":"4588:33:54"},"nodeType":"YulIf","src":"4585:53:54"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4664:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"4672:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4660:3:54"},"nodeType":"YulFunctionCall","src":"4660:15:54"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4681:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4685:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4677:3:54"},"nodeType":"YulFunctionCall","src":"4677:11:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4690:2:54"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4647:12:54"},"nodeType":"YulFunctionCall","src":"4647:46:54"},"nodeType":"YulExpressionStatement","src":"4647:46:54"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4717:6:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4725:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4713:3:54"},"nodeType":"YulFunctionCall","src":"4713:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"4730:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4709:3:54"},"nodeType":"YulFunctionCall","src":"4709:24:54"},{"kind":"number","nodeType":"YulLiteral","src":"4735:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4702:6:54"},"nodeType":"YulFunctionCall","src":"4702:35:54"},"nodeType":"YulExpressionStatement","src":"4702:35:54"},{"nodeType":"YulAssignment","src":"4746:16:54","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4756:6:54"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4746:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3643:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3654:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3666:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3674:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3682:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3690:6:54","type":""}],"src":"3571:1197:54"},{"body":{"nodeType":"YulBlock","src":"4860:173:54","statements":[{"body":{"nodeType":"YulBlock","src":"4906:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4915:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4918:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4908:6:54"},"nodeType":"YulFunctionCall","src":"4908:12:54"},"nodeType":"YulExpressionStatement","src":"4908:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4881:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4890:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4877:3:54"},"nodeType":"YulFunctionCall","src":"4877:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4902:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4873:3:54"},"nodeType":"YulFunctionCall","src":"4873:32:54"},"nodeType":"YulIf","src":"4870:52:54"},{"nodeType":"YulAssignment","src":"4931:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4960:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4941:18:54"},"nodeType":"YulFunctionCall","src":"4941:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4931:6:54"}]},{"nodeType":"YulAssignment","src":"4979:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5012:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5023:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5008:3:54"},"nodeType":"YulFunctionCall","src":"5008:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4989:18:54"},"nodeType":"YulFunctionCall","src":"4989:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4979:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4818:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4829:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4841:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4849:6:54","type":""}],"src":"4773:260:54"},{"body":{"nodeType":"YulBlock","src":"5093:382:54","statements":[{"nodeType":"YulAssignment","src":"5103:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5117:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"5120:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5113:3:54"},"nodeType":"YulFunctionCall","src":"5113:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5103:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"5134:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5164:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"5170:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5160:3:54"},"nodeType":"YulFunctionCall","src":"5160:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"5138:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"5211:31:54","statements":[{"nodeType":"YulAssignment","src":"5213:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5227:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5235:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5223:3:54"},"nodeType":"YulFunctionCall","src":"5223:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5213:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5191:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5184:6:54"},"nodeType":"YulFunctionCall","src":"5184:26:54"},"nodeType":"YulIf","src":"5181:61:54"},{"body":{"nodeType":"YulBlock","src":"5301:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5322:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5325:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5315:6:54"},"nodeType":"YulFunctionCall","src":"5315:88:54"},"nodeType":"YulExpressionStatement","src":"5315:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5423:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5426:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5416:6:54"},"nodeType":"YulFunctionCall","src":"5416:15:54"},"nodeType":"YulExpressionStatement","src":"5416:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5451:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5454:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5444:6:54"},"nodeType":"YulFunctionCall","src":"5444:15:54"},"nodeType":"YulExpressionStatement","src":"5444:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5257:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5280:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5288:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5277:2:54"},"nodeType":"YulFunctionCall","src":"5277:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5254:2:54"},"nodeType":"YulFunctionCall","src":"5254:38:54"},"nodeType":"YulIf","src":"5251:218:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"5073:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5082:6:54","type":""}],"src":"5038:437:54"},{"body":{"nodeType":"YulBlock","src":"5654:223:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5671:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5682:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5664:6:54"},"nodeType":"YulFunctionCall","src":"5664:21:54"},"nodeType":"YulExpressionStatement","src":"5664:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5705:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5701:3:54"},"nodeType":"YulFunctionCall","src":"5701:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5721:2:54","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5694:6:54"},"nodeType":"YulFunctionCall","src":"5694:30:54"},"nodeType":"YulExpressionStatement","src":"5694:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5744:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5755:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5740:3:54"},"nodeType":"YulFunctionCall","src":"5740:18:54"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5760:34:54","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5733:6:54"},"nodeType":"YulFunctionCall","src":"5733:62:54"},"nodeType":"YulExpressionStatement","src":"5733:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5815:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5826:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5811:3:54"},"nodeType":"YulFunctionCall","src":"5811:18:54"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5831:3:54","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5804:6:54"},"nodeType":"YulFunctionCall","src":"5804:31:54"},"nodeType":"YulExpressionStatement","src":"5804:31:54"},{"nodeType":"YulAssignment","src":"5844:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5856:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5867:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5852:3:54"},"nodeType":"YulFunctionCall","src":"5852:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5844:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5631:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5645:4:54","type":""}],"src":"5480:397:54"},{"body":{"nodeType":"YulBlock","src":"6056:252:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6073:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6084:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6066:6:54"},"nodeType":"YulFunctionCall","src":"6066:21:54"},"nodeType":"YulExpressionStatement","src":"6066:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6107:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6118:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6103:3:54"},"nodeType":"YulFunctionCall","src":"6103:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6123:2:54","type":"","value":"62"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6096:6:54"},"nodeType":"YulFunctionCall","src":"6096:30:54"},"nodeType":"YulExpressionStatement","src":"6096:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6146:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6157:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6142:3:54"},"nodeType":"YulFunctionCall","src":"6142:18:54"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"6162:34:54","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6135:6:54"},"nodeType":"YulFunctionCall","src":"6135:62:54"},"nodeType":"YulExpressionStatement","src":"6135:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6217:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6228:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6213:3:54"},"nodeType":"YulFunctionCall","src":"6213:18:54"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"6233:32:54","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6206:6:54"},"nodeType":"YulFunctionCall","src":"6206:60:54"},"nodeType":"YulExpressionStatement","src":"6206:60:54"},{"nodeType":"YulAssignment","src":"6275:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6287:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6298:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6283:3:54"},"nodeType":"YulFunctionCall","src":"6283:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6275:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6033:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6047:4:54","type":""}],"src":"5882:426:54"},{"body":{"nodeType":"YulBlock","src":"6487:236:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6504:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6515:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6497:6:54"},"nodeType":"YulFunctionCall","src":"6497:21:54"},"nodeType":"YulExpressionStatement","src":"6497:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6538:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6549:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6534:3:54"},"nodeType":"YulFunctionCall","src":"6534:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6554:2:54","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6527:6:54"},"nodeType":"YulFunctionCall","src":"6527:30:54"},"nodeType":"YulExpressionStatement","src":"6527:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6577:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6588:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6573:3:54"},"nodeType":"YulFunctionCall","src":"6573:18:54"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6593:34:54","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6566:6:54"},"nodeType":"YulFunctionCall","src":"6566:62:54"},"nodeType":"YulExpressionStatement","src":"6566:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6648:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6659:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6644:3:54"},"nodeType":"YulFunctionCall","src":"6644:18:54"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6664:16:54","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6637:6:54"},"nodeType":"YulFunctionCall","src":"6637:44:54"},"nodeType":"YulExpressionStatement","src":"6637:44:54"},{"nodeType":"YulAssignment","src":"6690:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6702:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6713:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6698:3:54"},"nodeType":"YulFunctionCall","src":"6698:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6690:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6464:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6478:4:54","type":""}],"src":"6313:410:54"},{"body":{"nodeType":"YulBlock","src":"6902:174:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6919:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6930:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6912:6:54"},"nodeType":"YulFunctionCall","src":"6912:21:54"},"nodeType":"YulExpressionStatement","src":"6912:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6953:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6964:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6949:3:54"},"nodeType":"YulFunctionCall","src":"6949:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6969:2:54","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6942:6:54"},"nodeType":"YulFunctionCall","src":"6942:30:54"},"nodeType":"YulExpressionStatement","src":"6942:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6992:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7003:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6988:3:54"},"nodeType":"YulFunctionCall","src":"6988:18:54"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"7008:26:54","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6981:6:54"},"nodeType":"YulFunctionCall","src":"6981:54:54"},"nodeType":"YulExpressionStatement","src":"6981:54:54"},{"nodeType":"YulAssignment","src":"7044:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7056:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7067:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7052:3:54"},"nodeType":"YulFunctionCall","src":"7052:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7044:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6879:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6893:4:54","type":""}],"src":"6728:348:54"},{"body":{"nodeType":"YulBlock","src":"7255:231:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7272:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7283:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7265:6:54"},"nodeType":"YulFunctionCall","src":"7265:21:54"},"nodeType":"YulExpressionStatement","src":"7265:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7306:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7317:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7302:3:54"},"nodeType":"YulFunctionCall","src":"7302:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7322:2:54","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7295:6:54"},"nodeType":"YulFunctionCall","src":"7295:30:54"},"nodeType":"YulExpressionStatement","src":"7295:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7345:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7356:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7341:3:54"},"nodeType":"YulFunctionCall","src":"7341:18:54"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7361:34:54","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7334:6:54"},"nodeType":"YulFunctionCall","src":"7334:62:54"},"nodeType":"YulExpressionStatement","src":"7334:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7416:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7427:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7412:3:54"},"nodeType":"YulFunctionCall","src":"7412:18:54"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7432:11:54","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7405:6:54"},"nodeType":"YulFunctionCall","src":"7405:39:54"},"nodeType":"YulExpressionStatement","src":"7405:39:54"},{"nodeType":"YulAssignment","src":"7453:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7465:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7476:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7461:3:54"},"nodeType":"YulFunctionCall","src":"7461:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7453:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7232:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7246:4:54","type":""}],"src":"7081:405:54"},{"body":{"nodeType":"YulBlock","src":"7678:283:54","statements":[{"nodeType":"YulVariableDeclaration","src":"7688:27:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7708:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7702:5:54"},"nodeType":"YulFunctionCall","src":"7702:13:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7692:6:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7750:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"7758:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7746:3:54"},"nodeType":"YulFunctionCall","src":"7746:17:54"},{"name":"pos","nodeType":"YulIdentifier","src":"7765:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"7770:6:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"7724:21:54"},"nodeType":"YulFunctionCall","src":"7724:53:54"},"nodeType":"YulExpressionStatement","src":"7724:53:54"},{"nodeType":"YulVariableDeclaration","src":"7786:29:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7803:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"7808:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7799:3:54"},"nodeType":"YulFunctionCall","src":"7799:16:54"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"7790:5:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7824:29:54","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7846:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7840:5:54"},"nodeType":"YulFunctionCall","src":"7840:13:54"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"7828:8:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7888:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"7896:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7884:3:54"},"nodeType":"YulFunctionCall","src":"7884:17:54"},{"name":"end_1","nodeType":"YulIdentifier","src":"7903:5:54"},{"name":"length_1","nodeType":"YulIdentifier","src":"7910:8:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"7862:21:54"},"nodeType":"YulFunctionCall","src":"7862:57:54"},"nodeType":"YulExpressionStatement","src":"7862:57:54"},{"nodeType":"YulAssignment","src":"7928:27:54","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"7939:5:54"},{"name":"length_1","nodeType":"YulIdentifier","src":"7946:8:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7935:3:54"},"nodeType":"YulFunctionCall","src":"7935:20:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7928:3:54"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7646:3:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7651:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7659:6:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7670:3:54","type":""}],"src":"7491:470:54"},{"body":{"nodeType":"YulBlock","src":"8140:227:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8157:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8168:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8150:6:54"},"nodeType":"YulFunctionCall","src":"8150:21:54"},"nodeType":"YulExpressionStatement","src":"8150:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8191:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8202:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8187:3:54"},"nodeType":"YulFunctionCall","src":"8187:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"8207:2:54","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8180:6:54"},"nodeType":"YulFunctionCall","src":"8180:30:54"},"nodeType":"YulExpressionStatement","src":"8180:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8230:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8241:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8226:3:54"},"nodeType":"YulFunctionCall","src":"8226:18:54"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"8246:34:54","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8219:6:54"},"nodeType":"YulFunctionCall","src":"8219:62:54"},"nodeType":"YulExpressionStatement","src":"8219:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8301:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8312:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8297:3:54"},"nodeType":"YulFunctionCall","src":"8297:18:54"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"8317:7:54","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8290:6:54"},"nodeType":"YulFunctionCall","src":"8290:35:54"},"nodeType":"YulExpressionStatement","src":"8290:35:54"},{"nodeType":"YulAssignment","src":"8334:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8346:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8357:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8342:3:54"},"nodeType":"YulFunctionCall","src":"8342:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8334:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8117:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8131:4:54","type":""}],"src":"7966:401:54"},{"body":{"nodeType":"YulBlock","src":"8546:226:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8563:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8574:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8556:6:54"},"nodeType":"YulFunctionCall","src":"8556:21:54"},"nodeType":"YulExpressionStatement","src":"8556:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8597:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8608:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8593:3:54"},"nodeType":"YulFunctionCall","src":"8593:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"8613:2:54","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8586:6:54"},"nodeType":"YulFunctionCall","src":"8586:30:54"},"nodeType":"YulExpressionStatement","src":"8586:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8636:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8647:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8632:3:54"},"nodeType":"YulFunctionCall","src":"8632:18:54"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8652:34:54","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8625:6:54"},"nodeType":"YulFunctionCall","src":"8625:62:54"},"nodeType":"YulExpressionStatement","src":"8625:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8707:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8718:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8703:3:54"},"nodeType":"YulFunctionCall","src":"8703:18:54"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8723:6:54","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8696:6:54"},"nodeType":"YulFunctionCall","src":"8696:34:54"},"nodeType":"YulExpressionStatement","src":"8696:34:54"},{"nodeType":"YulAssignment","src":"8739:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8751:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8762:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8747:3:54"},"nodeType":"YulFunctionCall","src":"8747:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8739:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8523:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8537:4:54","type":""}],"src":"8372:400:54"},{"body":{"nodeType":"YulBlock","src":"8809:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8826:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8829:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8819:6:54"},"nodeType":"YulFunctionCall","src":"8819:88:54"},"nodeType":"YulExpressionStatement","src":"8819:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8923:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8926:4:54","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8916:6:54"},"nodeType":"YulFunctionCall","src":"8916:15:54"},"nodeType":"YulExpressionStatement","src":"8916:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8947:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8950:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8940:6:54"},"nodeType":"YulFunctionCall","src":"8940:15:54"},"nodeType":"YulExpressionStatement","src":"8940:15:54"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8777:184:54"},{"body":{"nodeType":"YulBlock","src":"9015:76:54","statements":[{"body":{"nodeType":"YulBlock","src":"9037:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9039:16:54"},"nodeType":"YulFunctionCall","src":"9039:18:54"},"nodeType":"YulExpressionStatement","src":"9039:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9031:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"9034:1:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9028:2:54"},"nodeType":"YulFunctionCall","src":"9028:8:54"},"nodeType":"YulIf","src":"9025:34:54"},{"nodeType":"YulAssignment","src":"9068:17:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9080:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"9083:1:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9076:3:54"},"nodeType":"YulFunctionCall","src":"9076:9:54"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"9068:4:54"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8997:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"9000:1:54","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"9006:4:54","type":""}],"src":"8966:125:54"},{"body":{"nodeType":"YulBlock","src":"9144:80:54","statements":[{"body":{"nodeType":"YulBlock","src":"9171:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9173:16:54"},"nodeType":"YulFunctionCall","src":"9173:18:54"},"nodeType":"YulExpressionStatement","src":"9173:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9160:1:54"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"9167:1:54"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9163:3:54"},"nodeType":"YulFunctionCall","src":"9163:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9157:2:54"},"nodeType":"YulFunctionCall","src":"9157:13:54"},"nodeType":"YulIf","src":"9154:39:54"},{"nodeType":"YulAssignment","src":"9202:16:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9213:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"9216:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9209:3:54"},"nodeType":"YulFunctionCall","src":"9209:9:54"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"9202:3:54"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"9127:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"9130:1:54","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"9136:3:54","type":""}],"src":"9096:128:54"},{"body":{"nodeType":"YulBlock","src":"9403:175:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9420:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9431:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9413:6:54"},"nodeType":"YulFunctionCall","src":"9413:21:54"},"nodeType":"YulExpressionStatement","src":"9413:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9454:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9465:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9450:3:54"},"nodeType":"YulFunctionCall","src":"9450:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"9470:2:54","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9443:6:54"},"nodeType":"YulFunctionCall","src":"9443:30:54"},"nodeType":"YulExpressionStatement","src":"9443:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9493:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9504:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9489:3:54"},"nodeType":"YulFunctionCall","src":"9489:18:54"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"9509:27:54","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9482:6:54"},"nodeType":"YulFunctionCall","src":"9482:55:54"},"nodeType":"YulExpressionStatement","src":"9482:55:54"},{"nodeType":"YulAssignment","src":"9546:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9558:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9569:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9554:3:54"},"nodeType":"YulFunctionCall","src":"9554:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9546:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9380:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9394:4:54","type":""}],"src":"9229:349:54"},{"body":{"nodeType":"YulBlock","src":"9757:240:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9774:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9785:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9767:6:54"},"nodeType":"YulFunctionCall","src":"9767:21:54"},"nodeType":"YulExpressionStatement","src":"9767:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9808:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9819:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9804:3:54"},"nodeType":"YulFunctionCall","src":"9804:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"9824:2:54","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9797:6:54"},"nodeType":"YulFunctionCall","src":"9797:30:54"},"nodeType":"YulExpressionStatement","src":"9797:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9847:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9858:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9843:3:54"},"nodeType":"YulFunctionCall","src":"9843:18:54"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"9863:34:54","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9836:6:54"},"nodeType":"YulFunctionCall","src":"9836:62:54"},"nodeType":"YulExpressionStatement","src":"9836:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9918:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9929:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9914:3:54"},"nodeType":"YulFunctionCall","src":"9914:18:54"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"9934:20:54","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9907:6:54"},"nodeType":"YulFunctionCall","src":"9907:48:54"},"nodeType":"YulExpressionStatement","src":"9907:48:54"},{"nodeType":"YulAssignment","src":"9964:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9976:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9987:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9972:3:54"},"nodeType":"YulFunctionCall","src":"9972:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9964:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9734:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9748:4:54","type":""}],"src":"9583:414:54"},{"body":{"nodeType":"YulBlock","src":"10049:148:54","statements":[{"body":{"nodeType":"YulBlock","src":"10140:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10142:16:54"},"nodeType":"YulFunctionCall","src":"10142:18:54"},"nodeType":"YulExpressionStatement","src":"10142:18:54"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10065:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"10072:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10062:2:54"},"nodeType":"YulFunctionCall","src":"10062:77:54"},"nodeType":"YulIf","src":"10059:103:54"},{"nodeType":"YulAssignment","src":"10171:20:54","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10182:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"10189:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10178:3:54"},"nodeType":"YulFunctionCall","src":"10178:13:54"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"10171:3:54"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10031:5:54","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"10041:3:54","type":""}],"src":"10002:195:54"},{"body":{"nodeType":"YulBlock","src":"10234:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10251:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10254:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10244:6:54"},"nodeType":"YulFunctionCall","src":"10244:88:54"},"nodeType":"YulExpressionStatement","src":"10244:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10348:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10351:4:54","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10341:6:54"},"nodeType":"YulFunctionCall","src":"10341:15:54"},"nodeType":"YulExpressionStatement","src":"10341:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10372:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10375:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10365:6:54"},"nodeType":"YulFunctionCall","src":"10365:15:54"},"nodeType":"YulExpressionStatement","src":"10365:15:54"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"10202:184:54"},{"body":{"nodeType":"YulBlock","src":"10437:74:54","statements":[{"body":{"nodeType":"YulBlock","src":"10460:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"10462:16:54"},"nodeType":"YulFunctionCall","src":"10462:18:54"},"nodeType":"YulExpressionStatement","src":"10462:18:54"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10457:1:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10450:6:54"},"nodeType":"YulFunctionCall","src":"10450:9:54"},"nodeType":"YulIf","src":"10447:35:54"},{"nodeType":"YulAssignment","src":"10491:14:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10500:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10503:1:54"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10496:3:54"},"nodeType":"YulFunctionCall","src":"10496:9:54"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"10491:1:54"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10422:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10425:1:54","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"10431:1:54","type":""}],"src":"10391:120:54"},{"body":{"nodeType":"YulBlock","src":"10554:74:54","statements":[{"body":{"nodeType":"YulBlock","src":"10577:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"10579:16:54"},"nodeType":"YulFunctionCall","src":"10579:18:54"},"nodeType":"YulExpressionStatement","src":"10579:18:54"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10574:1:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10567:6:54"},"nodeType":"YulFunctionCall","src":"10567:9:54"},"nodeType":"YulIf","src":"10564:35:54"},{"nodeType":"YulAssignment","src":"10608:14:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10617:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10620:1:54"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"10613:3:54"},"nodeType":"YulFunctionCall","src":"10613:9:54"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"10608:1:54"}]}]},"name":"mod_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10539:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10542:1:54","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"10548:1:54","type":""}],"src":"10516:112:54"},{"body":{"nodeType":"YulBlock","src":"10665:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10682:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10685:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10675:6:54"},"nodeType":"YulFunctionCall","src":"10675:88:54"},"nodeType":"YulExpressionStatement","src":"10675:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10779:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10782:4:54","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10772:6:54"},"nodeType":"YulFunctionCall","src":"10772:15:54"},"nodeType":"YulExpressionStatement","src":"10772:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10803:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10806:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10796:6:54"},"nodeType":"YulFunctionCall","src":"10796:15:54"},"nodeType":"YulExpressionStatement","src":"10796:15:54"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"10633:184:54"},{"body":{"nodeType":"YulBlock","src":"11025:309:54","statements":[{"nodeType":"YulVariableDeclaration","src":"11035:52:54","value":{"kind":"number","nodeType":"YulLiteral","src":"11045:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11039:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11103:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11118:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"11126:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11114:3:54"},"nodeType":"YulFunctionCall","src":"11114:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11096:6:54"},"nodeType":"YulFunctionCall","src":"11096:34:54"},"nodeType":"YulExpressionStatement","src":"11096:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11150:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11161:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11146:3:54"},"nodeType":"YulFunctionCall","src":"11146:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11170:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"11178:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11166:3:54"},"nodeType":"YulFunctionCall","src":"11166:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11139:6:54"},"nodeType":"YulFunctionCall","src":"11139:43:54"},"nodeType":"YulExpressionStatement","src":"11139:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11202:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11213:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11198:3:54"},"nodeType":"YulFunctionCall","src":"11198:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"11218:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11191:6:54"},"nodeType":"YulFunctionCall","src":"11191:34:54"},"nodeType":"YulExpressionStatement","src":"11191:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11245:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11256:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11241:3:54"},"nodeType":"YulFunctionCall","src":"11241:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"11261:3:54","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11234:6:54"},"nodeType":"YulFunctionCall","src":"11234:31:54"},"nodeType":"YulExpressionStatement","src":"11234:31:54"},{"nodeType":"YulAssignment","src":"11274:54:54","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"11300:6:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11312:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11323:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11308:3:54"},"nodeType":"YulFunctionCall","src":"11308:19:54"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"11282:17:54"},"nodeType":"YulFunctionCall","src":"11282:46:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11274:4:54"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10970:9:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10981:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10989:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10997:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11005:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11016:4:54","type":""}],"src":"10822:512:54"},{"body":{"nodeType":"YulBlock","src":"11419:169:54","statements":[{"body":{"nodeType":"YulBlock","src":"11465:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11474:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11477:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11467:6:54"},"nodeType":"YulFunctionCall","src":"11467:12:54"},"nodeType":"YulExpressionStatement","src":"11467:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11440:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"11449:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11436:3:54"},"nodeType":"YulFunctionCall","src":"11436:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"11461:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11432:3:54"},"nodeType":"YulFunctionCall","src":"11432:32:54"},"nodeType":"YulIf","src":"11429:52:54"},{"nodeType":"YulVariableDeclaration","src":"11490:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11509:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11503:5:54"},"nodeType":"YulFunctionCall","src":"11503:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11494:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11552:5:54"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"11528:23:54"},"nodeType":"YulFunctionCall","src":"11528:30:54"},"nodeType":"YulExpressionStatement","src":"11528:30:54"},{"nodeType":"YulAssignment","src":"11567:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"11577:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11567:6:54"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11385:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11396:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11408:6:54","type":""}],"src":"11339:249:54"}]},"contents":"{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\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 copy_memory_to_memory(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        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 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_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { 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        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\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_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value3 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004611121565b610252565b60405190151581526020015b60405180910390f35b610114610337565b60405161010391906111b4565b61013461012f3660046111c7565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c610167366004611209565b6103fd565b005b61016c61017c366004611233565b61055a565b61016c61018f366004611233565b6105e1565b6101346101a23660046111c7565b6105fc565b6101ba6101b536600461126f565b61066e565b604051908152602001610103565b610114610722565b61016c6101de36600461128a565b610731565b61016c6101f13660046112f5565b610740565b6101146102043660046111c7565b6107ce565b6100f76102173660046113ef565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461034690611422565b80601f016020809104026020016040519081016040528092919081815260200182805461037290611422565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60006103d482610842565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610408826105fc565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806104d957506104d98133610217565b61054b5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104a7565b61055583836108b6565b505050565b6105643382610956565b6105d65760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104a7565b610555838383610a16565b61055583838360405180602001604052806000815250610740565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806103315760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104a7565b600073ffffffffffffffffffffffffffffffffffffffff82166106f95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016104a7565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461034690611422565b61073c338383610c49565b5050565b61074a3383610956565b6107bc5760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104a7565b6107c884848484610d5c565b50505050565b60606107d982610842565b60006107f060408051602081019091526000815290565b90506000815111610810576040518060200160405280600081525061083b565b8061081a84610de5565b60405160200161082b929190611475565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff166108b35760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104a7565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610910826105fc565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610962836105fc565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806109d0575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610a0e57508373ffffffffffffffffffffffffffffffffffffffff166109f6846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610a36826105fc565b73ffffffffffffffffffffffffffffffffffffffff1614610abf5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104a7565b73ffffffffffffffffffffffffffffffffffffffff8216610b475760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104a7565b610b526000826108b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610b889084906114d3565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610bc39084906114ea565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cc45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104a7565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d67848484610a16565b610d7384848484610f1a565b6107c85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104a7565b606081600003610e2857505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610e525780610e3c81611502565b9150610e4b9050600a83611569565b9150610e2c565b60008167ffffffffffffffff811115610e6d57610e6d6112c6565b6040519080825280601f01601f191660200182016040528015610e97576020820181803683370190505b5090505b8415610a0e57610eac6001836114d3565b9150610eb9600a8661157d565b610ec49060306114ea565b60f81b818381518110610ed957610ed9611591565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610f13600a86611569565b9450610e9b565b600073ffffffffffffffffffffffffffffffffffffffff84163b156110e8576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610f919033908990889088906004016115c0565b6020604051808303816000875af1925050508015610fea575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610fe791810190611609565b60015b61109d573d808015611018576040519150601f19603f3d011682016040523d82523d6000602084013e61101d565b606091505b5080516000036110955760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104a7565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610a0e565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146108b357600080fd5b60006020828403121561113357600080fd5b813561083b816110f3565b60005b83811015611159578181015183820152602001611141565b838111156107c85750506000910152565b6000815180845261118281602086016020860161113e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061083b602083018461116a565b6000602082840312156111d957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461120457600080fd5b919050565b6000806040838503121561121c57600080fd5b611225836111e0565b946020939093013593505050565b60008060006060848603121561124857600080fd5b611251846111e0565b925061125f602085016111e0565b9150604084013590509250925092565b60006020828403121561128157600080fd5b61083b826111e0565b6000806040838503121561129d57600080fd5b6112a6836111e0565b9150602083013580151581146112bb57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561130b57600080fd5b611314856111e0565b9350611322602086016111e0565b925060408501359150606085013567ffffffffffffffff8082111561134657600080fd5b818701915087601f83011261135a57600080fd5b81358181111561136c5761136c6112c6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156113b2576113b26112c6565b816040528281528a60208487010111156113cb57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561140257600080fd5b61140b836111e0565b9150611419602084016111e0565b90509250929050565b600181811c9082168061143657607f821691505b60208210810361146f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161148781846020880161113e565b83519083019061149b81836020880161113e565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114e5576114e56114a4565b500390565b600082198211156114fd576114fd6114a4565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611533576115336114a4565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826115785761157861153a565b500490565b60008261158c5761158c61153a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526115ff608083018461116a565b9695505050505050565b60006020828403121561161b57600080fd5b815161083b816110f356fea26469706673582212209615665e1f4556e9e842ed4ae0ff27a11f5a728340e2f9ba045e18dfd40cbd5564736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1121 JUMP JUMPDEST PUSH2 0x252 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0x11B4 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x11C7 JUMP JUMPDEST PUSH2 0x3C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x167 CALLDATASIZE PUSH1 0x4 PUSH2 0x1209 JUMP JUMPDEST PUSH2 0x3FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16C PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0x1233 JUMP JUMPDEST PUSH2 0x55A JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0x1233 JUMP JUMPDEST PUSH2 0x5E1 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C7 JUMP JUMPDEST PUSH2 0x5FC JUMP JUMPDEST PUSH2 0x1BA PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x722 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x1DE CALLDATASIZE PUSH1 0x4 PUSH2 0x128A JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F5 JUMP JUMPDEST PUSH2 0x740 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C7 JUMP JUMPDEST PUSH2 0x7CE JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x13EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2E5 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x331 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x346 SWAP1 PUSH2 0x1422 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x372 SWAP1 PUSH2 0x1422 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x394 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D4 DUP3 PUSH2 0x842 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP3 PUSH2 0x5FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ DUP1 PUSH2 0x4D9 JUMPI POP PUSH2 0x4D9 DUP2 CALLER PUSH2 0x217 JUMP JUMPDEST PUSH2 0x54B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0x555 DUP4 DUP4 PUSH2 0x8B6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x564 CALLER DUP3 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x5D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0x555 DUP4 DUP4 DUP4 PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x555 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x740 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x331 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x6F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x346 SWAP1 PUSH2 0x1422 JUMP JUMPDEST PUSH2 0x73C CALLER DUP4 DUP4 PUSH2 0xC49 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x74A CALLER DUP4 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x7BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0x7C8 DUP5 DUP5 DUP5 DUP5 PUSH2 0xD5C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x7D9 DUP3 PUSH2 0x842 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F0 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x810 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x83B JUMP JUMPDEST DUP1 PUSH2 0x81A DUP5 PUSH2 0xDE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x82B SWAP3 SWAP2 SWAP1 PUSH2 0x1475 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x910 DUP3 PUSH2 0x5FC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x962 DUP4 PUSH2 0x5FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x9D0 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0xA0E JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9F6 DUP5 PUSH2 0x3C9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA36 DUP3 PUSH2 0x5FC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB47 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0xB52 PUSH1 0x0 DUP3 PUSH2 0x8B6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xB88 SWAP1 DUP5 SWAP1 PUSH2 0x14D3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xBC3 SWAP1 DUP5 SWAP1 PUSH2 0x14EA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xD67 DUP5 DUP5 DUP5 PUSH2 0xA16 JUMP JUMPDEST PUSH2 0xD73 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF1A JUMP JUMPDEST PUSH2 0x7C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 SUB PUSH2 0xE28 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xE52 JUMPI DUP1 PUSH2 0xE3C DUP2 PUSH2 0x1502 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4B SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x1569 JUMP JUMPDEST SWAP2 POP PUSH2 0xE2C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE6D JUMPI PUSH2 0xE6D PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE97 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0xA0E JUMPI PUSH2 0xEAC PUSH1 0x1 DUP4 PUSH2 0x14D3 JUMP JUMPDEST SWAP2 POP PUSH2 0xEB9 PUSH1 0xA DUP7 PUSH2 0x157D JUMP JUMPDEST PUSH2 0xEC4 SWAP1 PUSH1 0x30 PUSH2 0x14EA JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xED9 JUMPI PUSH2 0xED9 PUSH2 0x1591 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0xF13 PUSH1 0xA DUP7 PUSH2 0x1569 JUMP JUMPDEST SWAP5 POP PUSH2 0xE9B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xF91 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x15C0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xFEA JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xFE7 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1609 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x109D JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1018 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 0x101D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1095 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4A7 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0xA0E JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x83B DUP2 PUSH2 0x10F3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1159 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1141 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7C8 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1182 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x113E JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x83B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x116A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x121C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1225 DUP4 PUSH2 0x11E0 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1251 DUP5 PUSH2 0x11E0 JUMP JUMPDEST SWAP3 POP PUSH2 0x125F PUSH1 0x20 DUP6 ADD PUSH2 0x11E0 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x83B DUP3 PUSH2 0x11E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x129D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12A6 DUP4 PUSH2 0x11E0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x12BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x130B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1314 DUP6 PUSH2 0x11E0 JUMP JUMPDEST SWAP4 POP PUSH2 0x1322 PUSH1 0x20 DUP7 ADD PUSH2 0x11E0 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1346 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x135A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x136C JUMPI PUSH2 0x136C PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x13B2 JUMPI PUSH2 0x13B2 PUSH2 0x12C6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x13CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x140B DUP4 PUSH2 0x11E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x1419 PUSH1 0x20 DUP5 ADD PUSH2 0x11E0 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1436 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x146F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1487 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x113E JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x149B DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x113E JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x14E5 JUMPI PUSH2 0x14E5 PUSH2 0x14A4 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x14FD JUMPI PUSH2 0x14FD PUSH2 0x14A4 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1533 JUMPI PUSH2 0x1533 PUSH2 0x14A4 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1578 JUMPI PUSH2 0x1578 PUSH2 0x153A JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x158C JUMPI PUSH2 0x158C PUSH2 0x153A JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x15FF PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x116A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x161B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x83B DUP2 PUSH2 0x10F3 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 ISZERO PUSH7 0x5E1F4556E9E842 0xED 0x4A 0xE0 SELFDESTRUCT 0x27 LOG1 0x1F GAS PUSH19 0x8340E2F9BA045E18DFD40CBD5564736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"628:13718:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;611:14:54;;604:22;586:41;;574:2;559:18;1570:300:4;;;;;;;;2470:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;1809:42:54;1797:55;;;1779:74;;1767:2;1752:18;3935:167:4;1633:226:54;3467:407:4;;;;;;:::i;:::-;;:::i;:::-;;4612:327;;;;;;:::i;:::-;;:::i;5005:179::-;;;;;;:::i;:::-;;:::i;2190:218::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2994:25:54;;;2982:2;2967:18;1929:204:4;2848:177:54;2632:102:4;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5250:315::-;;;;;;:::i;:::-;;:::i;2800:276::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;4508:25;;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;1707:40;;;1722:25;1707:40;;:104;;-1:-1:-1;1763:48:4;;;1778:33;1763:48;1707:104;:156;;;-1:-1:-1;952:25:11;937:40;;;;1827:36:4;1688:175;1570:300;-1:-1:-1;;1570:300:4:o;2470:98::-;2524:13;2556:5;2549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:4;;;;:15;:24;;;;;;;;;3935:167::o;3467:407::-;3547:13;3563:23;3578:7;3563:14;:23::i;:::-;3547:39;;3610:5;3604:11;;:2;:11;;;3596:57;;;;-1:-1:-1;;;3596:57:4;;5682:2:54;3596:57:4;;;5664:21:54;5721:2;5701:18;;;5694:30;5760:34;5740:18;;;5733:62;5831:3;5811:18;;;5804:31;5852:19;;3596:57:4;;;;;;;;;719:10:9;3685:21:4;;;;;:62;;-1:-1:-1;3710:37:4;3727:5;719:10:9;4388:162:4;:::i;3710:37::-;3664:171;;;;-1:-1:-1;;;3664:171:4;;6084:2:54;3664:171:4;;;6066:21:54;6123:2;6103:18;;;6096:30;6162:34;6142:18;;;6135:62;6233:32;6213:18;;;6206:60;6283:19;;3664:171:4;5882:426:54;3664:171:4;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3537:337;3467:407;;:::o;4612:327::-;4801:41;719:10:9;4834:7:4;4801:18;:41::i;:::-;4793:100;;;;-1:-1:-1;;;4793:100:4;;6515:2:54;4793:100:4;;;6497:21:54;6554:2;6534:18;;;6527:30;6593:34;6573:18;;;6566:62;6664:16;6644:18;;;6637:44;6698:19;;4793:100:4;6313:410:54;4793:100:4;4904:28;4914:4;4920:2;4924:7;4904:9;:28::i;5005:179::-;5138:39;5155:4;5161:2;5165:7;5138:39;;;;;;;;;;;;:16;:39::i;2190:218::-;2262:7;2297:16;;;:7;:16;;;;;;;;;2323:56;;;;-1:-1:-1;;;2323:56:4;;6930:2:54;2323:56:4;;;6912:21:54;6969:2;6949:18;;;6942:30;7008:26;6988:18;;;6981:54;7052:18;;2323:56:4;6728:348:54;1929:204:4;2001:7;2028:19;;;2020:73;;;;-1:-1:-1;;;2020:73:4;;7283:2:54;2020:73:4;;;7265:21:54;7322:2;7302:18;;;7295:30;7361:34;7341:18;;;7334:62;7432:11;7412:18;;;7405:39;7461:19;;2020:73:4;7081:405:54;2020:73:4;-1:-1:-1;2110:16:4;;;;;;:9;:16;;;;;;;1929:204::o;2632:102::-;2688:13;2720:7;2713:14;;;;;:::i;4169:153::-;4263:52;719:10:9;4296:8:4;4306;4263:18;:52::i;:::-;4169:153;;:::o;5250:315::-;5418:41;719:10:9;5451:7:4;5418:18;:41::i;:::-;5410:100;;;;-1:-1:-1;;;5410:100:4;;6515:2:54;5410:100:4;;;6497:21:54;6554:2;6534:18;;;6527:30;6593:34;6573:18;;;6566:62;6664:16;6644:18;;;6637:44;6698:19;;5410:100:4;6313:410:54;5410:100:4;5520:38;5534:4;5540:2;5544:7;5553:4;5520:13;:38::i;:::-;5250:315;;;;:::o;2800:276::-;2873:13;2898:23;2913:7;2898:14;:23::i;:::-;2932:21;2956:10;3394:9;;;;;;;;;-1:-1:-1;3394:9:4;;;3318:92;2956:10;2932:34;;3007:1;2989:7;2983:21;:25;:86;;;;;;;;;;;;;;;;;3035:7;3044:18;:7;:16;:18::i;:::-;3018:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2983:86;2976:93;2800:276;-1:-1:-1;;;2800:276:4:o;11657:133::-;7099:4;7122:16;;;:7;:16;;;;;;:30;:16;11730:53;;;;-1:-1:-1;;;11730:53:4;;6930:2:54;11730:53:4;;;6912:21:54;6969:2;6949:18;;;6942:30;7008:26;6988:18;;;6981:54;7052:18;;11730:53:4;6728:348:54;11730:53:4;11657:133;:::o;10959:171::-;11033:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;11086:23;11033:24;11086:14;:23::i;:::-;11077:46;;;;;;;;;;;;10959:171;;:::o;7317:261::-;7410:4;7426:13;7442:23;7457:7;7442:14;:23::i;:::-;7426:39;;7494:5;7483:16;;:7;:16;;;:52;;;-1:-1:-1;4508:25:4;;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7503:32;7483:87;;;;7563:7;7539:31;;:20;7551:7;7539:11;:20::i;:::-;:31;;;7483:87;7475:96;7317:261;-1:-1:-1;;;;7317:261:4:o;10242:605::-;10396:4;10369:31;;:23;10384:7;10369:14;:23::i;:::-;:31;;;10361:81;;;;-1:-1:-1;;;10361:81:4;;8168:2:54;10361:81:4;;;8150:21:54;8207:2;8187:18;;;8180:30;8246:34;8226:18;;;8219:62;8317:7;8297:18;;;8290:35;8342:19;;10361:81:4;7966:401:54;10361:81:4;10460:16;;;10452:65;;;;-1:-1:-1;;;10452:65:4;;8574:2:54;10452:65:4;;;8556:21:54;8613:2;8593:18;;;8586:30;8652:34;8632:18;;;8625:62;8723:6;8703:18;;;8696:34;8747:19;;10452:65:4;8372:400:54;10452:65:4;10629:29;10646:1;10650:7;10629:8;:29::i;:::-;10669:15;;;;;;;:9;:15;;;;;:20;;10688:1;;10669:15;:20;;10688:1;;10669:20;:::i;:::-;;;;-1:-1:-1;;10699:13:4;;;;;;;:9;:13;;;;;:18;;10716:1;;10699:13;:18;;10716:1;;10699:18;:::i;:::-;;;;-1:-1:-1;;10727:16:4;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;;10764:27;;10727:16;;10764:27;;;;;;;3537:337;3467:407;;:::o;11266:307::-;11416:8;11407:17;;:5;:17;;;11399:55;;;;-1:-1:-1;;;11399:55:4;;9431:2:54;11399:55:4;;;9413:21:54;9470:2;9450:18;;;9443:30;9509:27;9489:18;;;9482:55;9554:18;;11399:55:4;9229:349:54;11399:55:4;11464:25;;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;;;;;;;;;;;;11525:41;;586::54;;;11525::4;;559:18:54;11525:41:4;;;;;;;11266:307;;;:::o;6426:305::-;6576:28;6586:4;6592:2;6596:7;6576:9;:28::i;:::-;6622:47;6645:4;6651:2;6655:7;6664:4;6622:22;:47::i;:::-;6614:110;;;;-1:-1:-1;;;6614:110:4;;9785:2:54;6614:110:4;;;9767:21:54;9824:2;9804:18;;;9797:30;9863:34;9843:18;;;9836:62;9934:20;9914:18;;;9907:48;9972:19;;6614:110:4;9583:414:54;392:703:10;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:10;;;;;;;;;;;;;;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:10;;-1:-1:-1;837:2:10;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:10;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:10;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;1036:11:10;1045:2;1036:11;;:::i;:::-;;;908:150;;12342:831:4;12491:4;12511:13;;;1465:19:8;:23;12507:660:4;;12546:71;;;;;:36;;;;;;:71;;719:10:9;;12597:4:4;;12603:7;;12612:4;;12546:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12546:71:4;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12542:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:6;:13;12801:1;12784:18;12780:321;;12826:60;;-1:-1:-1;;;12826:60:4;;9785:2:54;12826:60:4;;;9767:21:54;9824:2;9804:18;;;9797:30;9863:34;9843:18;;;9836:62;9934:20;9914:18;;;9907:48;9972:19;;12826:60:4;9583:414:54;12780:321:4;13053:6;13047:13;13038:6;13034:2;13030:15;13023:38;12542:573;12667:51;;12677:41;12667:51;;-1:-1:-1;12660:58:4;;12507:660;-1:-1:-1;13152:4:4;12342:831;;;;;;:::o;14:177:54:-;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:258::-;710:1;720:113;734:6;731:1;728:13;720:113;;;810:11;;;804:18;791:11;;;784:39;756:2;749:10;720:113;;;851:6;848:1;845:13;842:48;;;-1:-1:-1;;886:1:54;868:16;;861:27;638:258::o;901:317::-;943:3;981:5;975:12;1008:6;1003:3;996:19;1024:63;1080:6;1073:4;1068:3;1064:14;1057:4;1050:5;1046:16;1024:63;:::i;:::-;1132:2;1120:15;1137:66;1116:88;1107:98;;;;1207:4;1103:109;;901:317;-1:-1:-1;;901:317:54:o;1223:220::-;1372:2;1361:9;1354:21;1335:4;1392:45;1433:2;1422:9;1418:18;1410:6;1392:45;:::i;1448:180::-;1507:6;1560:2;1548:9;1539:7;1535:23;1531:32;1528:52;;;1576:1;1573;1566:12;1528:52;-1:-1:-1;1599:23:54;;1448:180;-1:-1:-1;1448:180:54:o;1864:196::-;1932:20;;1992:42;1981:54;;1971:65;;1961:93;;2050:1;2047;2040:12;1961:93;1864:196;;;:::o;2065:254::-;2133:6;2141;2194:2;2182:9;2173:7;2169:23;2165:32;2162:52;;;2210:1;2207;2200:12;2162:52;2233:29;2252:9;2233:29;:::i;:::-;2223:39;2309:2;2294:18;;;;2281:32;;-1:-1:-1;;;2065:254:54:o;2324:328::-;2401:6;2409;2417;2470:2;2458:9;2449:7;2445:23;2441:32;2438:52;;;2486:1;2483;2476:12;2438:52;2509:29;2528:9;2509:29;:::i;:::-;2499:39;;2557:38;2591:2;2580:9;2576:18;2557:38;:::i;:::-;2547:48;;2642:2;2631:9;2627:18;2614:32;2604:42;;2324:328;;;;;:::o;2657:186::-;2716:6;2769:2;2757:9;2748:7;2744:23;2740:32;2737:52;;;2785:1;2782;2775:12;2737:52;2808:29;2827:9;2808:29;:::i;3030:347::-;3095:6;3103;3156:2;3144:9;3135:7;3131:23;3127:32;3124:52;;;3172:1;3169;3162:12;3124:52;3195:29;3214:9;3195:29;:::i;:::-;3185:39;;3274:2;3263:9;3259:18;3246:32;3321:5;3314:13;3307:21;3300:5;3297:32;3287:60;;3343:1;3340;3333:12;3287:60;3366:5;3356:15;;;3030:347;;;;;:::o;3382:184::-;3434:77;3431:1;3424:88;3531:4;3528:1;3521:15;3555:4;3552:1;3545:15;3571:1197;3666:6;3674;3682;3690;3743:3;3731:9;3722:7;3718:23;3714:33;3711:53;;;3760:1;3757;3750:12;3711:53;3783:29;3802:9;3783:29;:::i;:::-;3773:39;;3831:38;3865:2;3854:9;3850:18;3831:38;:::i;:::-;3821:48;;3916:2;3905:9;3901:18;3888:32;3878:42;;3971:2;3960:9;3956:18;3943:32;3994:18;4035:2;4027:6;4024:14;4021:34;;;4051:1;4048;4041:12;4021:34;4089:6;4078:9;4074:22;4064:32;;4134:7;4127:4;4123:2;4119:13;4115:27;4105:55;;4156:1;4153;4146:12;4105:55;4192:2;4179:16;4214:2;4210;4207:10;4204:36;;;4220:18;;:::i;:::-;4354:2;4348:9;4416:4;4408:13;;4259:66;4404:22;;;4428:2;4400:31;4396:40;4384:53;;;4452:18;;;4472:22;;;4449:46;4446:72;;;4498:18;;:::i;:::-;4538:10;4534:2;4527:22;4573:2;4565:6;4558:18;4613:7;4608:2;4603;4599;4595:11;4591:20;4588:33;4585:53;;;4634:1;4631;4624:12;4585:53;4690:2;4685;4681;4677:11;4672:2;4664:6;4660:15;4647:46;4735:1;4730:2;4725;4717:6;4713:15;4709:24;4702:35;4756:6;4746:16;;;;;;;3571:1197;;;;;;;:::o;4773:260::-;4841:6;4849;4902:2;4890:9;4881:7;4877:23;4873:32;4870:52;;;4918:1;4915;4908:12;4870:52;4941:29;4960:9;4941:29;:::i;:::-;4931:39;;4989:38;5023:2;5012:9;5008:18;4989:38;:::i;:::-;4979:48;;4773:260;;;;;:::o;5038:437::-;5117:1;5113:12;;;;5160;;;5181:61;;5235:4;5227:6;5223:17;5213:27;;5181:61;5288:2;5280:6;5277:14;5257:18;5254:38;5251:218;;5325:77;5322:1;5315:88;5426:4;5423:1;5416:15;5454:4;5451:1;5444:15;5251:218;;5038:437;;;:::o;7491:470::-;7670:3;7708:6;7702:13;7724:53;7770:6;7765:3;7758:4;7750:6;7746:17;7724:53;:::i;:::-;7840:13;;7799:16;;;;7862:57;7840:13;7799:16;7896:4;7884:17;;7862:57;:::i;:::-;7935:20;;7491:470;-1:-1:-1;;;;7491:470:54:o;8777:184::-;8829:77;8826:1;8819:88;8926:4;8923:1;8916:15;8950:4;8947:1;8940:15;8966:125;9006:4;9034:1;9031;9028:8;9025:34;;;9039:18;;:::i;:::-;-1:-1:-1;9076:9:54;;8966:125::o;9096:128::-;9136:3;9167:1;9163:6;9160:1;9157:13;9154:39;;;9173:18;;:::i;:::-;-1:-1:-1;9209:9:54;;9096:128::o;10002:195::-;10041:3;10072:66;10065:5;10062:77;10059:103;;10142:18;;:::i;:::-;-1:-1:-1;10189:1:54;10178:13;;10002:195::o;10202:184::-;10254:77;10251:1;10244:88;10351:4;10348:1;10341:15;10375:4;10372:1;10365:15;10391:120;10431:1;10457;10447:35;;10462:18;;:::i;:::-;-1:-1:-1;10496:9:54;;10391:120::o;10516:112::-;10548:1;10574;10564:35;;10579:18;;:::i;:::-;-1:-1:-1;10613:9:54;;10516:112::o;10633:184::-;10685:77;10682:1;10675:88;10782:4;10779:1;10772:15;10806:4;10803:1;10796:15;10822:512;11016:4;11045:42;11126:2;11118:6;11114:15;11103:9;11096:34;11178:2;11170:6;11166:15;11161:2;11150:9;11146:18;11139:43;;11218:6;11213:2;11202:9;11198:18;11191:34;11261:3;11256:2;11245:9;11241:18;11234:31;11282:46;11323:3;11312:9;11308:19;11300:6;11282:46;:::i;:::-;11274:54;10822:512;-1:-1:-1;;;;;;10822:512:54:o;11339:249::-;11408:6;11461:2;11449:9;11440:7;11436:23;11432:32;11429:52;;;11477:1;11474;11467:12;11429:52;11509:9;11503:16;11528:30;11552:5;11528:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"1144800","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2598","getApproved(uint256)":"4756","isApprovedForAll(address,address)":"infinite","name()":"infinite","ownerOf(uint256)":"2543","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26654","supportsInterface(bytes4)":"456","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"infinite","_approve(address,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfer(address,address,uint256)":"infinite","_burn(uint256)":"infinite","_checkOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"infinite","_isApprovedOrOwner(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_requireMinted(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_safeTransfer(address,address,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n    using Address for address;\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721Receiver.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 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 {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\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(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) 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 caller.\\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\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":827,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":829,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":833,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":837,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":841,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":847,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"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_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"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_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"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 ERC721 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 ERC721 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 caller. 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[EIP 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: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. 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.14+commit.80d49f37\"},\"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 ERC721 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 ERC721 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 caller. 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[EIP 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: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 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 {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\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(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) 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 caller.\\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\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.","kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"title":"ERC721 token receiver interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"See https://eips.ethereum.org/EIPS/eip-721","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}"},"name()":{"details":"Returns the token collection name."},"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. 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."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"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}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. 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.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 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 {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\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(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) 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 caller.\\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\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220800338efd0d84fe3ce0b1ce06f54da8dc7a240a1538912cf05dc27d03efb28af64736f6c634300080e0033","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 DUP1 SUB CODESIZE 0xEF 0xD0 0xD8 0x4F 0xE3 0xCE SIGNEXTEND SHR 0xE0 PUSH16 0x54DA8DC7A240A1538912CF05DC27D03E 0xFB 0x28 0xAF PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"194:8111:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8111:8;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220800338efd0d84fe3ce0b1ce06f54da8dc7a240a1538912cf05dc27d03efb28af64736f6c634300080e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 SUB CODESIZE 0xEF 0xD0 0xD8 0x4F 0xE3 0xCE SIGNEXTEND SHR 0xE0 PUSH16 0x54DA8DC7A240A1538912CF05DC27D03E 0xFB 0x28 0xAF PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"194:8111:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"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.14+commit.80d49f37\"},\"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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201dbd5191109943e2cacfdadb262403b5ddea042476ccfcb4bdd20d2744bcbef864736f6c634300080e0033","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 SAR 0xBD MLOAD SWAP2 LT SWAP10 NUMBER 0xE2 0xCA 0xCF 0xDA 0xDB 0x26 0x24 SUB 0xB5 0xDD 0xEA DIV 0x24 PUSH23 0xCCFCB4BDD20D2744BCBEF864736F6C634300080E003300 ","sourceMap":"161:2235:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;161:2235:10;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201dbd5191109943e2cacfdadb262403b5ddea042476ccfcb4bdd20d2744bcbef864736f6c634300080e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR 0xBD MLOAD SWAP2 LT SWAP10 NUMBER 0xE2 0xCA 0xCF 0xDA 0xDB 0x26 0x24 SUB 0xB5 0xDD 0xEA DIV 0x24 PUSH23 0xCCFCB4BDD20D2744BCBEF864736F6C634300080E003300 ","sourceMap":"161:2235:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"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.14+commit.80d49f37\"},\"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\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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.14+commit.80d49f37\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/BNPL.sol":{"BNPL":{"abi":[{"inputs":[{"internalType":"address","name":"conduitController","type":"address"},{"internalType":"address","name":"shadowToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadContractSignature","type":"error"},{"inputs":[],"name":"BadFraction","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"}],"name":"BadSignatureV","type":"error"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"},{"internalType":"uint256","name":"considerationIndex","type":"uint256"},{"internalType":"uint256","name":"shortfallAmount","type":"uint256"}],"name":"ConsiderationNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherTransferGenericFailure","type":"error"},{"inputs":[],"name":"InsufficientEtherSupplied","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidBasicOrderParameterEncoding","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidCallToConduit","type":"error"},{"inputs":[],"name":"InvalidCanceller","type":"error"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidConduit","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidMsgValue","type":"error"},{"inputs":[],"name":"InvalidNativeOfferItem","type":"error"},{"inputs":[],"name":"InvalidOrderParameters","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidTime","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[],"name":"MissingOriginalConsiderationItems","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[],"name":"NoReentrantCalls","type":"error"},{"inputs":[],"name":"NoSpecifiedOrdersAvailable","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFilled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFinalized","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderInvalidRepayParameters","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderIsCancelled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotValidated","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderPartiallyFilled","type":"error"},{"inputs":[],"name":"PartialFillsNotEnabledForOrder","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCounter","type":"uint256"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"CounterIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderBroken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"},{"indexed":false,"internalType":"uint256","name":"shadowId","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payTimes","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finalized","type":"bool"}],"name":"OrderRepaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderValidated","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"internalType":"struct OrderParameters","name":"parameters","type":"tuple"}],"name":"breakOrder","outputs":[{"internalType":"bool","name":"broken","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"uint256","name":"counter","type":"uint256"}],"internalType":"struct OrderComponents[]","name":"orders","type":"tuple[]"}],"name":"cancel","outputs":[{"internalType":"bool","name":"cancelled","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"internalType":"struct OrderParameters","name":"parameters","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct Order","name":"order","type":"tuple"},{"internalType":"bytes32","name":"fulfillerConduitKey","type":"bytes32"}],"name":"fulfillOrder","outputs":[{"internalType":"bool","name":"fulfilled","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"offerer","type":"address"}],"name":"getCounter","outputs":[{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"uint256","name":"counter","type":"uint256"}],"internalType":"struct OrderComponents","name":"order","type":"tuple"}],"name":"getOrderHash","outputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"getOrderStatus","outputs":[{"internalType":"bool","name":"isValidated","type":"bool"},{"internalType":"bool","name":"isCancelled","type":"bool"},{"internalType":"bool","name":"isFinalized","type":"bool"},{"internalType":"bool","name":"isBroken","type":"bool"},{"internalType":"address","name":"fulfiller","type":"address"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"shadowId","type":"uint256"},{"internalType":"uint256","name":"paidTimes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementCounter","outputs":[{"internalType":"uint256","name":"newCounter","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"information","outputs":[{"internalType":"string","name":"version","type":"string"},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"internalType":"address","name":"conduitController","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"internalType":"struct OrderParameters","name":"parameters","type":"tuple"},{"internalType":"bytes32","name":"fulfillerConduitKey","type":"bytes32"},{"internalType":"uint256","name":"payTimes","type":"uint256"}],"name":"repayOrder","outputs":[{"internalType":"bool","name":"repaid","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"shadowToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"internalType":"struct OrderParameters","name":"parameters","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct Order[]","name":"orders","type":"tuple[]"}],"name":"validate","outputs":[{"internalType":"bool","name":"validated","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"BadContractSignature()":[{"details":"Revert with an error when an EIP-1271 call to an account fails."}],"BadFraction()":[{"details":"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator."}],"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"BadSignatureV(uint8)":[{"details":"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.","params":{"v":"The invalid v value."}}],"ConsiderationNotMet(uint256,uint256,uint256)":[{"details":"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.","params":{"considerationIndex":"The index of the consideration item on the                           order.","orderIndex":"The index of the order with the consideration                           item with a shortfall.","shortfallAmount":"The unfulfilled consideration amount."}}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"EtherTransferGenericFailure(address,uint256)":[{"details":"Revert with an error when an ether transfer reverts."}],"InsufficientEtherSupplied()":[{"details":"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders."}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidBasicOrderParameterEncoding()":[{"details":"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding."}],"InvalidCallToConduit(address)":[{"details":"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return."}],"InvalidCanceller()":[{"details":"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone."}],"InvalidConduit(bytes32,address)":[{"details":"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed)."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"InvalidMsgValue(uint256)":[{"details":"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route."}],"InvalidNativeOfferItem()":[{"details":"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders."}],"InvalidSignature()":[{"details":"Revert with an error when a signer cannot be recovered from the      supplied signature."}],"InvalidSigner()":[{"details":"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract."}],"InvalidTime()":[{"details":"Revert with an error when attempting to fill an order outside the      specified start time and end time."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"MissingOriginalConsiderationItems()":[{"details":"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}],"NoSpecifiedOrdersAvailable()":[{"details":"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable."}],"OrderAlreadyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has      already been fully filled.","params":{"orderHash":"The order hash on which a fill was attempted."}}],"OrderIsCancelled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has been      cancelled.","params":{"orderHash":"The hash of the cancelled order."}}],"OrderPartiallyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill a basic order that has      been partially filled.","params":{"orderHash":"The hash of the partially used order."}}],"PartialFillsNotEnabledForOrder()":[{"details":"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type."}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2426":{"entryPoint":null,"id":2426,"parameterSlots":2,"returnSlots":0},"@_4348":{"entryPoint":null,"id":4348,"parameterSlots":1,"returnSlots":0},"@_4391":{"entryPoint":null,"id":4391,"parameterSlots":2,"returnSlots":0},"@_4654":{"entryPoint":null,"id":4654,"parameterSlots":1,"returnSlots":0},"@_5470":{"entryPoint":null,"id":5470,"parameterSlots":1,"returnSlots":0},"@_5935":{"entryPoint":null,"id":5935,"parameterSlots":1,"returnSlots":0},"@_6106":{"entryPoint":null,"id":6106,"parameterSlots":2,"returnSlots":0},"@_6921":{"entryPoint":null,"id":6921,"parameterSlots":2,"returnSlots":0},"@_7732":{"entryPoint":null,"id":7732,"parameterSlots":0,"returnSlots":0},"@_7800":{"entryPoint":null,"id":7800,"parameterSlots":1,"returnSlots":0},"@_8290":{"entryPoint":null,"id":8290,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_4760":{"entryPoint":315,"id":4760,"parameterSlots":0,"returnSlots":4},"@_nameString_2435":{"entryPoint":null,"id":2435,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":1160,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":1189,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32_fromMemory":{"entryPoint":1245,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_stringliteral_0c2a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e4b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_41ba":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_59d7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5c66":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7afc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89a9":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9c70":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b48f":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bab2":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_cfcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6640:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:54","statements":[{"nodeType":"YulAssignment","src":"84:22:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:54"},"nodeType":"YulFunctionCall","src":"93:13:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:54"}]},{"body":{"nodeType":"YulBlock","src":"169:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:54"},"nodeType":"YulFunctionCall","src":"171:12:54"},"nodeType":"YulExpressionStatement","src":"171:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:54"},"nodeType":"YulFunctionCall","src":"150:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:54"},"nodeType":"YulFunctionCall","src":"146:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:54"},"nodeType":"YulFunctionCall","src":"135:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:54"},"nodeType":"YulFunctionCall","src":"125:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:54"},"nodeType":"YulFunctionCall","src":"118:50:54"},"nodeType":"YulIf","src":"115:70:54"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:54","type":""}],"src":"14:177:54"},{"body":{"nodeType":"YulBlock","src":"294:195:54","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:54"},"nodeType":"YulFunctionCall","src":"342:12:54"},"nodeType":"YulExpressionStatement","src":"342:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:54"},"nodeType":"YulFunctionCall","src":"311:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:54"},"nodeType":"YulFunctionCall","src":"307:32:54"},"nodeType":"YulIf","src":"304:52:54"},{"nodeType":"YulAssignment","src":"365:50:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:54"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:54"},"nodeType":"YulFunctionCall","src":"375:40:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:54"}]},{"nodeType":"YulAssignment","src":"424:59:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:54"},"nodeType":"YulFunctionCall","src":"464:18:54"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:54"},"nodeType":"YulFunctionCall","src":"434:49:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:54","type":""}],"src":"196:293:54"},{"body":{"nodeType":"YulBlock","src":"592:147:54","statements":[{"body":{"nodeType":"YulBlock","src":"638:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"647:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"650:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"640:6:54"},"nodeType":"YulFunctionCall","src":"640:12:54"},"nodeType":"YulExpressionStatement","src":"640:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"613:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"609:3:54"},"nodeType":"YulFunctionCall","src":"609:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"634:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"605:3:54"},"nodeType":"YulFunctionCall","src":"605:32:54"},"nodeType":"YulIf","src":"602:52:54"},{"nodeType":"YulAssignment","src":"663:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"679:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"673:5:54"},"nodeType":"YulFunctionCall","src":"673:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"663:6:54"}]},{"nodeType":"YulAssignment","src":"698:35:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"718:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"729:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"714:3:54"},"nodeType":"YulFunctionCall","src":"714:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"708:5:54"},"nodeType":"YulFunctionCall","src":"708:25:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"698:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"550:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"561:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"573:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"581:6:54","type":""}],"src":"494:245:54"},{"body":{"nodeType":"YulBlock","src":"799:76:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"816:3:54"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"821:19:54","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:54"},"nodeType":"YulFunctionCall","src":"809:32:54"},"nodeType":"YulExpressionStatement","src":"809:32:54"},{"nodeType":"YulAssignment","src":"850:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"861:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"866:2:54","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"857:3:54"},"nodeType":"YulFunctionCall","src":"857:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"850:3:54"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"783:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"791:3:54","type":""}],"src":"744:131:54"},{"body":{"nodeType":"YulBlock","src":"935:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"952:3:54"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"957:18:54","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"945:6:54"},"nodeType":"YulFunctionCall","src":"945:31:54"},"nodeType":"YulExpressionStatement","src":"945:31:54"},{"nodeType":"YulAssignment","src":"985:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"996:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1001:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"992:3:54"},"nodeType":"YulFunctionCall","src":"992:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"985:3:54"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"919:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"927:3:54","type":""}],"src":"880:130:54"},{"body":{"nodeType":"YulBlock","src":"1070:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1087:3:54"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"1092:17:54","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1080:6:54"},"nodeType":"YulFunctionCall","src":"1080:30:54"},"nodeType":"YulExpressionStatement","src":"1080:30:54"},{"nodeType":"YulAssignment","src":"1119:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1130:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1135:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:54"},"nodeType":"YulFunctionCall","src":"1126:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1119:3:54"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1054:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1062:3:54","type":""}],"src":"1015:129:54"},{"body":{"nodeType":"YulBlock","src":"1204:73:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1221:3:54"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1226:16:54","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1214:6:54"},"nodeType":"YulFunctionCall","src":"1214:29:54"},"nodeType":"YulExpressionStatement","src":"1214:29:54"},{"nodeType":"YulAssignment","src":"1252:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1268:2:54","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:54"},"nodeType":"YulFunctionCall","src":"1259:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1252:3:54"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1188:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1196:3:54","type":""}],"src":"1149:128:54"},{"body":{"nodeType":"YulBlock","src":"1337:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1354:3:54"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1359:18:54","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1347:6:54"},"nodeType":"YulFunctionCall","src":"1347:31:54"},"nodeType":"YulExpressionStatement","src":"1347:31:54"},{"nodeType":"YulAssignment","src":"1387:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1398:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1394:3:54"},"nodeType":"YulFunctionCall","src":"1394:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1387:3:54"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1321:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1329:3:54","type":""}],"src":"1282:130:54"},{"body":{"nodeType":"YulBlock","src":"1472:71:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1489:3:54"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1494:14:54","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1482:6:54"},"nodeType":"YulFunctionCall","src":"1482:27:54"},"nodeType":"YulExpressionStatement","src":"1482:27:54"},{"nodeType":"YulAssignment","src":"1518:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1529:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1534:2:54","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1525:3:54"},"nodeType":"YulFunctionCall","src":"1525:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1518:3:54"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1456:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1464:3:54","type":""}],"src":"1417:126:54"},{"body":{"nodeType":"YulBlock","src":"1603:79:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1620:3:54"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1625:22:54","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1613:6:54"},"nodeType":"YulFunctionCall","src":"1613:35:54"},"nodeType":"YulExpressionStatement","src":"1613:35:54"},{"nodeType":"YulAssignment","src":"1657:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1668:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1673:2:54","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1664:3:54"},"nodeType":"YulFunctionCall","src":"1664:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1657:3:54"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1587:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1595:3:54","type":""}],"src":"1548:134:54"},{"body":{"nodeType":"YulBlock","src":"1742:72:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:54"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1764:15:54","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:54"},"nodeType":"YulFunctionCall","src":"1752:28:54"},"nodeType":"YulExpressionStatement","src":"1752:28:54"},{"nodeType":"YulAssignment","src":"1789:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1800:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1796:3:54"},"nodeType":"YulFunctionCall","src":"1796:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1789:3:54"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1726:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1734:3:54","type":""}],"src":"1687:127:54"},{"body":{"nodeType":"YulBlock","src":"1874:78:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1891:3:54"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1896:21:54","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1884:6:54"},"nodeType":"YulFunctionCall","src":"1884:34:54"},"nodeType":"YulExpressionStatement","src":"1884:34:54"},{"nodeType":"YulAssignment","src":"1927:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1938:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:54","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1934:3:54"},"nodeType":"YulFunctionCall","src":"1934:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1927:3:54"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1858:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1866:3:54","type":""}],"src":"1819:133:54"},{"body":{"nodeType":"YulBlock","src":"2012:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2029:3:54"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"2034:17:54","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2022:6:54"},"nodeType":"YulFunctionCall","src":"2022:30:54"},"nodeType":"YulExpressionStatement","src":"2022:30:54"},{"nodeType":"YulAssignment","src":"2061:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2072:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2077:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2068:3:54"},"nodeType":"YulFunctionCall","src":"2068:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2061:3:54"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2004:3:54","type":""}],"src":"1957:129:54"},{"body":{"nodeType":"YulBlock","src":"2146:59:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2163:3:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"2168:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2156:6:54"},"nodeType":"YulFunctionCall","src":"2156:16:54"},"nodeType":"YulExpressionStatement","src":"2156:16:54"},{"nodeType":"YulAssignment","src":"2181:18:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2192:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2197:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:54"},"nodeType":"YulFunctionCall","src":"2188:11:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2181:3:54"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2130:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2138:3:54","type":""}],"src":"2091:114:54"},{"body":{"nodeType":"YulBlock","src":"4321:815:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4338:3:54"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4343:18:54","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:54"},"nodeType":"YulFunctionCall","src":"4331:31:54"},"nodeType":"YulExpressionStatement","src":"4331:31:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4382:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4387:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4378:3:54"},"nodeType":"YulFunctionCall","src":"4378:12:54"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4392:18:54","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4371:6:54"},"nodeType":"YulFunctionCall","src":"4371:40:54"},"nodeType":"YulExpressionStatement","src":"4371:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4431:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4436:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4427:3:54"},"nodeType":"YulFunctionCall","src":"4427:12:54"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4441:16:54","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4420:6:54"},"nodeType":"YulFunctionCall","src":"4420:38:54"},"nodeType":"YulExpressionStatement","src":"4420:38:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4478:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4483:2:54","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4474:3:54"},"nodeType":"YulFunctionCall","src":"4474:12:54"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4488:21:54","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4467:6:54"},"nodeType":"YulFunctionCall","src":"4467:43:54"},"nodeType":"YulExpressionStatement","src":"4467:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4530:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4535:2:54","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4526:3:54"},"nodeType":"YulFunctionCall","src":"4526:12:54"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4540:19:54","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4519:6:54"},"nodeType":"YulFunctionCall","src":"4519:41:54"},"nodeType":"YulExpressionStatement","src":"4519:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4580:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4585:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4576:3:54"},"nodeType":"YulFunctionCall","src":"4576:12:54"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4590:17:54","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:54"},"nodeType":"YulFunctionCall","src":"4569:39:54"},"nodeType":"YulExpressionStatement","src":"4569:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4628:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4633:2:54","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4624:3:54"},"nodeType":"YulFunctionCall","src":"4624:12:54"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4638:19:54","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4617:6:54"},"nodeType":"YulFunctionCall","src":"4617:41:54"},"nodeType":"YulExpressionStatement","src":"4617:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4678:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4683:3:54","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:54"},"nodeType":"YulFunctionCall","src":"4674:13:54"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4689:20:54","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:54"},"nodeType":"YulFunctionCall","src":"4667:43:54"},"nodeType":"YulExpressionStatement","src":"4667:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4730:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4735:3:54","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:54"},"nodeType":"YulFunctionCall","src":"4726:13:54"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4741:18:54","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4719:6:54"},"nodeType":"YulFunctionCall","src":"4719:41:54"},"nodeType":"YulExpressionStatement","src":"4719:41:54"},{"nodeType":"YulAssignment","src":"4769:361:54","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5110:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5115:3:54","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:54"},"nodeType":"YulFunctionCall","src":"5106:13:54"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"5076:29:54"},"nodeType":"YulFunctionCall","src":"5076:44:54"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"5046:29:54"},"nodeType":"YulFunctionCall","src":"5046:75:54"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"5016:29:54"},"nodeType":"YulFunctionCall","src":"5016:106:54"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4986:29:54"},"nodeType":"YulFunctionCall","src":"4986:137:54"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4956:29:54"},"nodeType":"YulFunctionCall","src":"4956:168:54"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4926:29:54"},"nodeType":"YulFunctionCall","src":"4926:199:54"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4896:29:54"},"nodeType":"YulFunctionCall","src":"4896:230:54"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4866:29:54"},"nodeType":"YulFunctionCall","src":"4866:261:54"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4836:29:54"},"nodeType":"YulFunctionCall","src":"4836:292:54"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4806:29:54"},"nodeType":"YulFunctionCall","src":"4806:323:54"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4776:29:54"},"nodeType":"YulFunctionCall","src":"4776:354:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4769:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4305:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4313:3:54","type":""}],"src":"2210:2926:54"},{"body":{"nodeType":"YulBlock","src":"5838:306:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5855:3:54"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5860:15:54","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5848:6:54"},"nodeType":"YulFunctionCall","src":"5848:28:54"},"nodeType":"YulExpressionStatement","src":"5848:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5896:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5901:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:54"},"nodeType":"YulFunctionCall","src":"5892:12:54"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5906:14:54","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:54"},"nodeType":"YulFunctionCall","src":"5885:36:54"},"nodeType":"YulExpressionStatement","src":"5885:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5941:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5946:2:54","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5937:3:54"},"nodeType":"YulFunctionCall","src":"5937:12:54"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5951:17:54","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5930:6:54"},"nodeType":"YulFunctionCall","src":"5930:39:54"},"nodeType":"YulExpressionStatement","src":"5930:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5989:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5994:2:54","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5985:3:54"},"nodeType":"YulFunctionCall","src":"5985:12:54"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5999:18:54","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5978:6:54"},"nodeType":"YulFunctionCall","src":"5978:40:54"},"nodeType":"YulExpressionStatement","src":"5978:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6038:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6043:2:54","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6034:3:54"},"nodeType":"YulFunctionCall","src":"6034:12:54"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6048:27:54","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6027:6:54"},"nodeType":"YulFunctionCall","src":"6027:49:54"},"nodeType":"YulExpressionStatement","src":"6027:49:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6096:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6101:2:54","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6092:3:54"},"nodeType":"YulFunctionCall","src":"6092:12:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"6106:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6085:6:54"},"nodeType":"YulFunctionCall","src":"6085:25:54"},"nodeType":"YulExpressionStatement","src":"6085:25:54"},{"nodeType":"YulAssignment","src":"6119:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6130:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6135:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:54"},"nodeType":"YulFunctionCall","src":"6126:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6119:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5822:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5830:3:54","type":""}],"src":"5141:1003:54"},{"body":{"nodeType":"YulBlock","src":"6362:276:54","statements":[{"nodeType":"YulAssignment","src":"6372:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6384:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6395:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:54"},"nodeType":"YulFunctionCall","src":"6380:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6372:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6415:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"6426:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:54"},"nodeType":"YulFunctionCall","src":"6408:25:54"},"nodeType":"YulExpressionStatement","src":"6408:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6453:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6464:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6449:3:54"},"nodeType":"YulFunctionCall","src":"6449:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"6469:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6442:6:54"},"nodeType":"YulFunctionCall","src":"6442:34:54"},"nodeType":"YulExpressionStatement","src":"6442:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6496:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6507:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:54"},"nodeType":"YulFunctionCall","src":"6492:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6512:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6485:6:54"},"nodeType":"YulFunctionCall","src":"6485:34:54"},"nodeType":"YulExpressionStatement","src":"6485:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6539:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6550:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6535:3:54"},"nodeType":"YulFunctionCall","src":"6535:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"6555:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6528:6:54"},"nodeType":"YulFunctionCall","src":"6528:34:54"},"nodeType":"YulExpressionStatement","src":"6528:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6593:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6578:3:54"},"nodeType":"YulFunctionCall","src":"6578:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6603:6:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6624:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6615:3:54"},"nodeType":"YulFunctionCall","src":"6615:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6628:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:54"},"nodeType":"YulFunctionCall","src":"6611:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6599:3:54"},"nodeType":"YulFunctionCall","src":"6599:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6571:6:54"},"nodeType":"YulFunctionCall","src":"6571:61:54"},"nodeType":"YulExpressionStatement","src":"6571:61:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6299:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6310:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6318:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6326:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6334:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6342:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6353:4:54","type":""}],"src":"6149:489:54"}]},"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 abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_9c70(pos) -> end\n    {\n        mstore(pos, \"uint256 duration,\")\n        end := add(pos, 17)\n    }\n    function abi_encode_stringliteral_bab2(pos) -> end\n    {\n        mstore(pos, \"uint256 periods,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_1e4b(pos) -> end\n    {\n        mstore(pos, \"uint256 amount,\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_89a9(pos) -> end\n    {\n        mstore(pos, \"uint256 ratio,\")\n        end := add(pos, 14)\n    }\n    function abi_encode_stringliteral_5c66(pos) -> end\n    {\n        mstore(pos, \"uint256 royalty,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_b48f(pos) -> end\n    {\n        mstore(pos, \"uint256 fee,\")\n        end := add(pos, 12)\n    }\n    function abi_encode_stringliteral_0c2a(pos) -> end\n    {\n        mstore(pos, \"uint256 withdrawFee,\")\n        end := add(pos, 20)\n    }\n    function abi_encode_stringliteral_7afc(pos) -> end\n    {\n        mstore(pos, \"uint256 salt,\")\n        end := add(pos, 13)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral_41ba(pos) -> end\n    {\n        mstore(pos, \"uint256 counter\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address token,\")\n        mstore(add(pos, 46), \"uint256 identifier,\")\n        mstore(add(pos, 65), \"address currency,\")\n        mstore(add(pos, 82), \"address artist,\")\n        mstore(add(pos, 97), \"address platform,\")\n        mstore(add(pos, 114), \"uint256 startTime,\")\n        mstore(add(pos, 132), \"uint256 endTime,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral_41ba(abi_encode_stringliteral_cfcd(abi_encode_stringliteral_7afc(abi_encode_stringliteral_0c2a(abi_encode_stringliteral_b48f(abi_encode_stringliteral_5c66(abi_encode_stringliteral_89a9(abi_encode_stringliteral_1e4b(abi_encode_stringliteral_bab2(abi_encode_stringliteral_9c70(add(pos, 148))))))))))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6101a06040523480156200001257600080fd5b5060405162003806380380620038068339810160408190526200003591620004a5565b8181818181818082808080806200004b6200013b565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa158015620000ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001109190620004dd565b5061016052505060016000555050506001600160a01b03166101805250620005029650505050505050565b6000808080620001626040805180820190915260048152631093941360e21b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b39450600091620003bd91016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b80516001600160a01b0381168114620004a057600080fd5b919050565b60008060408385031215620004b957600080fd5b620004c48362000488565b9150620004d46020840162000488565b90509250929050565b60008060408385031215620004f157600080fd5b505080516020909101519092909150565b60805160a05160c05160e05161010051610120516101405161016051610180516132696200059d6000396000818161026e015281816120260152818161270a0152818161279001526129d8015260006120e2015260008181610ef601526120a001526000611dbc01526000611cec01526000818161051d01526107c701526000611d1a01526000611d6801526000611d4001526132696000f3fe6080604052600436106100bc5760003560e01c8063b86ae9e111610074578063f07ec3731161004e578063f07ec37314610218578063f47b774014610238578063ffc5d97a1461025c57600080fd5b8063b86ae9e1146101d2578063be92d18e146101f2578063d9e534111461020557600080fd5b80635b34b966116100a55780635b34b9661461016f5780639432cc1d14610192578063a3210e7c146101b257600080fd5b806322378003146100c157806346423aa7146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004612c46565b6102b5565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610116610111366004612cbb565b6102c8565b604080519815158952961515602089015294151595870195909552911515606086015273ffffffffffffffffffffffffffffffffffffffff16608085015260a084015260c083019190915260e0820152610100016100ed565b34801561017b57600080fd5b5061018461035b565b6040519081526020016100ed565b34801561019e57600080fd5b506100e16101ad366004612cd4565b61036a565b3480156101be57600080fd5b506100e16101cd366004612d51565b610376565b3480156101de57600080fd5b506101846101ed366004612d81565b610387565b6100e1610200366004612d9e565b610556565b6100e1610213366004612de3565b610562565b34801561022457600080fd5b50610184610233366004612e43565b610577565b34801561024457600080fd5b5061024d6105a2565b6040516100ed93929190612e5e565b34801561026857600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b60006102c183836105ba565b9392505050565b600080600080600080600080610340896000908152600260208190526040909120805460018201549282015460039092015460ff8083169561010084048216956201000085048316956301000000860490931694640100000000900473ffffffffffffffffffffffffffffffffffffffff1693909291565b97509750975097509750975097509750919395975091939597565b600061036561090a565b905090565b60006102c18383610967565b600061038182610b27565b92915050565b60408051610220810190915260009061038190806103a86020860186612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260408086013560208301520161040a6080860160608701612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260200161043560a0860160808701612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260200161046060c0860160a08701612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460c0013581526020018460e00135815260200184610100013581526020018461012001358152602001846101400135815260200184610160013581526020018461018001358152602001846101a001358152602001846101c001358152602001846101e0013581526020018461020001358152508361022001357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60006102c18383610c2c565b600061056f848484610dad565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610381565b60606000806105af610ed5565b925092509250909192565b60006105c4610f50565b6000808084815b818110156108fc57368888838181106105e6576105e6612ef7565b90506020028101906105f89190612f26565b9050806106086020820182612e43565b94506108006040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018360200160208101906106489190612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260408085013560208301520161067c6080850160608601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106a760a0850160808601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106d260c0850160a08601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018360c0013581526020018360e00135815260200183610100013581526020018361012001358152602001836101400135815260200183610160013581526020018361018001358152602001836101a001358152602001836101c001358152602001836101e0013581526020018361020001358152506107a08360000160208101906107789190612e43565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60008181526002602052604090209750955061081f8688600180610f8e565b50865460ff166108f257610876858761083c610220860186612f64565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d092505050565b86547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117875560405173ffffffffffffffffffffffffffffffffffffffff8616907f09e126c208c7c6b8de91fb519ff46ef1f6eb471f6376862ca4de42ea000026d6906108e99089815260200190565b60405180910390a25b50506001016105cb565b506001979650505050505050565b6000610914610f50565b503360008181526001602081815260409283902080549092019182905591518181529092917f721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f910160405180910390a290565b6000610971610f50565b60008083815b81811015610b1a573687878381811061099257610992612ef7565b610240029190910191506109ab90506020820182612e43565b93503373ffffffffffffffffffffffffffffffffffffffff8516146109fc576040517f80ec737400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a3c6040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e43565b6000818152600260205260409020600181015490975090915015610a94576040517f9633f278000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010017865560405173ffffffffffffffffffffffffffffffffffffffff8616907fa6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba5275390610b089084815260200190565b60405180910390a25050600101610977565b5060019695505050505050565b600080600080610b3885600161114d565b92509250925080610b4e57506000949350505050565b610b7f6002610b636040880160208901612e43565b30610b7160208a018a612e43565b60408a013560016000611299565b6000610b916080870160608801612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610bbb57610bb68583611388565b610bc5565b610bc58583611425565b610bd26020860186612e43565b73ffffffffffffffffffffffffffffffffffffffff167fe68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada84604051610c1991815260200190565b60405180910390a2506001949350505050565b600080600080610c3d8660016114dd565b92509250925081610c545760009350505050610381565b856000610c648260018084611654565b90506000610c786080840160608501612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610cd757610cc86002610ca86040850160208601612e43565b610cb56020860186612e43565b3086604001356001886102000135611299565b610cd28282611843565b610d3a565b604080516020808252818301909252600091602082018180368337019050509050610d2c610d0b6040850160208601612e43565b610d186020860186612e43565b3086604001356001886102000135876118fc565b610d3883838a84611962565b505b610d476020830183612e43565b73ffffffffffffffffffffffffffffffffffffffff167f8fb2c26b66af59de39b1b2f4e1fba157f4408a9b52495599333e37e3191b08698685604051610d97929190918252602082015260400190565b60405180910390a2506001979650505050505050565b6000806000806000610dc188876001611a83565b929650909450909250905080610dde5760009450505050506102c1565b506000610dee8887600085611654565b90506000610e0260808a0160608b01612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610e2c57610e278882611843565b610e5b565b604080516020808252818301909252600091602082018180368337019050509050610e5989838a84611962565b505b8115610e8657610e866002610e7660408b0160208c01612e43565b308660408d013560016000611299565b60408051858152602081018890528315158183015290517f6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d389181900360600190a1506001979650505050505050565b6060600080610ee2611ce8565b6040805160038082528183019092529193507f0000000000000000000000000000000000000000000000000000000000000000925060208201818036833750507f312e3100000000000000000000000000000000000000000000000000000000006020830152509391925090565b600160005414610f8c576040517f7fa8a98700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8254600090610100900460ff1615610fe3578115610fdb576040517f1a51557400000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b50600061056f565b835462010000900460ff161561102e578115610fdb576040517f836f8ef900000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b821561107e57600384015415611079578115610fdb576040517f9633f27800000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b6110c5565b83600301546000036110c5578115610fdb576040517fe567c93e00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8416036110f257505050565b600061113a6110ff611ce8565b7f1901000000000000000000000000000000000000000000000000000000000000600090815260029190915260228581526042822091905290565b9050611147848284611dde565b50505050565b6000808061117361116336879003870187613021565b6107a06107786020890189612e43565b600081815260026020526040902080549194509060ff166111d35784156111c9576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b5060009050611292565b806003015492506111e78482600088610f8e565b6111f5575060009050611292565b4261120561010088013585613144565b82600101546112149190613181565b11156112555784156111c9576040517f031ea4cb00000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b6112628160020154611ff7565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1663010100001790555060015b9250925092565b801561130e57600060405190507f4ce34aa200000000000000000000000000000000000000000000000000000000815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e4820152611308828261010461209a565b5061137f565b600287600381111561132257611322613199565b036113725781600114611361576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136d86868686612236565b61137f565b61137f8686868686612345565b50505050505050565b6113bc6113986020840184612e43565b826113ad6101208601356101808701356131c8565b6113b79190613144565b612477565b6000816113d36101208501356101408601356131c8565b6113dd9190613144565b90506127106113f161016085013583613144565b6113fb91906131c8565b6114059082613203565b905061142061141a60c0850160a08601612e43565b82612477565b505050565b6114696114386080840160608501612e43565b6114456020850185612e43565b8361145a6101208701356101808801356131c8565b6114649190613144565b6124ec565b6000816114806101208501356101408601356131c8565b61148a9190613144565b905061271061149e61016085013583613144565b6114a891906131c8565b6114b29082613203565b90506114206114c76080850160608601612e43565b6114d760c0860160a08701612e43565b836124ec565b60008080846114f560c082013560e083013587612654565b611509575060009250829150819050611292565b6002816101200135101561155f57841561154f576040517f0a199cb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009250829150819050611292565b61158161157136839003830183613021565b6107a06107786020850185612e43565b600081815260026020526040902090945061159f8582600189610f8e565b6115b25750600092508291506112929050565b805460ff166115da576115da6115cb6020840184612e43565b8661083c6102208b018b612f64565b6115fe336115ee6040850160208601612e43565b84604001358561010001356126b3565b815460017fffffffffffffffff000000000000000000000000000000000000000000ff00009091163364010000000002178117835542818401556002830182905560039092018290559497909650939450505050565b61167f6040518060800160405280600081526020016000815260200160008152602001600081525090565b60008061169186610120890135613203565b6101c088013560408501529050831561177d576116b86101208801356101808901356131c8565b6116c29082613144565b6116d190610180890135613203565b91506116e76101208801356101408901356131c8565b6116f19082613144565b61170090610140890135613203565b835260408301518290826127106101608b01356117276101208d01356101408e01356131c8565b6117319190613144565b61173b91906131c8565b6117459190613144565b611754906101408b0135613203565b61175e9190613203565b6117689190613203565b60208401526101808701356060840152611839565b6117916101208801356101808901356131c8565b61179b9087613144565b91506117b16101208801356101408901356131c8565b6117bb9087613144565b80845260408401518391612710906117d9906101608c013590613144565b6117e391906131c8565b6117ed9190613203565b6117f79190613203565b6020840152841561183957866101a00135836000018181516118199190613181565b9052506040830180516101a08901359190611835908390613181565b9052505b5050949350505050565b80513490811015611880576040517f1a783b8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189a6118906020850185612e43565b8360200151612477565b6118b76118ad60c0850160a08601612e43565b8360400151612477565b6060820151156118de576118de6118d460a0850160808601612e43565b8360600151612477565b81516118ea9082613203565b90508015611420576114203382612477565b6119068183612860565b816119515782600114611945576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136d87878787612236565b61137f828260028a8a8a8a8a61287f565b3360006119756080870160608801612e43565b9050611998818361198c60c08a0160a08b01612e43565b88604001518888612918565b6060850151156119c3576119c381836119b760a08a0160808b01612e43565b88606001518888612918565b606085015160408601518651600092916119dc91613203565b6119e69190613203565b905085602001518110611a3f57611a118284611a0560208b018b612e43565b89602001518989612918565b6020860151611a209082613203565b90508015611a3657611a36828430848989612918565b61136d84612953565b611a598284611a5160208b018b612e43565b848989612918565b611a6284612953565b61137f82611a7360208a018a612e43565b8389602001516114649190613203565b6000808080611aaa611a9a36899003890189613021565b6107a061077860208b018b612e43565b600081815260026020526040902080549195509060ff16611b10578515611b00576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b5060009250829150819050611cdf565b611b1d8582600089610f8e565b611b31575060009250829150819050611cdf565b876101200135878260030154611b479190613181565b1180611b535750600187105b15611b93578515611b00576040517fc8910ec000000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b428861010001358260030154611ba99190613144565b8260010154611bb89190613181565b1015611bf9578515611b00576040517f2e775cae00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b86816003016000828254611c0d9190613181565b909155505060038101546101208901359003611c655780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000178155600281015460019250611c6090611ff7565b611cb9565b805460028201546003830154611cb992640100000000900473ffffffffffffffffffffffffffffffffffffffff169190611ca5906101008d013590613144565b8460010154611cb49190613181565b61297c565b54640100000000900473ffffffffffffffffffffffffffffffffffffffff169250600191505b93509350935093565b60007f00000000000000000000000000000000000000000000000000000000000000004614611db957610365604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000526000825160208403805182604103600060018211611e65576040880151606089015160001a96508215611e4357601b8160ff1c0196507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811660408a01525b8689528985526020600060808760015afa508385528589526040890152506000515b8914891515169550859050611fbc57604082526044860380516040880380517f1626ba7e0000000000000000000000000000000000000000000000000000000084528a82526020600060648901868f5afa98508815611fb2577f1626ba7e0000000000000000000000000000000000000000000000000000000060005114611fb2578b3b15611f18577f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6001876041031115611f4e577f8baa579f0000000000000000000000000000000000000000000000000000000060005260046000fd5b640101000000881a611f88577f1f003d0a000000000000000000000000000000000000000000000000000000006000528760045260246000fd5b7f815e1d640000000000000000000000000000000000000000000000000000000060005260046000fd5b8486529190925290525b505050508061114757611fcd612a30565b7f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561207f57600080fd5b505af1158015612093573d6000803e3d6000fd5b5050505050565b604080517f000000000000000000000000000000000000000000000000000000000000000074ff000000000000000000000000000000000000000017600090815260208690527f000000000000000000000000000000000000000000000000000000000000000083526055600b209190925273ffffffffffffffffffffffffffffffffffffffff169050600080600080526020600085876000875af191506000519050816121945761214a612a30565b6040517fd13d53d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610a8b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f4ce34aa2000000000000000000000000000000000000000000000000000000001461222e576040517f1cf99b260000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff84166024820152604401610a8b565b505050505050565b833b61226a577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af180612336573d156122f7576020601f3d01046020830481600302818311156122de57818303600302610200838002858002030401015b5a6020820110156122f3573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b612379577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af18061245b573d1561241d576020601f3d010460208604816003028183111561240457818303600302610200838002858002030401015b5a602082011015612419573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b61248081612a78565b600080600080600085875af19050806114205761249b612a30565b6040517f470c7c1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610a8b565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528260045281602452602060006044600080885af1803d15601f3d116001600051141617163d151581166126455780863b151516612645578061261757816125dd573d1561259e576020601f3d010460208404816003028183111561258557818303600302610200838002858002030401015b5a60208201101561259a573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452306024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528560045230602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528560045260246000fd5b50506040525050600060605250565b6000428411806126645750428311155b156126a95781156126a1576040517f6f7eac2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006102c1565b5060019392505050565b6040517fc6c3bbe600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301526044820184905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063c6c3bbe6906064016020604051808303816000875af1158015612753573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612777919061321a565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663e030565e82886127c14288613181565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff909116602483015267ffffffffffffffff166044820152606401600060405180830381600087803b15801561283e57600080fd5b505af1158015612852573d6000803e3d6000fd5b509298975050505050505050565b600061286d836020015190565b90508181146114205761142083612953565b600060208851036128d35750604080885260208089018a90527f4ce34aa2000000000000000000000000000000000000000000000000000000009189019190915260448801526001606488018190526128e2565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61292183612a78565b61292b8183612860565b816129415761293c86868686612ab5565b61222e565b61222e8282600189898960008a61287f565b604081511461295f5750565b600061296c826020015190565b90506129788183612c22565b5050565b6040517fe030565e0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff848116602483015267ffffffffffffffff831660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e030565e90606401600060405180830381600087803b158015612a1c57600080fd5b505af115801561137f573d6000803e3d6000fd5b3d15610f8c576020601f3d01046020604051048160030281831115612a6357818303600302610200838002858002030401015b5a602082011015611420573d6000803e3d6000fd5b80600003612ab2576040517f91b3e51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116612c125780873b151516612c125780612be45781612baa573d15612b6b576020601f3d0104602084048160030281831115612b5257818303600302610200838002858002030401015b5a602082011015612b67573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b6064810151604082019060c002604401612c3d84838361209a565b50506020905250565b60008060208385031215612c5957600080fd5b823567ffffffffffffffff80821115612c7157600080fd5b818501915085601f830112612c8557600080fd5b813581811115612c9457600080fd5b8660208260051b8501011115612ca957600080fd5b60209290920196919550909350505050565b600060208284031215612ccd57600080fd5b5035919050565b60008060208385031215612ce757600080fd5b823567ffffffffffffffff80821115612cff57600080fd5b818501915085601f830112612d1357600080fd5b813581811115612d2257600080fd5b86602061024083028501011115612ca957600080fd5b60006102208284031215612d4b57600080fd5b50919050565b60006102208284031215612d6457600080fd5b6102c18383612d38565b60006102408284031215612d4b57600080fd5b60006102408284031215612d9457600080fd5b6102c18383612d6e565b60008060408385031215612db157600080fd5b823567ffffffffffffffff811115612dc857600080fd5b612dd485828601612d6e565b95602094909401359450505050565b60008060006102608486031215612df957600080fd5b612e038585612d38565b956102208501359550610240909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612e3e57600080fd5b919050565b600060208284031215612e5557600080fd5b6102c182612e1a565b606081526000845180606084015260005b81811015612e8c5760208188018101516080868401015201612e6f565b81811115612e9e576000608083860101525b5060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1833603018112612f5a57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f9957600080fd5b83018035915067ffffffffffffffff821115612fb457600080fd5b602001915036819003821315612fc957600080fd5b9250929050565b604051610220810167ffffffffffffffff8111828210171561301b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610220828403121561303457600080fd5b61303c612fd0565b61304583612e1a565b815261305360208401612e1a565b60208201526040830135604082015261306e60608401612e1a565b606082015261307f60808401612e1a565b608082015261309060a08401612e1a565b60a082015260c0838101359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561317c5761317c613115565b500290565b6000821982111561319457613194613115565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000826131fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561321557613215613115565b500390565b60006020828403121561322c57600080fd5b505191905056fea26469706673582212208973cac9304a6e97f804d4e16010abc1590e388228a5665d8cd4bbe0352376b264736f6c634300080e0033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3806 CODESIZE SUB DUP1 PUSH3 0x3806 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x4A5 JUMP JUMPDEST DUP2 DUP2 DUP2 DUP2 DUP2 DUP2 DUP1 DUP3 DUP1 DUP1 DUP1 DUP1 PUSH3 0x4B PUSH3 0x13B JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x110 SWAP2 SWAP1 PUSH3 0x4DD JUMP JUMPDEST POP PUSH2 0x160 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x180 MSTORE POP PUSH3 0x502 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH3 0x162 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x10939413 PUSH1 0xE2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x312E3 PUSH1 0xEC SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP6 POP PUSH32 0xE6BBD6277E1BF288EED5E8D1780F9A50B239E86B153736BCEEBCCF4EA79D90B3 SWAP5 POP PUSH1 0x0 SWAP2 PUSH3 0x3BD SWAP2 ADD PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL DUP2 MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0x10 DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965722C00000000000000000000000000 PUSH1 0x2E DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC818DD5C9C995B98DE4B PUSH1 0x7A SHL PUSH1 0x41 DUP3 ADD MSTORE PUSH15 0x1859191C995CDCC8185C9D1A5CDD0B PUSH1 0x8A SHL PUSH1 0x52 DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC81C1B185D199BDC9B4B PUSH1 0x7A SHL PUSH1 0x61 DUP3 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH1 0x72 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88191D5C985D1A5BDB8B PUSH1 0x7A SHL PUSH1 0x94 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C195C9A5BD91CCB PUSH1 0x82 SHL PUSH1 0xA5 DUP3 ADD MSTORE PUSH15 0x1D5A5B9D0C8D4D88185B5BDD5B9D0B PUSH1 0x8A SHL PUSH1 0xB5 DUP3 ADD MSTORE PUSH14 0x1D5A5B9D0C8D4D881C985D1A5BCB PUSH1 0x92 SHL PUSH1 0xC4 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C9BDE585B1D1E4B PUSH1 0x82 SHL PUSH1 0xD2 DUP3 ADD MSTORE PUSH12 0x1D5A5B9D0C8D4D881999594B PUSH1 0xA2 SHL PUSH1 0xE2 DUP3 ADD MSTORE PUSH32 0x75696E743235362077697468647261774665652C000000000000000000000000 PUSH1 0xEE DUP3 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x102 DUP3 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x10F DUP3 ADD MSTORE PUSH15 0x3AB4B73A191A9B1031B7BAB73A32B9 PUSH1 0x89 SHL PUSH2 0x122 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH2 0x131 DUP3 ADD MSTORE PUSH2 0x132 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x4C4 DUP4 PUSH3 0x488 JUMP JUMPDEST SWAP2 POP PUSH3 0x4D4 PUSH1 0x20 DUP5 ADD PUSH3 0x488 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x3269 PUSH3 0x59D PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x26E ADD MSTORE DUP2 DUP2 PUSH2 0x2026 ADD MSTORE DUP2 DUP2 PUSH2 0x270A ADD MSTORE DUP2 DUP2 PUSH2 0x2790 ADD MSTORE PUSH2 0x29D8 ADD MSTORE PUSH1 0x0 PUSH2 0x20E2 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0xEF6 ADD MSTORE PUSH2 0x20A0 ADD MSTORE PUSH1 0x0 PUSH2 0x1DBC ADD MSTORE PUSH1 0x0 PUSH2 0x1CEC ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x51D ADD MSTORE PUSH2 0x7C7 ADD MSTORE PUSH1 0x0 PUSH2 0x1D1A ADD MSTORE PUSH1 0x0 PUSH2 0x1D68 ADD MSTORE PUSH1 0x0 PUSH2 0x1D40 ADD MSTORE PUSH2 0x3269 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB86AE9E1 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xF07EC373 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xF07EC373 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0xF47B7740 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xFFC5D97A EQ PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB86AE9E1 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xBE92D18E EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xD9E53411 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5B34B966 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x5B34B966 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x9432CC1D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0xA3210E7C EQ PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x22378003 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x46423AA7 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x2C46 JUMP JUMPDEST PUSH2 0x2B5 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 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CBB JUMP JUMPDEST PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 ISZERO ISZERO DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE SWAP5 ISZERO ISZERO SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP7 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x35B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x2CD4 JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x2D51 JUMP JUMPDEST PUSH2 0x376 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2D81 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9E JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DE3 JUMP JUMPDEST PUSH2 0x562 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E5E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x5BA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x340 DUP10 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP3 ADD SLOAD PUSH1 0x3 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP6 PUSH2 0x100 DUP5 DIV DUP3 AND SWAP6 PUSH3 0x10000 DUP6 DIV DUP4 AND SWAP6 PUSH4 0x1000000 DUP7 DIV SWAP1 SWAP4 AND SWAP5 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP1 SWAP3 SWAP2 JUMP JUMPDEST SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x365 PUSH2 0x90A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x381 DUP3 PUSH2 0xB27 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x220 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x381 SWAP1 DUP1 PUSH2 0x3A8 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x40A PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x460 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x140 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x180 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1A0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1C0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1E0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x200 ADD CALLDATALOAD DUP2 MSTORE POP DUP4 PUSH2 0x220 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE PUSH2 0x220 SWAP1 SWAP4 ADD DUP1 MLOAD SWAP3 DUP2 MSTORE PUSH2 0x260 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0xC2C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F DUP5 DUP5 DUP5 PUSH2 0xDAD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x381 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x5AF PUSH2 0xED5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8FC JUMPI CALLDATASIZE DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI PUSH2 0x5E6 PUSH2 0x2EF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5F8 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x608 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E43 JUMP JUMPDEST SWAP5 POP PUSH2 0x800 PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x648 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x67C PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x140 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x180 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1A0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1C0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1E0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x200 ADD CALLDATALOAD DUP2 MSTORE POP PUSH2 0x7A0 DUP4 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x778 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE PUSH2 0x220 SWAP1 SWAP4 ADD DUP1 MLOAD SWAP3 DUP2 MSTORE PUSH2 0x260 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP8 POP SWAP6 POP PUSH2 0x81F DUP7 DUP9 PUSH1 0x1 DUP1 PUSH2 0xF8E JUMP JUMPDEST POP DUP7 SLOAD PUSH1 0xFF AND PUSH2 0x8F2 JUMPI PUSH2 0x876 DUP6 DUP8 PUSH2 0x83C PUSH2 0x220 DUP7 ADD DUP7 PUSH2 0x2F64 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x10D0 SWAP3 POP POP POP JUMP JUMPDEST DUP7 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR DUP8 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0x9E126C208C7C6B8DE91FB519FF46EF1F6EB471F6376862CA4DE42EA000026D6 SWAP1 PUSH2 0x8E9 SWAP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x5CB JUMP JUMPDEST POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x914 PUSH2 0xF50 JUMP JUMPDEST POP CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SWAP2 MLOAD DUP2 DUP2 MSTORE SWAP1 SWAP3 SWAP2 PUSH32 0x721C20121297512B72821B97F5326877EA8ECF4BB9948FEA5BFCB6453074D37F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x971 PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB1A JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x992 JUMPI PUSH2 0x992 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x240 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x9AB SWAP1 POP PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E43 JUMP JUMPDEST SWAP4 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x9FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x80EC737400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3C PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP8 POP SWAP1 SWAP2 POP ISZERO PUSH2 0xA94 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 AND PUSH2 0x100 OR DUP7 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0xA6EB7CDC219E1518CED964E9A34E61D68A94E4F1569DB3E84256BA981BA52753 SWAP1 PUSH2 0xB08 SWAP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 ADD PUSH2 0x977 JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB38 DUP6 PUSH1 0x1 PUSH2 0x114D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP1 PUSH2 0xB4E JUMPI POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB7F PUSH1 0x2 PUSH2 0xB63 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0x2E43 JUMP JUMPDEST ADDRESS PUSH2 0xB71 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB91 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBBB JUMPI PUSH2 0xBB6 DUP6 DUP4 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x1425 JUMP JUMPDEST PUSH2 0xBD2 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xE68E1577BA456C32A752DBE4FA63FBAA46841E7E54BC9667D021B9AF64A1CADA DUP5 PUSH1 0x40 MLOAD PUSH2 0xC19 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xC3D DUP7 PUSH1 0x1 PUSH2 0x14DD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH2 0xC54 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x381 JUMP JUMPDEST DUP6 PUSH1 0x0 PUSH2 0xC64 DUP3 PUSH1 0x1 DUP1 DUP5 PUSH2 0x1654 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC78 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCD7 JUMPI PUSH2 0xCC8 PUSH1 0x2 PUSH2 0xCA8 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0xCB5 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD PUSH2 0x1299 JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP3 PUSH2 0x1843 JUMP JUMPDEST PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xD2C PUSH2 0xD0B PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0xD18 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD DUP8 PUSH2 0x18FC JUMP JUMPDEST PUSH2 0xD38 DUP4 DUP4 DUP11 DUP5 PUSH2 0x1962 JUMP JUMPDEST POP JUMPDEST PUSH2 0xD47 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8FB2C26B66AF59DE39B1B2F4E1FBA157F4408A9B52495599333E37E3191B0869 DUP7 DUP6 PUSH1 0x40 MLOAD PUSH2 0xD97 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xDC1 DUP9 DUP8 PUSH1 0x1 PUSH2 0x1A83 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDDE JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xDEE DUP9 DUP8 PUSH1 0x0 DUP6 PUSH2 0x1654 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE02 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE2C JUMPI PUSH2 0xE27 DUP9 DUP3 PUSH2 0x1843 JUMP JUMPDEST PUSH2 0xE5B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xE59 DUP10 DUP4 DUP11 DUP5 PUSH2 0x1962 JUMP JUMPDEST POP JUMPDEST DUP2 ISZERO PUSH2 0xE86 JUMPI PUSH2 0xE86 PUSH1 0x2 PUSH2 0xE76 PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH32 0x6CB64AA506CC92732FC83160C8EA61203B5A13A8CF92E5B5C7CCC4BA6BB41D38 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0xEE2 PUSH2 0x1CE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP3 POP PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH32 0x312E310000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE POP SWAP4 SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x7FA8A98700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xFE3 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A51557400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x56F JUMP JUMPDEST DUP4 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x102E JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x836F8EF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST DUP3 ISZERO PUSH2 0x107E JUMPI PUSH1 0x3 DUP5 ADD SLOAD ISZERO PUSH2 0x1079 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x10C5 JUMP JUMPDEST DUP4 PUSH1 0x3 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x10C5 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0xE567C93E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SUB PUSH2 0x10F2 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113A PUSH2 0x10FF PUSH2 0x1CE8 JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP6 DUP2 MSTORE PUSH1 0x42 DUP3 KECCAK256 SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1147 DUP5 DUP3 DUP5 PUSH2 0x1DDE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1173 PUSH2 0x1163 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP5 POP SWAP1 PUSH1 0xFF AND PUSH2 0x11D3 JUMPI DUP5 ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4C58FF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD SWAP3 POP PUSH2 0x11E7 DUP5 DUP3 PUSH1 0x0 DUP9 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x11F5 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST TIMESTAMP PUSH2 0x1205 PUSH2 0x100 DUP9 ADD CALLDATALOAD DUP6 PUSH2 0x3144 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1214 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST GT ISZERO PUSH2 0x1255 JUMPI DUP5 ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x31EA4CB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x1262 DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x1FF7 JUMP JUMPDEST DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF AND PUSH4 0x1010000 OR SWAP1 SSTORE POP PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x130E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE DUP8 PUSH1 0x44 DUP3 ADD MSTORE DUP7 PUSH1 0x64 DUP3 ADD MSTORE DUP6 PUSH1 0x84 DUP3 ADD MSTORE DUP5 PUSH1 0xA4 DUP3 ADD MSTORE DUP4 PUSH1 0xC4 DUP3 ADD MSTORE DUP3 PUSH1 0xE4 DUP3 ADD MSTORE PUSH2 0x1308 DUP3 DUP3 PUSH2 0x104 PUSH2 0x209A JUMP JUMPDEST POP PUSH2 0x137F JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1322 JUMPI PUSH2 0x1322 PUSH2 0x3199 JUMP JUMPDEST SUB PUSH2 0x1372 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x1361 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP7 DUP7 DUP7 DUP7 PUSH2 0x2236 JUMP JUMPDEST PUSH2 0x137F JUMP JUMPDEST PUSH2 0x137F DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2345 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13BC PUSH2 0x1398 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E43 JUMP JUMPDEST DUP3 PUSH2 0x13AD PUSH2 0x120 DUP7 ADD CALLDATALOAD PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x13B7 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x13D3 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x13DD SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x13F1 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x13FB SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1405 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP PUSH2 0x1420 PUSH2 0x141A PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP3 PUSH2 0x2477 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1469 PUSH2 0x1438 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x1445 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH2 0x145A PUSH2 0x120 DUP8 ADD CALLDATALOAD PUSH2 0x180 DUP9 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1464 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1480 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x148A SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x149E PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x14A8 SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x14B2 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP PUSH2 0x1420 PUSH2 0x14C7 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x14D7 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 PUSH2 0x14F5 PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD CALLDATALOAD DUP8 PUSH2 0x2654 JUMP JUMPDEST PUSH2 0x1509 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH2 0x120 ADD CALLDATALOAD LT ISZERO PUSH2 0x155F JUMPI DUP5 ISZERO PUSH2 0x154F JUMPI PUSH1 0x40 MLOAD PUSH32 0xA199CB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST PUSH2 0x1581 PUSH2 0x1571 CALLDATASIZE DUP4 SWAP1 SUB DUP4 ADD DUP4 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x159F DUP6 DUP3 PUSH1 0x1 DUP10 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x15B2 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP PUSH2 0x1292 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x15DA JUMPI PUSH2 0x15DA PUSH2 0x15CB PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E43 JUMP JUMPDEST DUP7 PUSH2 0x83C PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x2F64 JUMP JUMPDEST PUSH2 0x15FE CALLER PUSH2 0x15EE PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP6 PUSH2 0x100 ADD CALLDATALOAD PUSH2 0x26B3 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FF0000 SWAP1 SWAP2 AND CALLER PUSH5 0x100000000 MUL OR DUP2 OR DUP4 SSTORE TIMESTAMP DUP2 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP3 ADD DUP3 SWAP1 SSTORE SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH2 0x167F PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1691 DUP7 PUSH2 0x120 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x1C0 DUP9 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP DUP4 ISZERO PUSH2 0x177D JUMPI PUSH2 0x16B8 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x16C2 SWAP1 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x16D1 SWAP1 PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST SWAP2 POP PUSH2 0x16E7 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x16F1 SWAP1 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x1700 SWAP1 PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP3 SWAP1 DUP3 PUSH2 0x2710 PUSH2 0x160 DUP12 ADD CALLDATALOAD PUSH2 0x1727 PUSH2 0x120 DUP14 ADD CALLDATALOAD PUSH2 0x140 DUP15 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1731 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x173B SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1745 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x1754 SWAP1 PUSH2 0x140 DUP12 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x175E SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x1768 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1839 JUMP JUMPDEST PUSH2 0x1791 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x179B SWAP1 DUP8 PUSH2 0x3144 JUMP JUMPDEST SWAP2 POP PUSH2 0x17B1 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x17BB SWAP1 DUP8 PUSH2 0x3144 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP4 SWAP2 PUSH2 0x2710 SWAP1 PUSH2 0x17D9 SWAP1 PUSH2 0x160 DUP13 ADD CALLDATALOAD SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x17E3 SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x17ED SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x17F7 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE DUP5 ISZERO PUSH2 0x1839 JUMPI DUP7 PUSH2 0x1A0 ADD CALLDATALOAD DUP4 PUSH1 0x0 ADD DUP2 DUP2 MLOAD PUSH2 0x1819 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH2 0x1A0 DUP10 ADD CALLDATALOAD SWAP2 SWAP1 PUSH2 0x1835 SWAP1 DUP4 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD CALLVALUE SWAP1 DUP2 LT ISZERO PUSH2 0x1880 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A783B8D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x189A PUSH2 0x1890 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x18B7 PUSH2 0x18AD PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD ISZERO PUSH2 0x18DE JUMPI PUSH2 0x18DE PUSH2 0x18D4 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x18EA SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1420 JUMPI PUSH2 0x1420 CALLER DUP3 PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x1906 DUP2 DUP4 PUSH2 0x2860 JUMP JUMPDEST DUP2 PUSH2 0x1951 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x1945 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP8 DUP8 DUP8 DUP8 PUSH2 0x2236 JUMP JUMPDEST PUSH2 0x137F DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x287F JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1975 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E43 JUMP JUMPDEST SWAP1 POP PUSH2 0x1998 DUP2 DUP4 PUSH2 0x198C PUSH1 0xC0 DUP11 ADD PUSH1 0xA0 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP9 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD ISZERO PUSH2 0x19C3 JUMPI PUSH2 0x19C3 DUP2 DUP4 PUSH2 0x19B7 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD DUP9 DUP9 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x19DC SWAP2 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x19E6 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x20 ADD MLOAD DUP2 LT PUSH2 0x1A3F JUMPI PUSH2 0x1A11 DUP3 DUP5 PUSH2 0x1A05 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD MLOAD DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x1A20 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A36 JUMPI PUSH2 0x1A36 DUP3 DUP5 ADDRESS DUP5 DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0x136D DUP5 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0x1A59 DUP3 DUP5 PUSH2 0x1A51 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST DUP5 DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0x1A62 DUP5 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0x137F DUP3 PUSH2 0x1A73 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E43 JUMP JUMPDEST DUP4 DUP10 PUSH1 0x20 ADD MLOAD PUSH2 0x1464 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AAA PUSH2 0x1A9A CALLDATASIZE DUP10 SWAP1 SUB DUP10 ADD DUP10 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP6 POP SWAP1 PUSH1 0xFF AND PUSH2 0x1B10 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4C58FF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x1B1D DUP6 DUP3 PUSH1 0x0 DUP10 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x1B31 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CDF JUMP JUMPDEST DUP8 PUSH2 0x120 ADD CALLDATALOAD DUP8 DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1B47 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST GT DUP1 PUSH2 0x1B53 JUMPI POP PUSH1 0x1 DUP8 LT JUMPDEST ISZERO PUSH2 0x1B93 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC8910EC000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST TIMESTAMP DUP9 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1BA9 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1BB8 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST LT ISZERO PUSH2 0x1BF9 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E775CAE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST DUP7 DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1C0D SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 SUB PUSH2 0x1C65 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF AND PUSH3 0x10000 OR DUP2 SSTORE PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 SWAP3 POP PUSH2 0x1C60 SWAP1 PUSH2 0x1FF7 JUMP JUMPDEST PUSH2 0x1CB9 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH2 0x1CB9 SWAP3 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x1CA5 SWAP1 PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP1 PUSH2 0x3144 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1CB4 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST PUSH2 0x297C JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH1 0x1 SWAP2 POP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x1DB9 JUMPI PUSH2 0x365 PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH1 0x20 DUP5 SUB DUP1 MLOAD DUP3 PUSH1 0x41 SUB PUSH1 0x0 PUSH1 0x1 DUP3 GT PUSH2 0x1E65 JUMPI PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x0 BYTE SWAP7 POP DUP3 ISZERO PUSH2 0x1E43 JUMPI PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD SWAP7 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x40 DUP11 ADD MSTORE JUMPDEST DUP7 DUP10 MSTORE DUP10 DUP6 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x80 DUP8 PUSH1 0x1 GAS STATICCALL POP DUP4 DUP6 MSTORE DUP6 DUP10 MSTORE PUSH1 0x40 DUP10 ADD MSTORE POP PUSH1 0x0 MLOAD JUMPDEST DUP10 EQ DUP10 ISZERO ISZERO AND SWAP6 POP DUP6 SWAP1 POP PUSH2 0x1FBC JUMPI PUSH1 0x40 DUP3 MSTORE PUSH1 0x44 DUP7 SUB DUP1 MLOAD PUSH1 0x40 DUP9 SUB DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP11 DUP3 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 DUP10 ADD DUP7 DUP16 GAS STATICCALL SWAP9 POP DUP9 ISZERO PUSH2 0x1FB2 JUMPI PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MLOAD EQ PUSH2 0x1FB2 JUMPI DUP12 EXTCODESIZE ISZERO PUSH2 0x1F18 JUMPI PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP8 PUSH1 0x41 SUB GT ISZERO PUSH2 0x1F4E JUMPI PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH5 0x101000000 DUP9 BYTE PUSH2 0x1F88 JUMPI PUSH32 0x1F003D0A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST DUP5 DUP7 MSTORE SWAP2 SWAP1 SWAP3 MSTORE SWAP1 MSTORE JUMPDEST POP POP POP POP DUP1 PUSH2 0x1147 JUMPI PUSH2 0x1FCD PUSH2 0x2A30 JUMP JUMPDEST PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x42966C6800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x42966C68 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x207F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2093 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH21 0xFF0000000000000000000000000000000000000000 OR PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH32 0x0 DUP4 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 SWAP2 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 MSTORE PUSH1 0x20 PUSH1 0x0 DUP6 DUP8 PUSH1 0x0 DUP8 GAS CALL SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP2 PUSH2 0x2194 JUMPI PUSH2 0x214A PUSH2 0x2A30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD13D53D400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x222E JUMPI PUSH1 0x40 MLOAD PUSH32 0x1CF99B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xA8B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x226A JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x2336 JUMPI RETURNDATASIZE ISZERO PUSH2 0x22F7 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x22DE JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x22F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x2379 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x245B JUMPI RETURNDATASIZE ISZERO PUSH2 0x241D JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2404 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x2419 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH2 0x2480 DUP2 PUSH2 0x2A78 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x1420 JUMPI PUSH2 0x249B PUSH2 0x2A30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x470C7C1D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP3 PUSH1 0x4 MSTORE DUP2 PUSH1 0x24 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x44 PUSH1 0x0 DUP1 DUP9 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x2645 JUMPI DUP1 DUP7 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2645 JUMPI DUP1 PUSH2 0x2617 JUMPI DUP2 PUSH2 0x25DD JUMPI RETURNDATASIZE ISZERO PUSH2 0x259E JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2585 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x259A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE ADDRESS PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE ADDRESS PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP JUMP JUMPDEST PUSH1 0x0 TIMESTAMP DUP5 GT DUP1 PUSH2 0x2664 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x26A9 JUMPI DUP2 ISZERO PUSH2 0x26A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6F7EAC2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC6C3BBE600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xC6C3BBE6 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2753 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 0x2777 SWAP2 SWAP1 PUSH2 0x321A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xE030565E DUP3 DUP9 PUSH2 0x27C1 TIMESTAMP DUP9 PUSH2 0x3181 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2852 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x286D DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1420 JUMPI PUSH2 0x1420 DUP4 PUSH2 0x2953 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x28D3 JUMPI POP PUSH1 0x40 DUP1 DUP9 MSTORE PUSH1 0x20 DUP1 DUP10 ADD DUP11 SWAP1 MSTORE PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 SWAP2 DUP10 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x64 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x28E2 JUMP JUMPDEST POP PUSH1 0x64 DUP8 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 MSTORE JUMPDEST PUSH1 0x3C PUSH1 0xC0 DUP3 MUL DUP10 ADD SUB DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE DUP4 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2921 DUP4 PUSH2 0x2A78 JUMP JUMPDEST PUSH2 0x292B DUP2 DUP4 PUSH2 0x2860 JUMP JUMPDEST DUP2 PUSH2 0x2941 JUMPI PUSH2 0x293C DUP7 DUP7 DUP7 DUP7 PUSH2 0x2AB5 JUMP JUMPDEST PUSH2 0x222E JUMP JUMPDEST PUSH2 0x222E DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD EQ PUSH2 0x295F JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296C DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2978 DUP2 DUP4 PUSH2 0x2C22 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE030565E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE030565E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xF8C JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2A63 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x1420 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x2AB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x91B3E51400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x2C12 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2C12 JUMPI DUP1 PUSH2 0x2BE4 JUMPI DUP2 PUSH2 0x2BAA JUMPI RETURNDATASIZE ISZERO PUSH2 0x2B6B JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2B52 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x2B67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST PUSH1 0x64 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0xC0 MUL PUSH1 0x44 ADD PUSH2 0x2C3D DUP5 DUP4 DUP4 PUSH2 0x209A JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2CFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH2 0x240 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2CA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D38 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D6E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DD4 DUP6 DUP3 DUP7 ADD PUSH2 0x2D6E JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x260 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2DF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E03 DUP6 DUP6 PUSH2 0x2D38 JUMP JUMPDEST SWAP6 PUSH2 0x220 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH2 0x240 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2E3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP3 PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E8C JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x2E6F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2E9E JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC1 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2FB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2FC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x301B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303C PUSH2 0x2FD0 JUMP JUMPDEST PUSH2 0x3045 DUP4 PUSH2 0x2E1A JUMP JUMPDEST DUP2 MSTORE PUSH2 0x3053 PUSH1 0x20 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x306E PUSH1 0x60 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x307F PUSH1 0x80 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3090 PUSH1 0xA0 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xE0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x140 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x160 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x180 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1C0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1E0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x200 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x317C JUMPI PUSH2 0x317C PUSH2 0x3115 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3194 JUMPI PUSH2 0x3194 PUSH2 0x3115 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x31FE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3215 JUMPI PUSH2 0x3215 PUSH2 0x3115 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 PUSH20 0xCAC9304A6E97F804D4E16010ABC1590E388228A5 PUSH7 0x5D8CD4BBE03523 PUSH23 0xB264736F6C634300080E00330000000000000000000000 ","sourceMap":"121:254:13:-:0;;;159:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;233:17;252:11;233:17;252:11;233:17;252:11;;233:17;;;;;786:19:32;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:32;;-1:-1:-1;1203:187:32;;;6408:25:54;;;;6449:18;;;6442:34;;;;-1:-1:-1;6492:18:54;;6485:34;;;;6535:18;;;6528:34;1371:4:32;6578:19:54;;;6571:61;1203:187:32;;;;;;;;;;6380:19:54;;1203:187:32;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:32;;;;;;1032:42;;;-1:-1:-1;;;1032:42:32;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:32;;-1:-1:-1;;2345:1:33;658:16:42;:31;-1:-1:-1;;;;;;;;417:20:43;;;-1:-1:-1;121:254:13;;-1:-1:-1;;;;;;;121:254:13;1527:1491:32;1616:16;;;;1794:13;353::13;;;;;;;;;;;;-1:-1:-1;;;353:13:13;;;;;273:100;1794:13:32;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:32;;;;1909:724;1778:31;;-1:-1:-1;1834:23:32;;-1:-1:-1;;;1909:724:32;;;-1:-1:-1;;;4331:31:54;;-1:-1:-1;;;4387:2:54;4378:12;;4371:40;-1:-1:-1;;;4436:2:54;4427:12;;4420:38;4488:21;4483:2;4474:12;;4467:43;-1:-1:-1;;;4535:2:54;4526:12;;4519:41;-1:-1:-1;;;4585:2:54;4576:12;;4569:39;-1:-1:-1;;;4633:2:54;4624:12;;4617:41;-1:-1:-1;;;4683:3:54;4674:13;;4667:43;-1:-1:-1;;;4735:3:54;4726:13;;4719:41;-1:-1:-1;;;5115:3:54;5106:13;;809:32;-1:-1:-1;;;857:12:54;;;945:31;-1:-1:-1;;;992:12:54;;;1080:30;-1:-1:-1;;;1126:12:54;;;1214:29;-1:-1:-1;;;1259:12:54;;;1347:31;-1:-1:-1;;;1394:12:54;;;1482:27;1625:22;1525:12;;;1613:35;-1:-1:-1;;;1664:12:54;;;1752:28;1896:21;1796:12;;;1884:34;-1:-1:-1;;;1934:12:54;;;2022:30;-1:-1:-1;;;2068:12:54;;;2156:16;2188:11;;;2210:2926;1909:724:32;;;;-1:-1:-1;;1909:724:32;;;;;;;;;;-1:-1:-1;;;1909:724:32;2690:248;;5848:28:54;-1:-1:-1;;;5892:12:54;;;5885:36;-1:-1:-1;;;5937:12:54;;;5930:39;-1:-1:-1;;;5985:12:54;;;5978:40;6048:27;6034:12;;;6027:49;-1:-1:-1;;;6092:12:54;;;6085:25;1909:724:32;-1:-1:-1;6126:12:54;;2690:248:32;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:177:54:-;93:13;;-1:-1:-1;;;;;135:31:54;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:245::-;573:6;581;634:2;622:9;613:7;609:23;605:32;602:52;;;650:1;647;640:12;602:52;-1:-1:-1;;673:16:54;;729:2;714:18;;;708:25;673:16;;708:25;;-1:-1:-1;494:245:54:o;6149:489::-;121:254:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_assertNonReentrant_7766":{"entryPoint":3920,"id":7766,"parameterSlots":0,"returnSlots":0},"@_assertNonZeroAmount_4362":{"entryPoint":10872,"id":4362,"parameterSlots":1,"returnSlots":0},"@_assertValidSignature_7918":{"entryPoint":7646,"id":7918,"parameterSlots":3,"returnSlots":0},"@_burnToken_7880":{"entryPoint":8183,"id":7880,"parameterSlots":1,"returnSlots":0},"@_calculateDispatch_6264":{"entryPoint":5716,"id":6264,"parameterSlots":4,"returnSlots":1},"@_callConduitUsingOffsets_5861":{"entryPoint":8346,"id":5861,"parameterSlots":3,"returnSlots":0},"@_cancel_7522":{"entryPoint":2407,"id":7522,"parameterSlots":2,"returnSlots":1},"@_deriveConduit_5971":{"entryPoint":null,"id":5971,"parameterSlots":1,"returnSlots":1},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveEIP712Digest_6030":{"entryPoint":null,"id":6030,"parameterSlots":2,"returnSlots":1},"@_deriveOrderHash_5951":{"entryPoint":null,"id":5951,"parameterSlots":2,"returnSlots":1},"@_domainSeparator_5987":{"entryPoint":7400,"id":5987,"parameterSlots":0,"returnSlots":1},"@_extendToken_7867":{"entryPoint":10620,"id":7867,"parameterSlots":3,"returnSlots":0},"@_getAccumulatorConduitKey_5871":{"entryPoint":null,"id":5871,"parameterSlots":1,"returnSlots":1},"@_getCounter_5441":{"entryPoint":null,"id":5441,"parameterSlots":1,"returnSlots":1},"@_getOrderStatus_7712":{"entryPoint":null,"id":7712,"parameterSlots":1,"returnSlots":8},"@_incrementCounter_5427":{"entryPoint":2314,"id":5427,"parameterSlots":0,"returnSlots":1},"@_information_6018":{"entryPoint":3797,"id":6018,"parameterSlots":0,"returnSlots":3},"@_insert_5916":{"entryPoint":10367,"id":5916,"parameterSlots":8,"returnSlots":0},"@_mintToken_7845":{"entryPoint":9907,"id":7845,"parameterSlots":4,"returnSlots":1},"@_performERC1155Transfer_7984":{"entryPoint":9029,"id":7984,"parameterSlots":5,"returnSlots":0},"@_performERC20Transfer_7943":{"entryPoint":10933,"id":7943,"parameterSlots":4,"returnSlots":0},"@_performERC721Transfer_7968":{"entryPoint":8758,"id":7968,"parameterSlots":4,"returnSlots":0},"@_performSelfERC20Transfer_7954":{"entryPoint":9452,"id":7954,"parameterSlots":3,"returnSlots":0},"@_revertWithReasonIfOneIsReturned_6053":{"entryPoint":10800,"id":6053,"parameterSlots":0,"returnSlots":0},"@_transferERC20AndFinalize_6885":{"entryPoint":6498,"id":6885,"parameterSlots":4,"returnSlots":0},"@_transferERC20Broken_6674":{"entryPoint":5157,"id":6674,"parameterSlots":2,"returnSlots":0},"@_transferERC20_5625":{"entryPoint":10520,"id":5625,"parameterSlots":6,"returnSlots":0},"@_transferERC721_5685":{"entryPoint":6396,"id":5685,"parameterSlots":7,"returnSlots":0},"@_transferEthAndFinalize_6754":{"entryPoint":6211,"id":6754,"parameterSlots":2,"returnSlots":0},"@_transferEthBroken_6622":{"entryPoint":5000,"id":6622,"parameterSlots":2,"returnSlots":0},"@_transferEth_5568":{"entryPoint":9335,"id":5568,"parameterSlots":2,"returnSlots":0},"@_transferIndividual721Or1155Item_5539":{"entryPoint":4761,"id":5539,"parameterSlots":7,"returnSlots":0},"@_triggerIfArmedAndNotAccumulatable_5766":{"entryPoint":10336,"id":5766,"parameterSlots":2,"returnSlots":0},"@_triggerIfArmed_5791":{"entryPoint":10579,"id":5791,"parameterSlots":1,"returnSlots":0},"@_trigger_5814":{"entryPoint":11298,"id":5814,"parameterSlots":2,"returnSlots":0},"@_validateAndBreakOrder_6568":{"entryPoint":2855,"id":6568,"parameterSlots":1,"returnSlots":1},"@_validateAndFulfillOrder_6381":{"entryPoint":3116,"id":6381,"parameterSlots":2,"returnSlots":1},"@_validateAndRepayOrder_6494":{"entryPoint":3501,"id":6494,"parameterSlots":3,"returnSlots":1},"@_validateOrderAndUpdateBreakStatus_7384":{"entryPoint":4429,"id":7384,"parameterSlots":2,"returnSlots":3},"@_validateOrderAndUpdateRepayStatus_7271":{"entryPoint":6787,"id":7271,"parameterSlots":3,"returnSlots":4},"@_validateOrderAndUpdateStatus_7085":{"entryPoint":5341,"id":7085,"parameterSlots":2,"returnSlots":3},"@_validate_7665":{"entryPoint":1466,"id":7665,"parameterSlots":2,"returnSlots":1},"@_verifyOrderStatus_8437":{"entryPoint":3982,"id":8437,"parameterSlots":4,"returnSlots":1},"@_verifySignature_8358":{"entryPoint":4304,"id":8358,"parameterSlots":3,"returnSlots":0},"@_verifyTime_8326":{"entryPoint":9812,"id":8326,"parameterSlots":3,"returnSlots":1},"@breakOrder_4445":{"entryPoint":886,"id":4445,"parameterSlots":1,"returnSlots":1},"@cancel_4461":{"entryPoint":874,"id":4461,"parameterSlots":2,"returnSlots":1},"@fulfillOrder_4409":{"entryPoint":1366,"id":4409,"parameterSlots":2,"returnSlots":1},"@getCounter_4580":{"entryPoint":1399,"id":4580,"parameterSlots":1,"returnSlots":1},"@getOrderHash_4540":{"entryPoint":903,"id":4540,"parameterSlots":1,"returnSlots":1},"@getOrderStatus_4566":{"entryPoint":712,"id":4566,"parameterSlots":1,"returnSlots":8},"@incrementCounter_4488":{"entryPoint":859,"id":4488,"parameterSlots":0,"returnSlots":1},"@information_4593":{"entryPoint":1442,"id":4593,"parameterSlots":0,"returnSlots":3},"@repayOrder_4430":{"entryPoint":1378,"id":4430,"parameterSlots":3,"returnSlots":1},"@shadowToken_7790":{"entryPoint":null,"id":7790,"parameterSlots":0,"returnSlots":0},"@validate_4477":{"entryPoint":693,"id":4477,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":11802,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_OrderComponents_calldata":{"entryPoint":11630,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_OrderParameters_calldata":{"entryPoint":11576,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":11843,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":11476,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":11334,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":11451,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderComponents_$5331_calldata_ptr":{"entryPoint":11649,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptr":{"entryPoint":11601,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptrt_bytes32t_uint256":{"entryPoint":11747,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_struct$_OrderParameters_$5366_memory_ptr":{"entryPoint":12321,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Order_$5372_calldata_ptrt_bytes32":{"entryPoint":11678,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":12826,"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_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"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_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__to_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":9,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint256_t_bool__to_t_bytes32_t_uint256_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed":{"entryPoint":11870,"id":null,"parameterSlots":4,"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_address_t_uint64__to_t_uint256_t_address_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":12132,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_t_struct$_Order_$5372_calldata_ptr":{"entryPoint":12070,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":12240,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":12673,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":12744,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":12612,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":12803,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":12565,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":12697,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":12023,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:13159:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"144:510:54","statements":[{"body":{"nodeType":"YulBlock","src":"190:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"199:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"202:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"192:6:54"},"nodeType":"YulFunctionCall","src":"192:12:54"},"nodeType":"YulExpressionStatement","src":"192:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"165:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"174:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"161:3:54"},"nodeType":"YulFunctionCall","src":"161:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"186:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"157:3:54"},"nodeType":"YulFunctionCall","src":"157:32:54"},"nodeType":"YulIf","src":"154:52:54"},{"nodeType":"YulVariableDeclaration","src":"215:37:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"242:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"229:12:54"},"nodeType":"YulFunctionCall","src":"229:23:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"219:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"261:28:54","value":{"kind":"number","nodeType":"YulLiteral","src":"271:18:54","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"265:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"316:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"325:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"328:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"318:6:54"},"nodeType":"YulFunctionCall","src":"318:12:54"},"nodeType":"YulExpressionStatement","src":"318:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"304:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"312:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"301:2:54"},"nodeType":"YulFunctionCall","src":"301:14:54"},"nodeType":"YulIf","src":"298:34:54"},{"nodeType":"YulVariableDeclaration","src":"341:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"355:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"366:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"351:3:54"},"nodeType":"YulFunctionCall","src":"351:22:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"345:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"421:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"430:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"433:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"423:6:54"},"nodeType":"YulFunctionCall","src":"423:12:54"},"nodeType":"YulExpressionStatement","src":"423:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"400:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"404:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"396:3:54"},"nodeType":"YulFunctionCall","src":"396:13:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"411:7:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"392:3:54"},"nodeType":"YulFunctionCall","src":"392:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"385:6:54"},"nodeType":"YulFunctionCall","src":"385:35:54"},"nodeType":"YulIf","src":"382:55:54"},{"nodeType":"YulVariableDeclaration","src":"446:30:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"473:2:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"460:12:54"},"nodeType":"YulFunctionCall","src":"460:16:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"450:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"503:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"512:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"515:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"505:6:54"},"nodeType":"YulFunctionCall","src":"505:12:54"},"nodeType":"YulExpressionStatement","src":"505:12:54"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"491:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"499:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"488:2:54"},"nodeType":"YulFunctionCall","src":"488:14:54"},"nodeType":"YulIf","src":"485:34:54"},{"body":{"nodeType":"YulBlock","src":"577:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"586:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"589:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"579:6:54"},"nodeType":"YulFunctionCall","src":"579:12:54"},"nodeType":"YulExpressionStatement","src":"579:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"542:2:54"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"550:1:54","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"553:6:54"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"546:3:54"},"nodeType":"YulFunctionCall","src":"546:14:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"538:3:54"},"nodeType":"YulFunctionCall","src":"538:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"563:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"534:3:54"},"nodeType":"YulFunctionCall","src":"534:32:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"568:7:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"531:2:54"},"nodeType":"YulFunctionCall","src":"531:45:54"},"nodeType":"YulIf","src":"528:65:54"},{"nodeType":"YulAssignment","src":"602:21:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"616:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"620:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"612:3:54"},"nodeType":"YulFunctionCall","src":"612:11:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"602:6:54"}]},{"nodeType":"YulAssignment","src":"632:16:54","value":{"name":"length","nodeType":"YulIdentifier","src":"642:6:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"632:6:54"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"102:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"113:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"125:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"133:6:54","type":""}],"src":"14:640:54"},{"body":{"nodeType":"YulBlock","src":"754:92:54","statements":[{"nodeType":"YulAssignment","src":"764:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"776:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"787:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"772:3:54"},"nodeType":"YulFunctionCall","src":"772:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"764:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"806:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"831:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"824:6:54"},"nodeType":"YulFunctionCall","src":"824:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"817:6:54"},"nodeType":"YulFunctionCall","src":"817:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"799:6:54"},"nodeType":"YulFunctionCall","src":"799:41:54"},"nodeType":"YulExpressionStatement","src":"799:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"723:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"734:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"745:4:54","type":""}],"src":"659:187:54"},{"body":{"nodeType":"YulBlock","src":"921:110:54","statements":[{"body":{"nodeType":"YulBlock","src":"967:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"976:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"979:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"969:6:54"},"nodeType":"YulFunctionCall","src":"969:12:54"},"nodeType":"YulExpressionStatement","src":"969:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"942:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"951:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"938:3:54"},"nodeType":"YulFunctionCall","src":"938:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"963:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"934:3:54"},"nodeType":"YulFunctionCall","src":"934:32:54"},"nodeType":"YulIf","src":"931:52:54"},{"nodeType":"YulAssignment","src":"992:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1015:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1002:12:54"},"nodeType":"YulFunctionCall","src":"1002:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"992:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"887:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"898:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"910:6:54","type":""}],"src":"851:180:54"},{"body":{"nodeType":"YulBlock","src":"1309:495:54","statements":[{"nodeType":"YulAssignment","src":"1319:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1331:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1342:3:54","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1327:3:54"},"nodeType":"YulFunctionCall","src":"1327:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1319:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1362:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1387:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1380:6:54"},"nodeType":"YulFunctionCall","src":"1380:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1373:6:54"},"nodeType":"YulFunctionCall","src":"1373:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1355:6:54"},"nodeType":"YulFunctionCall","src":"1355:41:54"},"nodeType":"YulExpressionStatement","src":"1355:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:54"},"nodeType":"YulFunctionCall","src":"1412:18:54"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1446:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1439:6:54"},"nodeType":"YulFunctionCall","src":"1439:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1432:6:54"},"nodeType":"YulFunctionCall","src":"1432:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1405:6:54"},"nodeType":"YulFunctionCall","src":"1405:50:54"},"nodeType":"YulExpressionStatement","src":"1405:50:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1475:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1486:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1471:3:54"},"nodeType":"YulFunctionCall","src":"1471:18:54"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1505:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1498:6:54"},"nodeType":"YulFunctionCall","src":"1498:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1491:6:54"},"nodeType":"YulFunctionCall","src":"1491:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1464:6:54"},"nodeType":"YulFunctionCall","src":"1464:50:54"},"nodeType":"YulExpressionStatement","src":"1464:50:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1534:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1530:3:54"},"nodeType":"YulFunctionCall","src":"1530:18:54"},{"arguments":[{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"1564:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1557:6:54"},"nodeType":"YulFunctionCall","src":"1557:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1550:6:54"},"nodeType":"YulFunctionCall","src":"1550:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1523:6:54"},"nodeType":"YulFunctionCall","src":"1523:50:54"},"nodeType":"YulExpressionStatement","src":"1523:50:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1593:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1604:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1589:3:54"},"nodeType":"YulFunctionCall","src":"1589:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1614:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1622:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1610:3:54"},"nodeType":"YulFunctionCall","src":"1610:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1582:6:54"},"nodeType":"YulFunctionCall","src":"1582:84:54"},"nodeType":"YulExpressionStatement","src":"1582:84:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1697:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1682:3:54"},"nodeType":"YulFunctionCall","src":"1682:19:54"},{"name":"value5","nodeType":"YulIdentifier","src":"1703:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1675:6:54"},"nodeType":"YulFunctionCall","src":"1675:35:54"},"nodeType":"YulExpressionStatement","src":"1675:35:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1730:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1741:3:54","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1726:3:54"},"nodeType":"YulFunctionCall","src":"1726:19:54"},{"name":"value6","nodeType":"YulIdentifier","src":"1747:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1719:6:54"},"nodeType":"YulFunctionCall","src":"1719:35:54"},"nodeType":"YulExpressionStatement","src":"1719:35:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1774:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1785:3:54","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1770:3:54"},"nodeType":"YulFunctionCall","src":"1770:19:54"},{"name":"value7","nodeType":"YulIdentifier","src":"1791:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1763:6:54"},"nodeType":"YulFunctionCall","src":"1763:35:54"},"nodeType":"YulExpressionStatement","src":"1763:35:54"}]},"name":"abi_encode_tuple_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__to_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1222:9:54","type":""},{"name":"value7","nodeType":"YulTypedName","src":"1233:6:54","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1241:6:54","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1249:6:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1257:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1265:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1273:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1281:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1289:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1300:4:54","type":""}],"src":"1036:768:54"},{"body":{"nodeType":"YulBlock","src":"1910:76:54","statements":[{"nodeType":"YulAssignment","src":"1920:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1932:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1928:3:54"},"nodeType":"YulFunctionCall","src":"1928:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1920:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1962:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"1973:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1955:6:54"},"nodeType":"YulFunctionCall","src":"1955:25:54"},"nodeType":"YulExpressionStatement","src":"1955:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1879:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1890:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1901:4:54","type":""}],"src":"1809:177:54"},{"body":{"nodeType":"YulBlock","src":"2131:515:54","statements":[{"body":{"nodeType":"YulBlock","src":"2177:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2186:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2189:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2179:6:54"},"nodeType":"YulFunctionCall","src":"2179:12:54"},"nodeType":"YulExpressionStatement","src":"2179:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2152:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2161:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2148:3:54"},"nodeType":"YulFunctionCall","src":"2148:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2173:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2144:3:54"},"nodeType":"YulFunctionCall","src":"2144:32:54"},"nodeType":"YulIf","src":"2141:52:54"},{"nodeType":"YulVariableDeclaration","src":"2202:37:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2229:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2216:12:54"},"nodeType":"YulFunctionCall","src":"2216:23:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2206:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2248:28:54","value":{"kind":"number","nodeType":"YulLiteral","src":"2258:18:54","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2252:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2303:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2312:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2315:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2305:6:54"},"nodeType":"YulFunctionCall","src":"2305:12:54"},"nodeType":"YulExpressionStatement","src":"2305:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2291:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"2299:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2288:2:54"},"nodeType":"YulFunctionCall","src":"2288:14:54"},"nodeType":"YulIf","src":"2285:34:54"},{"nodeType":"YulVariableDeclaration","src":"2328:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2342:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"2353:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2338:3:54"},"nodeType":"YulFunctionCall","src":"2338:22:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2332:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2408:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2417:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2420:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2410:6:54"},"nodeType":"YulFunctionCall","src":"2410:12:54"},"nodeType":"YulExpressionStatement","src":"2410:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2387:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"2391:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:54"},"nodeType":"YulFunctionCall","src":"2383:13:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2398:7:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2379:3:54"},"nodeType":"YulFunctionCall","src":"2379:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2372:6:54"},"nodeType":"YulFunctionCall","src":"2372:35:54"},"nodeType":"YulIf","src":"2369:55:54"},{"nodeType":"YulVariableDeclaration","src":"2433:30:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2460:2:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2447:12:54"},"nodeType":"YulFunctionCall","src":"2447:16:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2437:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2490:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2499:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2502:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2492:6:54"},"nodeType":"YulFunctionCall","src":"2492:12:54"},"nodeType":"YulExpressionStatement","src":"2492:12:54"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2478:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"2486:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2475:2:54"},"nodeType":"YulFunctionCall","src":"2475:14:54"},"nodeType":"YulIf","src":"2472:34:54"},{"body":{"nodeType":"YulBlock","src":"2569:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2578:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2581:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2571:6:54"},"nodeType":"YulFunctionCall","src":"2571:12:54"},"nodeType":"YulExpressionStatement","src":"2571:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2529:2:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2537:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2545:6:54","type":"","value":"0x0240"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2533:3:54"},"nodeType":"YulFunctionCall","src":"2533:19:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2525:3:54"},"nodeType":"YulFunctionCall","src":"2525:28:54"},{"kind":"number","nodeType":"YulLiteral","src":"2555:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2521:3:54"},"nodeType":"YulFunctionCall","src":"2521:37:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2560:7:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2518:2:54"},"nodeType":"YulFunctionCall","src":"2518:50:54"},"nodeType":"YulIf","src":"2515:70:54"},{"nodeType":"YulAssignment","src":"2594:21:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"2612:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:54"},"nodeType":"YulFunctionCall","src":"2604:11:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2594:6:54"}]},{"nodeType":"YulAssignment","src":"2624:16:54","value":{"name":"length","nodeType":"YulIdentifier","src":"2634:6:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2624:6:54"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2089:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2100:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2112:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2120:6:54","type":""}],"src":"1991:655:54"},{"body":{"nodeType":"YulBlock","src":"2729:86:54","statements":[{"body":{"nodeType":"YulBlock","src":"2769:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2778:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2781:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2771:6:54"},"nodeType":"YulFunctionCall","src":"2771:12:54"},"nodeType":"YulExpressionStatement","src":"2771:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"2750:3:54"},{"name":"offset","nodeType":"YulIdentifier","src":"2755:6:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2746:3:54"},"nodeType":"YulFunctionCall","src":"2746:16:54"},{"kind":"number","nodeType":"YulLiteral","src":"2764:3:54","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2742:3:54"},"nodeType":"YulFunctionCall","src":"2742:26:54"},"nodeType":"YulIf","src":"2739:46:54"},{"nodeType":"YulAssignment","src":"2794:15:54","value":{"name":"offset","nodeType":"YulIdentifier","src":"2803:6:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2794:5:54"}]}]},"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2703:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"2711:3:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2719:5:54","type":""}],"src":"2651:164:54"},{"body":{"nodeType":"YulBlock","src":"2925:150:54","statements":[{"body":{"nodeType":"YulBlock","src":"2972:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2981:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2984:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2974:6:54"},"nodeType":"YulFunctionCall","src":"2974:12:54"},"nodeType":"YulExpressionStatement","src":"2974:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2946:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2942:3:54"},"nodeType":"YulFunctionCall","src":"2942:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2967:3:54","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2938:3:54"},"nodeType":"YulFunctionCall","src":"2938:33:54"},"nodeType":"YulIf","src":"2935:53:54"},{"nodeType":"YulAssignment","src":"2997:72:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3050:9:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3061:7:54"}],"functionName":{"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulIdentifier","src":"3007:42:54"},"nodeType":"YulFunctionCall","src":"3007:62:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2997:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2891:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2902:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2914:6:54","type":""}],"src":"2820:255:54"},{"body":{"nodeType":"YulBlock","src":"3158:86:54","statements":[{"body":{"nodeType":"YulBlock","src":"3198:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3207:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3210:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3200:6:54"},"nodeType":"YulFunctionCall","src":"3200:12:54"},"nodeType":"YulExpressionStatement","src":"3200:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"3179:3:54"},{"name":"offset","nodeType":"YulIdentifier","src":"3184:6:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3175:3:54"},"nodeType":"YulFunctionCall","src":"3175:16:54"},{"kind":"number","nodeType":"YulLiteral","src":"3193:3:54","type":"","value":"576"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3171:3:54"},"nodeType":"YulFunctionCall","src":"3171:26:54"},"nodeType":"YulIf","src":"3168:46:54"},{"nodeType":"YulAssignment","src":"3223:15:54","value":{"name":"offset","nodeType":"YulIdentifier","src":"3232:6:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3223:5:54"}]}]},"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3132:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"3140:3:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3148:5:54","type":""}],"src":"3080:164:54"},{"body":{"nodeType":"YulBlock","src":"3354:150:54","statements":[{"body":{"nodeType":"YulBlock","src":"3401:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3410:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3413:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3403:6:54"},"nodeType":"YulFunctionCall","src":"3403:12:54"},"nodeType":"YulExpressionStatement","src":"3403:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3375:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3384:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3371:3:54"},"nodeType":"YulFunctionCall","src":"3371:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3396:3:54","type":"","value":"576"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3367:3:54"},"nodeType":"YulFunctionCall","src":"3367:33:54"},"nodeType":"YulIf","src":"3364:53:54"},{"nodeType":"YulAssignment","src":"3426:72:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3479:9:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3490:7:54"}],"functionName":{"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulIdentifier","src":"3436:42:54"},"nodeType":"YulFunctionCall","src":"3436:62:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3426:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_OrderComponents_$5331_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3320:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3331:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3343:6:54","type":""}],"src":"3249:255:54"},{"body":{"nodeType":"YulBlock","src":"3610:76:54","statements":[{"nodeType":"YulAssignment","src":"3620:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3632:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3643:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3628:3:54"},"nodeType":"YulFunctionCall","src":"3628:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3620:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3662:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"3673:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3655:6:54"},"nodeType":"YulFunctionCall","src":"3655:25:54"},"nodeType":"YulExpressionStatement","src":"3655:25:54"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3579:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3590:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3601:4:54","type":""}],"src":"3509:177:54"},{"body":{"nodeType":"YulBlock","src":"3803:318:54","statements":[{"body":{"nodeType":"YulBlock","src":"3849:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3858:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3861:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3851:6:54"},"nodeType":"YulFunctionCall","src":"3851:12:54"},"nodeType":"YulExpressionStatement","src":"3851:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3824:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3833:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3820:3:54"},"nodeType":"YulFunctionCall","src":"3820:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3845:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3816:3:54"},"nodeType":"YulFunctionCall","src":"3816:32:54"},"nodeType":"YulIf","src":"3813:52:54"},{"nodeType":"YulVariableDeclaration","src":"3874:37:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3901:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3888:12:54"},"nodeType":"YulFunctionCall","src":"3888:23:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3878:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3954:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3963:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3966:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3956:6:54"},"nodeType":"YulFunctionCall","src":"3956:12:54"},"nodeType":"YulExpressionStatement","src":"3956:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3926:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"3934:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3923:2:54"},"nodeType":"YulFunctionCall","src":"3923:30:54"},"nodeType":"YulIf","src":"3920:50:54"},{"nodeType":"YulAssignment","src":"3979:85:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4036:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"4047:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4032:3:54"},"nodeType":"YulFunctionCall","src":"4032:22:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4056:7:54"}],"functionName":{"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulIdentifier","src":"3989:42:54"},"nodeType":"YulFunctionCall","src":"3989:75:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3979:6:54"}]},{"nodeType":"YulAssignment","src":"4073:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4100:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4111:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4096:3:54"},"nodeType":"YulFunctionCall","src":"4096:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4083:12:54"},"nodeType":"YulFunctionCall","src":"4083:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4073:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_Order_$5372_calldata_ptrt_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3761:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3772:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3784:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3792:6:54","type":""}],"src":"3691:430:54"},{"body":{"nodeType":"YulBlock","src":"4265:254:54","statements":[{"body":{"nodeType":"YulBlock","src":"4312:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4321:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4324:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4314:6:54"},"nodeType":"YulFunctionCall","src":"4314:12:54"},"nodeType":"YulExpressionStatement","src":"4314:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4286:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4295:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4282:3:54"},"nodeType":"YulFunctionCall","src":"4282:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4307:3:54","type":"","value":"608"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4278:3:54"},"nodeType":"YulFunctionCall","src":"4278:33:54"},"nodeType":"YulIf","src":"4275:53:54"},{"nodeType":"YulAssignment","src":"4337:72:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4390:9:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4401:7:54"}],"functionName":{"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulIdentifier","src":"4347:42:54"},"nodeType":"YulFunctionCall","src":"4347:62:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4337:6:54"}]},{"nodeType":"YulAssignment","src":"4418:43:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4445:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4456:3:54","type":"","value":"544"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4441:3:54"},"nodeType":"YulFunctionCall","src":"4441:19:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4428:12:54"},"nodeType":"YulFunctionCall","src":"4428:33:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4418:6:54"}]},{"nodeType":"YulAssignment","src":"4470:43:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4497:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4508:3:54","type":"","value":"576"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:54"},"nodeType":"YulFunctionCall","src":"4493:19:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4480:12:54"},"nodeType":"YulFunctionCall","src":"4480:33:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4470:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptrt_bytes32t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4215:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4226:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4238:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4246:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4254:6:54","type":""}],"src":"4126:393:54"},{"body":{"nodeType":"YulBlock","src":"4573:147:54","statements":[{"nodeType":"YulAssignment","src":"4583:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4605:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4592:12:54"},"nodeType":"YulFunctionCall","src":"4592:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4583:5:54"}]},{"body":{"nodeType":"YulBlock","src":"4698:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4707:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4710:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4700:6:54"},"nodeType":"YulFunctionCall","src":"4700:12:54"},"nodeType":"YulExpressionStatement","src":"4700:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4634:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4645:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"4652:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4641:3:54"},"nodeType":"YulFunctionCall","src":"4641:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4631:2:54"},"nodeType":"YulFunctionCall","src":"4631:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4624:6:54"},"nodeType":"YulFunctionCall","src":"4624:73:54"},"nodeType":"YulIf","src":"4621:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4552:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4563:5:54","type":""}],"src":"4524:196:54"},{"body":{"nodeType":"YulBlock","src":"4795:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"4841:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4850:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4853:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4843:6:54"},"nodeType":"YulFunctionCall","src":"4843:12:54"},"nodeType":"YulExpressionStatement","src":"4843:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4816:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4825:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4812:3:54"},"nodeType":"YulFunctionCall","src":"4812:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4837:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4808:3:54"},"nodeType":"YulFunctionCall","src":"4808:32:54"},"nodeType":"YulIf","src":"4805:52:54"},{"nodeType":"YulAssignment","src":"4866:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4895:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4876:18:54"},"nodeType":"YulFunctionCall","src":"4876:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4866:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4761:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4772:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4784:6:54","type":""}],"src":"4725:186:54"},{"body":{"nodeType":"YulBlock","src":"5093:658:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5110:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5121:2:54","type":"","value":"96"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:54"},"nodeType":"YulFunctionCall","src":"5103:21:54"},"nodeType":"YulExpressionStatement","src":"5103:21:54"},{"nodeType":"YulVariableDeclaration","src":"5133:27:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5153:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5147:5:54"},"nodeType":"YulFunctionCall","src":"5147:13:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5137:6:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5180:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5191:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5176:3:54"},"nodeType":"YulFunctionCall","src":"5176:18:54"},{"name":"length","nodeType":"YulIdentifier","src":"5196:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5169:6:54"},"nodeType":"YulFunctionCall","src":"5169:34:54"},"nodeType":"YulExpressionStatement","src":"5169:34:54"},{"nodeType":"YulVariableDeclaration","src":"5212:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"5221:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5216:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"5283:93:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5312:9:54"},{"name":"i","nodeType":"YulIdentifier","src":"5323:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5308:3:54"},"nodeType":"YulFunctionCall","src":"5308:17:54"},{"kind":"number","nodeType":"YulLiteral","src":"5327:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5304:3:54"},"nodeType":"YulFunctionCall","src":"5304:27:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5347:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"5355:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5343:3:54"},"nodeType":"YulFunctionCall","src":"5343:14:54"},{"kind":"number","nodeType":"YulLiteral","src":"5359:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5339:3:54"},"nodeType":"YulFunctionCall","src":"5339:25:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5333:5:54"},"nodeType":"YulFunctionCall","src":"5333:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5297:6:54"},"nodeType":"YulFunctionCall","src":"5297:69:54"},"nodeType":"YulExpressionStatement","src":"5297:69:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5242:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"5245:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5239:2:54"},"nodeType":"YulFunctionCall","src":"5239:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5253:21:54","statements":[{"nodeType":"YulAssignment","src":"5255:17:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5264:1:54"},{"kind":"number","nodeType":"YulLiteral","src":"5267:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5260:3:54"},"nodeType":"YulFunctionCall","src":"5260:12:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5255:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"5235:3:54","statements":[]},"src":"5231:145:54"},{"body":{"nodeType":"YulBlock","src":"5410:67:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5439:9:54"},{"name":"length","nodeType":"YulIdentifier","src":"5450:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5435:3:54"},"nodeType":"YulFunctionCall","src":"5435:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"5459:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5431:3:54"},"nodeType":"YulFunctionCall","src":"5431:32:54"},{"kind":"number","nodeType":"YulLiteral","src":"5465:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5424:6:54"},"nodeType":"YulFunctionCall","src":"5424:43:54"},"nodeType":"YulExpressionStatement","src":"5424:43:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5391:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"5394:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5388:2:54"},"nodeType":"YulFunctionCall","src":"5388:13:54"},"nodeType":"YulIf","src":"5385:92:54"},{"nodeType":"YulAssignment","src":"5486:122:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5502:9:54"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5521:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5529:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5517:3:54"},"nodeType":"YulFunctionCall","src":"5517:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"5534:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5513:3:54"},"nodeType":"YulFunctionCall","src":"5513:88:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5498:3:54"},"nodeType":"YulFunctionCall","src":"5498:104:54"},{"kind":"number","nodeType":"YulLiteral","src":"5604:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5494:3:54"},"nodeType":"YulFunctionCall","src":"5494:114:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5486:4:54"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5628:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5639:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5624:3:54"},"nodeType":"YulFunctionCall","src":"5624:20:54"},{"name":"value1","nodeType":"YulIdentifier","src":"5646:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5617:6:54"},"nodeType":"YulFunctionCall","src":"5617:36:54"},"nodeType":"YulExpressionStatement","src":"5617:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5673:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5684:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5669:3:54"},"nodeType":"YulFunctionCall","src":"5669:18:54"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5693:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5701:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5689:3:54"},"nodeType":"YulFunctionCall","src":"5689:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5662:6:54"},"nodeType":"YulFunctionCall","src":"5662:83:54"},"nodeType":"YulExpressionStatement","src":"5662:83:54"}]},"name":"abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5046:9:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5057:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5065:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5073:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5084:4:54","type":""}],"src":"4916:835:54"},{"body":{"nodeType":"YulBlock","src":"5857:125:54","statements":[{"nodeType":"YulAssignment","src":"5867:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5879:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5890:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5875:3:54"},"nodeType":"YulFunctionCall","src":"5875:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5867:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5909:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5924:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5932:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5920:3:54"},"nodeType":"YulFunctionCall","src":"5920:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5902:6:54"},"nodeType":"YulFunctionCall","src":"5902:74:54"},"nodeType":"YulExpressionStatement","src":"5902:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5826:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5837:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5848:4:54","type":""}],"src":"5756:226:54"},{"body":{"nodeType":"YulBlock","src":"6019:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6036:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6039:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6029:6:54"},"nodeType":"YulFunctionCall","src":"6029:88:54"},"nodeType":"YulExpressionStatement","src":"6029:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6133:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6136:4:54","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6126:6:54"},"nodeType":"YulFunctionCall","src":"6126:15:54"},"nodeType":"YulExpressionStatement","src":"6126:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6157:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6160:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6150:6:54"},"nodeType":"YulFunctionCall","src":"6150:15:54"},"nodeType":"YulExpressionStatement","src":"6150:15:54"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"5987:184:54"},{"body":{"nodeType":"YulBlock","src":"6276:281:54","statements":[{"nodeType":"YulVariableDeclaration","src":"6286:51:54","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"6325:11:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6312:12:54"},"nodeType":"YulFunctionCall","src":"6312:25:54"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"6290:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"6485:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6494:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6497:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6487:6:54"},"nodeType":"YulFunctionCall","src":"6487:12:54"},"nodeType":"YulExpressionStatement","src":"6487:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6360:18:54"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"6388:12:54"},"nodeType":"YulFunctionCall","src":"6388:14:54"},{"name":"base_ref","nodeType":"YulIdentifier","src":"6404:8:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6384:3:54"},"nodeType":"YulFunctionCall","src":"6384:29:54"},{"kind":"number","nodeType":"YulLiteral","src":"6415:66:54","type":"","value":"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:54"},"nodeType":"YulFunctionCall","src":"6380:102:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6356:3:54"},"nodeType":"YulFunctionCall","src":"6356:127:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6349:6:54"},"nodeType":"YulFunctionCall","src":"6349:135:54"},"nodeType":"YulIf","src":"6346:155:54"},{"nodeType":"YulAssignment","src":"6510:41:54","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"6522:8:54"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6532:18:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6518:3:54"},"nodeType":"YulFunctionCall","src":"6518:33:54"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"6510:4:54"}]}]},"name":"access_calldata_tail_t_struct$_Order_$5372_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"6241:8:54","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"6251:11:54","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"6267:4:54","type":""}],"src":"6176:381:54"},{"body":{"nodeType":"YulBlock","src":"6656:486:54","statements":[{"nodeType":"YulVariableDeclaration","src":"6666:51:54","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"6705:11:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6692:12:54"},"nodeType":"YulFunctionCall","src":"6692:25:54"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"6670:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"6865:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6874:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6877:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6867:6:54"},"nodeType":"YulFunctionCall","src":"6867:12:54"},"nodeType":"YulExpressionStatement","src":"6867:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6740:18:54"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"6768:12:54"},"nodeType":"YulFunctionCall","src":"6768:14:54"},{"name":"base_ref","nodeType":"YulIdentifier","src":"6784:8:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6764:3:54"},"nodeType":"YulFunctionCall","src":"6764:29:54"},{"kind":"number","nodeType":"YulLiteral","src":"6795:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6760:3:54"},"nodeType":"YulFunctionCall","src":"6760:102:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6736:3:54"},"nodeType":"YulFunctionCall","src":"6736:127:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6729:6:54"},"nodeType":"YulFunctionCall","src":"6729:135:54"},"nodeType":"YulIf","src":"6726:155:54"},{"nodeType":"YulVariableDeclaration","src":"6890:47:54","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"6908:8:54"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6918:18:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6904:3:54"},"nodeType":"YulFunctionCall","src":"6904:33:54"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"6894:6:54","type":""}]},{"nodeType":"YulAssignment","src":"6946:30:54","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"6969:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6956:12:54"},"nodeType":"YulFunctionCall","src":"6956:20:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6946:6:54"}]},{"body":{"nodeType":"YulBlock","src":"7019:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7028:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7031:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7021:6:54"},"nodeType":"YulFunctionCall","src":"7021:12:54"},"nodeType":"YulExpressionStatement","src":"7021:12:54"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6991:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"6999:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6988:2:54"},"nodeType":"YulFunctionCall","src":"6988:30:54"},"nodeType":"YulIf","src":"6985:50:54"},{"nodeType":"YulAssignment","src":"7044:25:54","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"7056:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"7064:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7052:3:54"},"nodeType":"YulFunctionCall","src":"7052:17:54"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"7044:4:54"}]},{"body":{"nodeType":"YulBlock","src":"7120:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7129:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7132:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7122:6:54"},"nodeType":"YulFunctionCall","src":"7122:12:54"},"nodeType":"YulExpressionStatement","src":"7122:12:54"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"7085:4:54"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"7095:12:54"},"nodeType":"YulFunctionCall","src":"7095:14:54"},{"name":"length","nodeType":"YulIdentifier","src":"7111:6:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7091:3:54"},"nodeType":"YulFunctionCall","src":"7091:27:54"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"7081:3:54"},"nodeType":"YulFunctionCall","src":"7081:38:54"},"nodeType":"YulIf","src":"7078:58:54"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"6613:8:54","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"6623:11:54","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"6639:4:54","type":""},{"name":"length","nodeType":"YulTypedName","src":"6645:6:54","type":""}],"src":"6562:580:54"},{"body":{"nodeType":"YulBlock","src":"7179:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7196:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7199:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7189:6:54"},"nodeType":"YulFunctionCall","src":"7189:88:54"},"nodeType":"YulExpressionStatement","src":"7189:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7293:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7296:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7286:6:54"},"nodeType":"YulFunctionCall","src":"7286:15:54"},"nodeType":"YulExpressionStatement","src":"7286:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7317:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7320:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7310:6:54"},"nodeType":"YulFunctionCall","src":"7310:15:54"},"nodeType":"YulExpressionStatement","src":"7310:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7147:184:54"},{"body":{"nodeType":"YulBlock","src":"7465:119:54","statements":[{"nodeType":"YulAssignment","src":"7475:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7487:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7498:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7483:3:54"},"nodeType":"YulFunctionCall","src":"7483:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7475:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7517:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"7528:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7510:6:54"},"nodeType":"YulFunctionCall","src":"7510:25:54"},"nodeType":"YulExpressionStatement","src":"7510:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7555:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7566:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7551:3:54"},"nodeType":"YulFunctionCall","src":"7551:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"7571:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7544:6:54"},"nodeType":"YulFunctionCall","src":"7544:34:54"},"nodeType":"YulExpressionStatement","src":"7544:34:54"}]},"name":"abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7426:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7437:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7445:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7456:4:54","type":""}],"src":"7336:248:54"},{"body":{"nodeType":"YulBlock","src":"7740:178:54","statements":[{"nodeType":"YulAssignment","src":"7750:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7762:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7773:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7758:3:54"},"nodeType":"YulFunctionCall","src":"7758:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7750:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7792:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"7803:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7785:6:54"},"nodeType":"YulFunctionCall","src":"7785:25:54"},"nodeType":"YulExpressionStatement","src":"7785:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7830:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7841:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7826:3:54"},"nodeType":"YulFunctionCall","src":"7826:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"7846:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7819:6:54"},"nodeType":"YulFunctionCall","src":"7819:34:54"},"nodeType":"YulExpressionStatement","src":"7819:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7873:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7884:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7869:3:54"},"nodeType":"YulFunctionCall","src":"7869:18:54"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7903:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7896:6:54"},"nodeType":"YulFunctionCall","src":"7896:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7889:6:54"},"nodeType":"YulFunctionCall","src":"7889:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7862:6:54"},"nodeType":"YulFunctionCall","src":"7862:50:54"},"nodeType":"YulExpressionStatement","src":"7862:50:54"}]},"name":"abi_encode_tuple_t_bytes32_t_uint256_t_bool__to_t_bytes32_t_uint256_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7693:9:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7704:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7712:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7720:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7731:4:54","type":""}],"src":"7589:329:54"},{"body":{"nodeType":"YulBlock","src":"7964:360:54","statements":[{"nodeType":"YulAssignment","src":"7974:19:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7990:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7984:5:54"},"nodeType":"YulFunctionCall","src":"7984:9:54"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7974:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"8002:34:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8024:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"8032:3:54","type":"","value":"544"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8020:3:54"},"nodeType":"YulFunctionCall","src":"8020:16:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"8006:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"8119:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8140:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8143:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8133:6:54"},"nodeType":"YulFunctionCall","src":"8133:88:54"},"nodeType":"YulExpressionStatement","src":"8133:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8241:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8244:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8234:6:54"},"nodeType":"YulFunctionCall","src":"8234:15:54"},"nodeType":"YulExpressionStatement","src":"8234:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8269:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8272:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8262:6:54"},"nodeType":"YulFunctionCall","src":"8262:15:54"},"nodeType":"YulExpressionStatement","src":"8262:15:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8054:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"8066:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8051:2:54"},"nodeType":"YulFunctionCall","src":"8051:34:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8090:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"8102:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8087:2:54"},"nodeType":"YulFunctionCall","src":"8087:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8048:2:54"},"nodeType":"YulFunctionCall","src":"8048:62:54"},"nodeType":"YulIf","src":"8045:242:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8303:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8307:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8296:6:54"},"nodeType":"YulFunctionCall","src":"8296:22:54"},"nodeType":"YulExpressionStatement","src":"8296:22:54"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7953:6:54","type":""}],"src":"7923:401:54"},{"body":{"nodeType":"YulBlock","src":"8432:1455:54","statements":[{"body":{"nodeType":"YulBlock","src":"8479:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8488:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8491:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8481:6:54"},"nodeType":"YulFunctionCall","src":"8481:12:54"},"nodeType":"YulExpressionStatement","src":"8481:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8453:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"8462:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8449:3:54"},"nodeType":"YulFunctionCall","src":"8449:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"8474:3:54","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8445:3:54"},"nodeType":"YulFunctionCall","src":"8445:33:54"},"nodeType":"YulIf","src":"8442:53:54"},{"nodeType":"YulVariableDeclaration","src":"8504:30:54","value":{"arguments":[],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8517:15:54"},"nodeType":"YulFunctionCall","src":"8517:17:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8508:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8550:5:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8576:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8557:18:54"},"nodeType":"YulFunctionCall","src":"8557:29:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8543:6:54"},"nodeType":"YulFunctionCall","src":"8543:44:54"},"nodeType":"YulExpressionStatement","src":"8543:44:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8607:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8614:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8603:3:54"},"nodeType":"YulFunctionCall","src":"8603:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8642:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8653:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8638:3:54"},"nodeType":"YulFunctionCall","src":"8638:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8619:18:54"},"nodeType":"YulFunctionCall","src":"8619:38:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8596:6:54"},"nodeType":"YulFunctionCall","src":"8596:62:54"},"nodeType":"YulExpressionStatement","src":"8596:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8678:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8685:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8674:3:54"},"nodeType":"YulFunctionCall","src":"8674:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8707:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8718:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8703:3:54"},"nodeType":"YulFunctionCall","src":"8703:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8690:12:54"},"nodeType":"YulFunctionCall","src":"8690:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8667:6:54"},"nodeType":"YulFunctionCall","src":"8667:56:54"},"nodeType":"YulExpressionStatement","src":"8667:56:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8743:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8750:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8739:3:54"},"nodeType":"YulFunctionCall","src":"8739:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8778:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8789:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8774:3:54"},"nodeType":"YulFunctionCall","src":"8774:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8755:18:54"},"nodeType":"YulFunctionCall","src":"8755:38:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8732:6:54"},"nodeType":"YulFunctionCall","src":"8732:62:54"},"nodeType":"YulExpressionStatement","src":"8732:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8814:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8821:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8810:3:54"},"nodeType":"YulFunctionCall","src":"8810:15:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8850:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8861:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8846:3:54"},"nodeType":"YulFunctionCall","src":"8846:19:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8827:18:54"},"nodeType":"YulFunctionCall","src":"8827:39:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8803:6:54"},"nodeType":"YulFunctionCall","src":"8803:64:54"},"nodeType":"YulExpressionStatement","src":"8803:64:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8887:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8894:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8883:3:54"},"nodeType":"YulFunctionCall","src":"8883:15:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8923:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8934:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8919:3:54"},"nodeType":"YulFunctionCall","src":"8919:19:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8900:18:54"},"nodeType":"YulFunctionCall","src":"8900:39:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8876:6:54"},"nodeType":"YulFunctionCall","src":"8876:64:54"},"nodeType":"YulExpressionStatement","src":"8876:64:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8960:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8967:3:54","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8956:3:54"},"nodeType":"YulFunctionCall","src":"8956:15:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8990:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9001:3:54","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8986:3:54"},"nodeType":"YulFunctionCall","src":"8986:19:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8973:12:54"},"nodeType":"YulFunctionCall","src":"8973:33:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8949:6:54"},"nodeType":"YulFunctionCall","src":"8949:58:54"},"nodeType":"YulExpressionStatement","src":"8949:58:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9027:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"9034:3:54","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9023:3:54"},"nodeType":"YulFunctionCall","src":"9023:15:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9057:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9068:3:54","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9053:3:54"},"nodeType":"YulFunctionCall","src":"9053:19:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9040:12:54"},"nodeType":"YulFunctionCall","src":"9040:33:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9016:6:54"},"nodeType":"YulFunctionCall","src":"9016:58:54"},"nodeType":"YulExpressionStatement","src":"9016:58:54"},{"nodeType":"YulVariableDeclaration","src":"9083:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9093:3:54","type":"","value":"256"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9087:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9116:5:54"},{"name":"_1","nodeType":"YulIdentifier","src":"9123:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9112:3:54"},"nodeType":"YulFunctionCall","src":"9112:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9145:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"9156:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9141:3:54"},"nodeType":"YulFunctionCall","src":"9141:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9128:12:54"},"nodeType":"YulFunctionCall","src":"9128:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9105:6:54"},"nodeType":"YulFunctionCall","src":"9105:56:54"},"nodeType":"YulExpressionStatement","src":"9105:56:54"},{"nodeType":"YulVariableDeclaration","src":"9170:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9180:3:54","type":"","value":"288"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9174:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9203:5:54"},{"name":"_2","nodeType":"YulIdentifier","src":"9210:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9199:3:54"},"nodeType":"YulFunctionCall","src":"9199:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9232:9:54"},{"name":"_2","nodeType":"YulIdentifier","src":"9243:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9228:3:54"},"nodeType":"YulFunctionCall","src":"9228:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9215:12:54"},"nodeType":"YulFunctionCall","src":"9215:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9192:6:54"},"nodeType":"YulFunctionCall","src":"9192:56:54"},"nodeType":"YulExpressionStatement","src":"9192:56:54"},{"nodeType":"YulVariableDeclaration","src":"9257:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9267:3:54","type":"","value":"320"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9261:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9290:5:54"},{"name":"_3","nodeType":"YulIdentifier","src":"9297:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9286:3:54"},"nodeType":"YulFunctionCall","src":"9286:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9319:9:54"},{"name":"_3","nodeType":"YulIdentifier","src":"9330:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9315:3:54"},"nodeType":"YulFunctionCall","src":"9315:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9302:12:54"},"nodeType":"YulFunctionCall","src":"9302:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9279:6:54"},"nodeType":"YulFunctionCall","src":"9279:56:54"},"nodeType":"YulExpressionStatement","src":"9279:56:54"},{"nodeType":"YulVariableDeclaration","src":"9344:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9354:3:54","type":"","value":"352"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9348:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9377:5:54"},{"name":"_4","nodeType":"YulIdentifier","src":"9384:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9373:3:54"},"nodeType":"YulFunctionCall","src":"9373:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9406:9:54"},{"name":"_4","nodeType":"YulIdentifier","src":"9417:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9402:3:54"},"nodeType":"YulFunctionCall","src":"9402:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9389:12:54"},"nodeType":"YulFunctionCall","src":"9389:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9366:6:54"},"nodeType":"YulFunctionCall","src":"9366:56:54"},"nodeType":"YulExpressionStatement","src":"9366:56:54"},{"nodeType":"YulVariableDeclaration","src":"9431:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9441:3:54","type":"","value":"384"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"9435:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9464:5:54"},{"name":"_5","nodeType":"YulIdentifier","src":"9471:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9460:3:54"},"nodeType":"YulFunctionCall","src":"9460:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9493:9:54"},{"name":"_5","nodeType":"YulIdentifier","src":"9504:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9489:3:54"},"nodeType":"YulFunctionCall","src":"9489:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9476:12:54"},"nodeType":"YulFunctionCall","src":"9476:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9453:6:54"},"nodeType":"YulFunctionCall","src":"9453:56:54"},"nodeType":"YulExpressionStatement","src":"9453:56:54"},{"nodeType":"YulVariableDeclaration","src":"9518:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9528:3:54","type":"","value":"416"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"9522:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9551:5:54"},{"name":"_6","nodeType":"YulIdentifier","src":"9558:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9547:3:54"},"nodeType":"YulFunctionCall","src":"9547:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9580:9:54"},{"name":"_6","nodeType":"YulIdentifier","src":"9591:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9576:3:54"},"nodeType":"YulFunctionCall","src":"9576:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9563:12:54"},"nodeType":"YulFunctionCall","src":"9563:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9540:6:54"},"nodeType":"YulFunctionCall","src":"9540:56:54"},"nodeType":"YulExpressionStatement","src":"9540:56:54"},{"nodeType":"YulVariableDeclaration","src":"9605:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9615:3:54","type":"","value":"448"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"9609:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9638:5:54"},{"name":"_7","nodeType":"YulIdentifier","src":"9645:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9634:3:54"},"nodeType":"YulFunctionCall","src":"9634:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9667:9:54"},{"name":"_7","nodeType":"YulIdentifier","src":"9678:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9663:3:54"},"nodeType":"YulFunctionCall","src":"9663:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9650:12:54"},"nodeType":"YulFunctionCall","src":"9650:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9627:6:54"},"nodeType":"YulFunctionCall","src":"9627:56:54"},"nodeType":"YulExpressionStatement","src":"9627:56:54"},{"nodeType":"YulVariableDeclaration","src":"9692:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9702:3:54","type":"","value":"480"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"9696:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9725:5:54"},{"name":"_8","nodeType":"YulIdentifier","src":"9732:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9721:3:54"},"nodeType":"YulFunctionCall","src":"9721:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9754:9:54"},{"name":"_8","nodeType":"YulIdentifier","src":"9765:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9750:3:54"},"nodeType":"YulFunctionCall","src":"9750:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9737:12:54"},"nodeType":"YulFunctionCall","src":"9737:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9714:6:54"},"nodeType":"YulFunctionCall","src":"9714:56:54"},"nodeType":"YulExpressionStatement","src":"9714:56:54"},{"nodeType":"YulVariableDeclaration","src":"9779:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9789:3:54","type":"","value":"512"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"9783:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9812:5:54"},{"name":"_9","nodeType":"YulIdentifier","src":"9819:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9808:3:54"},"nodeType":"YulFunctionCall","src":"9808:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9841:9:54"},{"name":"_9","nodeType":"YulIdentifier","src":"9852:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9837:3:54"},"nodeType":"YulFunctionCall","src":"9837:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9824:12:54"},"nodeType":"YulFunctionCall","src":"9824:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9801:6:54"},"nodeType":"YulFunctionCall","src":"9801:56:54"},"nodeType":"YulExpressionStatement","src":"9801:56:54"},{"nodeType":"YulAssignment","src":"9866:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"9876:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9866:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$5366_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8398:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8409:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8421:6:54","type":""}],"src":"8329:1558:54"},{"body":{"nodeType":"YulBlock","src":"9924:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9941:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9944:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9934:6:54"},"nodeType":"YulFunctionCall","src":"9934:88:54"},"nodeType":"YulExpressionStatement","src":"9934:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10038:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10041:4:54","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10031:6:54"},"nodeType":"YulFunctionCall","src":"10031:15:54"},"nodeType":"YulExpressionStatement","src":"10031:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10062:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10065:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10055:6:54"},"nodeType":"YulFunctionCall","src":"10055:15:54"},"nodeType":"YulExpressionStatement","src":"10055:15:54"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"9892:184:54"},{"body":{"nodeType":"YulBlock","src":"10133:176:54","statements":[{"body":{"nodeType":"YulBlock","src":"10252:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10254:16:54"},"nodeType":"YulFunctionCall","src":"10254:18:54"},"nodeType":"YulExpressionStatement","src":"10254:18:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10164:1:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10157:6:54"},"nodeType":"YulFunctionCall","src":"10157:9:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10150:6:54"},"nodeType":"YulFunctionCall","src":"10150:17:54"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10172:1:54"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10179:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"x","nodeType":"YulIdentifier","src":"10247:1:54"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10175:3:54"},"nodeType":"YulFunctionCall","src":"10175:74:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10169:2:54"},"nodeType":"YulFunctionCall","src":"10169:81:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10146:3:54"},"nodeType":"YulFunctionCall","src":"10146:105:54"},"nodeType":"YulIf","src":"10143:131:54"},{"nodeType":"YulAssignment","src":"10283:20:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10298:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10301:1:54"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10294:3:54"},"nodeType":"YulFunctionCall","src":"10294:9:54"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"10283:7:54"}]}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10112:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10115:1:54","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"10121:7:54","type":""}],"src":"10081:228:54"},{"body":{"nodeType":"YulBlock","src":"10362:80:54","statements":[{"body":{"nodeType":"YulBlock","src":"10389:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10391:16:54"},"nodeType":"YulFunctionCall","src":"10391:18:54"},"nodeType":"YulExpressionStatement","src":"10391:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10378:1:54"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10385:1:54"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10381:3:54"},"nodeType":"YulFunctionCall","src":"10381:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10375:2:54"},"nodeType":"YulFunctionCall","src":"10375:13:54"},"nodeType":"YulIf","src":"10372:39:54"},{"nodeType":"YulAssignment","src":"10420:16:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10431:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10434:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10427:3:54"},"nodeType":"YulFunctionCall","src":"10427:9:54"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"10420:3:54"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10345:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10348:1:54","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"10354:3:54","type":""}],"src":"10314:128:54"},{"body":{"nodeType":"YulBlock","src":"10479:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10496:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10499:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10489:6:54"},"nodeType":"YulFunctionCall","src":"10489:88:54"},"nodeType":"YulExpressionStatement","src":"10489:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10593:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10596:4:54","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10586:6:54"},"nodeType":"YulFunctionCall","src":"10586:15:54"},"nodeType":"YulExpressionStatement","src":"10586:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10617:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10620:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10610:6:54"},"nodeType":"YulFunctionCall","src":"10610:15:54"},"nodeType":"YulExpressionStatement","src":"10610:15:54"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"10447:184:54"},{"body":{"nodeType":"YulBlock","src":"10682:228:54","statements":[{"body":{"nodeType":"YulBlock","src":"10713:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10734:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10737:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10727:6:54"},"nodeType":"YulFunctionCall","src":"10727:88:54"},"nodeType":"YulExpressionStatement","src":"10727:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10835:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10838:4:54","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10828:6:54"},"nodeType":"YulFunctionCall","src":"10828:15:54"},"nodeType":"YulExpressionStatement","src":"10828:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10863:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10866:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10856:6:54"},"nodeType":"YulFunctionCall","src":"10856:15:54"},"nodeType":"YulExpressionStatement","src":"10856:15:54"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10702:1:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10695:6:54"},"nodeType":"YulFunctionCall","src":"10695:9:54"},"nodeType":"YulIf","src":"10692:189:54"},{"nodeType":"YulAssignment","src":"10890:14:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10899:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10902:1:54"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10895:3:54"},"nodeType":"YulFunctionCall","src":"10895:9:54"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"10890:1:54"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10667:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10670:1:54","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"10676:1:54","type":""}],"src":"10636:274:54"},{"body":{"nodeType":"YulBlock","src":"10964:76:54","statements":[{"body":{"nodeType":"YulBlock","src":"10986:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10988:16:54"},"nodeType":"YulFunctionCall","src":"10988:18:54"},"nodeType":"YulExpressionStatement","src":"10988:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10980:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10983:1:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10977:2:54"},"nodeType":"YulFunctionCall","src":"10977:8:54"},"nodeType":"YulIf","src":"10974:34:54"},{"nodeType":"YulAssignment","src":"11017:17:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11029:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"11032:1:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11025:3:54"},"nodeType":"YulFunctionCall","src":"11025:9:54"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"11017:4:54"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10946:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10949:1:54","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"10955:4:54","type":""}],"src":"10915:125:54"},{"body":{"nodeType":"YulBlock","src":"11174:168:54","statements":[{"nodeType":"YulAssignment","src":"11184:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11196:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11207:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11192:3:54"},"nodeType":"YulFunctionCall","src":"11192:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11184:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11226:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"11237:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11219:6:54"},"nodeType":"YulFunctionCall","src":"11219:25:54"},"nodeType":"YulExpressionStatement","src":"11219:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11264:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11275:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11260:3:54"},"nodeType":"YulFunctionCall","src":"11260:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11284:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"11292:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11280:3:54"},"nodeType":"YulFunctionCall","src":"11280:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11253:6:54"},"nodeType":"YulFunctionCall","src":"11253:83:54"},"nodeType":"YulExpressionStatement","src":"11253:83:54"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11135:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11146:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11154:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11165:4:54","type":""}],"src":"11045:297:54"},{"body":{"nodeType":"YulBlock","src":"11484:168:54","statements":[{"nodeType":"YulAssignment","src":"11494:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11506:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11517:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11502:3:54"},"nodeType":"YulFunctionCall","src":"11502:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11494:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11536:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11551:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"11559:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11547:3:54"},"nodeType":"YulFunctionCall","src":"11547:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11529:6:54"},"nodeType":"YulFunctionCall","src":"11529:74:54"},"nodeType":"YulExpressionStatement","src":"11529:74:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11623:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11634:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11619:3:54"},"nodeType":"YulFunctionCall","src":"11619:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"11639:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11612:6:54"},"nodeType":"YulFunctionCall","src":"11612:34:54"},"nodeType":"YulExpressionStatement","src":"11612:34:54"}]},"name":"abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11445:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11456:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11464:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11475:4:54","type":""}],"src":"11347:305:54"},{"body":{"nodeType":"YulBlock","src":"11814:241:54","statements":[{"nodeType":"YulAssignment","src":"11824:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11836:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11847:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11832:3:54"},"nodeType":"YulFunctionCall","src":"11832:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11824:4:54"}]},{"nodeType":"YulVariableDeclaration","src":"11859:52:54","value":{"kind":"number","nodeType":"YulLiteral","src":"11869:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11863:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11927:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11942:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"11950:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11938:3:54"},"nodeType":"YulFunctionCall","src":"11938:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11920:6:54"},"nodeType":"YulFunctionCall","src":"11920:34:54"},"nodeType":"YulExpressionStatement","src":"11920:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11974:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11985:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11970:3:54"},"nodeType":"YulFunctionCall","src":"11970:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11994:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"12002:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11990:3:54"},"nodeType":"YulFunctionCall","src":"11990:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11963:6:54"},"nodeType":"YulFunctionCall","src":"11963:43:54"},"nodeType":"YulExpressionStatement","src":"11963:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12026:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12037:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12022:3:54"},"nodeType":"YulFunctionCall","src":"12022:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"12042:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12015:6:54"},"nodeType":"YulFunctionCall","src":"12015:34:54"},"nodeType":"YulExpressionStatement","src":"12015:34:54"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11767:9:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11778:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11786:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11794:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11805:4:54","type":""}],"src":"11657:398:54"},{"body":{"nodeType":"YulBlock","src":"12141:103:54","statements":[{"body":{"nodeType":"YulBlock","src":"12187:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12196:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12199:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12189:6:54"},"nodeType":"YulFunctionCall","src":"12189:12:54"},"nodeType":"YulExpressionStatement","src":"12189:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12162:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"12171:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12158:3:54"},"nodeType":"YulFunctionCall","src":"12158:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"12183:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12154:3:54"},"nodeType":"YulFunctionCall","src":"12154:32:54"},"nodeType":"YulIf","src":"12151:52:54"},{"nodeType":"YulAssignment","src":"12212:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12228:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12222:5:54"},"nodeType":"YulFunctionCall","src":"12222:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12212:6:54"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12107:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12118:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12130:6:54","type":""}],"src":"12060:184:54"},{"body":{"nodeType":"YulBlock","src":"12404:236:54","statements":[{"nodeType":"YulAssignment","src":"12414:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12426:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12437:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12422:3:54"},"nodeType":"YulFunctionCall","src":"12422:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12414:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12456:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"12467:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12449:6:54"},"nodeType":"YulFunctionCall","src":"12449:25:54"},"nodeType":"YulExpressionStatement","src":"12449:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12494:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12505:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12490:3:54"},"nodeType":"YulFunctionCall","src":"12490:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12514:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"12522:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12510:3:54"},"nodeType":"YulFunctionCall","src":"12510:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12483:6:54"},"nodeType":"YulFunctionCall","src":"12483:83:54"},"nodeType":"YulExpressionStatement","src":"12483:83:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12586:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12597:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12582:3:54"},"nodeType":"YulFunctionCall","src":"12582:18:54"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12606:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"12614:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12602:3:54"},"nodeType":"YulFunctionCall","src":"12602:31:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12575:6:54"},"nodeType":"YulFunctionCall","src":"12575:59:54"},"nodeType":"YulExpressionStatement","src":"12575:59:54"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint64__to_t_uint256_t_address_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12357:9:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12368:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12376:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12384:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12395:4:54","type":""}],"src":"12249:391:54"},{"body":{"nodeType":"YulBlock","src":"12858:299:54","statements":[{"nodeType":"YulAssignment","src":"12868:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12880:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12891:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12876:3:54"},"nodeType":"YulFunctionCall","src":"12876:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12868:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12911:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"12922:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12904:6:54"},"nodeType":"YulFunctionCall","src":"12904:25:54"},"nodeType":"YulExpressionStatement","src":"12904:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12949:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12960:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12945:3:54"},"nodeType":"YulFunctionCall","src":"12945:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"12965:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12938:6:54"},"nodeType":"YulFunctionCall","src":"12938:34:54"},"nodeType":"YulExpressionStatement","src":"12938:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12992:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"13003:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12988:3:54"},"nodeType":"YulFunctionCall","src":"12988:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"13008:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12981:6:54"},"nodeType":"YulFunctionCall","src":"12981:34:54"},"nodeType":"YulExpressionStatement","src":"12981:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13035:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"13046:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13031:3:54"},"nodeType":"YulFunctionCall","src":"13031:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"13051:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13024:6:54"},"nodeType":"YulFunctionCall","src":"13024:34:54"},"nodeType":"YulExpressionStatement","src":"13024:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13078:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"13089:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13074:3:54"},"nodeType":"YulFunctionCall","src":"13074:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"13099:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"13107:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13095:3:54"},"nodeType":"YulFunctionCall","src":"13095:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13067:6:54"},"nodeType":"YulFunctionCall","src":"13067:84:54"},"nodeType":"YulExpressionStatement","src":"13067:84:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12795:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"12806:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12814:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12822:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12830:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12838:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12849:4:54","type":""}],"src":"12645:512:54"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__to_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        mstore(headStart, iszero(iszero(value0)))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), value7)\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_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, mul(length, 0x0240)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_struct_OrderParameters_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 544) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 544) { revert(0, 0) }\n        value0 := abi_decode_struct_OrderParameters_calldata(headStart, dataEnd)\n    }\n    function abi_decode_struct_OrderComponents_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 576) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_OrderComponents_$5331_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 576) { revert(0, 0) }\n        value0 := abi_decode_struct_OrderComponents_calldata(headStart, dataEnd)\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_decode_tuple_t_struct$_Order_$5372_calldata_ptrt_bytes32(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_struct_OrderComponents_calldata(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptrt_bytes32t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 608) { revert(0, 0) }\n        value0 := abi_decode_struct_OrderParameters_calldata(headStart, dataEnd)\n        value1 := calldataload(add(headStart, 544))\n        value2 := calldataload(add(headStart, 576))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let length := mload(value0)\n        mstore(add(headStart, 96), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(headStart, i), 128), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 128), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 128)\n        mstore(add(headStart, 0x20), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_struct$_Order_$5372_calldata_ptr(base_ref, ptr_to_tail) -> addr\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256_t_bool__to_t_bytes32_t_uint256_t_bool__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), iszero(iszero(value2)))\n    }\n    function allocate_memory() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 544)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x41)\n            revert(0, 0x24)\n        }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_tuple_t_struct$_OrderParameters_$5366_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 544) { revert(0, 0) }\n        let value := allocate_memory()\n        mstore(value, abi_decode_address(headStart))\n        mstore(add(value, 32), abi_decode_address(add(headStart, 32)))\n        mstore(add(value, 64), calldataload(add(headStart, 64)))\n        mstore(add(value, 96), abi_decode_address(add(headStart, 96)))\n        mstore(add(value, 128), abi_decode_address(add(headStart, 128)))\n        mstore(add(value, 160), abi_decode_address(add(headStart, 160)))\n        mstore(add(value, 192), calldataload(add(headStart, 192)))\n        mstore(add(value, 224), calldataload(add(headStart, 224)))\n        let _1 := 256\n        mstore(add(value, _1), calldataload(add(headStart, _1)))\n        let _2 := 288\n        mstore(add(value, _2), calldataload(add(headStart, _2)))\n        let _3 := 320\n        mstore(add(value, _3), calldataload(add(headStart, _3)))\n        let _4 := 352\n        mstore(add(value, _4), calldataload(add(headStart, _4)))\n        let _5 := 384\n        mstore(add(value, _5), calldataload(add(headStart, _5)))\n        let _6 := 416\n        mstore(add(value, _6), calldataload(add(headStart, _6)))\n        let _7 := 448\n        mstore(add(value, _7), calldataload(add(headStart, _7)))\n        let _8 := 480\n        mstore(add(value, _8), calldataload(add(headStart, _8)))\n        let _9 := 512\n        mstore(add(value, _9), calldataload(add(headStart, _9)))\n        value0 := value\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\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        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_uint256_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_uint256_t_address_t_uint64__to_t_uint256_t_address_t_uint64__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4600":[{"length":32,"start":7488}],"4602":[{"length":32,"start":7528}],"4604":[{"length":32,"start":7450}],"4606":[{"length":32,"start":1309},{"length":32,"start":1991}],"4608":[{"length":32,"start":7404}],"4610":[{"length":32,"start":7612}],"4613":[{"length":32,"start":3830},{"length":32,"start":8352}],"4615":[{"length":32,"start":8418}],"7790":[{"length":32,"start":622},{"length":32,"start":8230},{"length":32,"start":9994},{"length":32,"start":10128},{"length":32,"start":10712}]},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c8063b86ae9e111610074578063f07ec3731161004e578063f07ec37314610218578063f47b774014610238578063ffc5d97a1461025c57600080fd5b8063b86ae9e1146101d2578063be92d18e146101f2578063d9e534111461020557600080fd5b80635b34b966116100a55780635b34b9661461016f5780639432cc1d14610192578063a3210e7c146101b257600080fd5b806322378003146100c157806346423aa7146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004612c46565b6102b5565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610116610111366004612cbb565b6102c8565b604080519815158952961515602089015294151595870195909552911515606086015273ffffffffffffffffffffffffffffffffffffffff16608085015260a084015260c083019190915260e0820152610100016100ed565b34801561017b57600080fd5b5061018461035b565b6040519081526020016100ed565b34801561019e57600080fd5b506100e16101ad366004612cd4565b61036a565b3480156101be57600080fd5b506100e16101cd366004612d51565b610376565b3480156101de57600080fd5b506101846101ed366004612d81565b610387565b6100e1610200366004612d9e565b610556565b6100e1610213366004612de3565b610562565b34801561022457600080fd5b50610184610233366004612e43565b610577565b34801561024457600080fd5b5061024d6105a2565b6040516100ed93929190612e5e565b34801561026857600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b60006102c183836105ba565b9392505050565b600080600080600080600080610340896000908152600260208190526040909120805460018201549282015460039092015460ff8083169561010084048216956201000085048316956301000000860490931694640100000000900473ffffffffffffffffffffffffffffffffffffffff1693909291565b97509750975097509750975097509750919395975091939597565b600061036561090a565b905090565b60006102c18383610967565b600061038182610b27565b92915050565b60408051610220810190915260009061038190806103a86020860186612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260408086013560208301520161040a6080860160608701612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260200161043560a0860160808701612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260200161046060c0860160a08701612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460c0013581526020018460e00135815260200184610100013581526020018461012001358152602001846101400135815260200184610160013581526020018461018001358152602001846101a001358152602001846101c001358152602001846101e0013581526020018461020001358152508361022001357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60006102c18383610c2c565b600061056f848484610dad565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610381565b60606000806105af610ed5565b925092509250909192565b60006105c4610f50565b6000808084815b818110156108fc57368888838181106105e6576105e6612ef7565b90506020028101906105f89190612f26565b9050806106086020820182612e43565b94506108006040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018360200160208101906106489190612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260408085013560208301520161067c6080850160608601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106a760a0850160808601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106d260c0850160a08601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018360c0013581526020018360e00135815260200183610100013581526020018361012001358152602001836101400135815260200183610160013581526020018361018001358152602001836101a001358152602001836101c001358152602001836101e0013581526020018361020001358152506107a08360000160208101906107789190612e43565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60008181526002602052604090209750955061081f8688600180610f8e565b50865460ff166108f257610876858761083c610220860186612f64565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d092505050565b86547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117875560405173ffffffffffffffffffffffffffffffffffffffff8616907f09e126c208c7c6b8de91fb519ff46ef1f6eb471f6376862ca4de42ea000026d6906108e99089815260200190565b60405180910390a25b50506001016105cb565b506001979650505050505050565b6000610914610f50565b503360008181526001602081815260409283902080549092019182905591518181529092917f721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f910160405180910390a290565b6000610971610f50565b60008083815b81811015610b1a573687878381811061099257610992612ef7565b610240029190910191506109ab90506020820182612e43565b93503373ffffffffffffffffffffffffffffffffffffffff8516146109fc576040517f80ec737400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a3c6040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e43565b6000818152600260205260409020600181015490975090915015610a94576040517f9633f278000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010017865560405173ffffffffffffffffffffffffffffffffffffffff8616907fa6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba5275390610b089084815260200190565b60405180910390a25050600101610977565b5060019695505050505050565b600080600080610b3885600161114d565b92509250925080610b4e57506000949350505050565b610b7f6002610b636040880160208901612e43565b30610b7160208a018a612e43565b60408a013560016000611299565b6000610b916080870160608801612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610bbb57610bb68583611388565b610bc5565b610bc58583611425565b610bd26020860186612e43565b73ffffffffffffffffffffffffffffffffffffffff167fe68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada84604051610c1991815260200190565b60405180910390a2506001949350505050565b600080600080610c3d8660016114dd565b92509250925081610c545760009350505050610381565b856000610c648260018084611654565b90506000610c786080840160608501612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610cd757610cc86002610ca86040850160208601612e43565b610cb56020860186612e43565b3086604001356001886102000135611299565b610cd28282611843565b610d3a565b604080516020808252818301909252600091602082018180368337019050509050610d2c610d0b6040850160208601612e43565b610d186020860186612e43565b3086604001356001886102000135876118fc565b610d3883838a84611962565b505b610d476020830183612e43565b73ffffffffffffffffffffffffffffffffffffffff167f8fb2c26b66af59de39b1b2f4e1fba157f4408a9b52495599333e37e3191b08698685604051610d97929190918252602082015260400190565b60405180910390a2506001979650505050505050565b6000806000806000610dc188876001611a83565b929650909450909250905080610dde5760009450505050506102c1565b506000610dee8887600085611654565b90506000610e0260808a0160608b01612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610e2c57610e278882611843565b610e5b565b604080516020808252818301909252600091602082018180368337019050509050610e5989838a84611962565b505b8115610e8657610e866002610e7660408b0160208c01612e43565b308660408d013560016000611299565b60408051858152602081018890528315158183015290517f6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d389181900360600190a1506001979650505050505050565b6060600080610ee2611ce8565b6040805160038082528183019092529193507f0000000000000000000000000000000000000000000000000000000000000000925060208201818036833750507f312e3100000000000000000000000000000000000000000000000000000000006020830152509391925090565b600160005414610f8c576040517f7fa8a98700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8254600090610100900460ff1615610fe3578115610fdb576040517f1a51557400000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b50600061056f565b835462010000900460ff161561102e578115610fdb576040517f836f8ef900000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b821561107e57600384015415611079578115610fdb576040517f9633f27800000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b6110c5565b83600301546000036110c5578115610fdb576040517fe567c93e00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8416036110f257505050565b600061113a6110ff611ce8565b7f1901000000000000000000000000000000000000000000000000000000000000600090815260029190915260228581526042822091905290565b9050611147848284611dde565b50505050565b6000808061117361116336879003870187613021565b6107a06107786020890189612e43565b600081815260026020526040902080549194509060ff166111d35784156111c9576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b5060009050611292565b806003015492506111e78482600088610f8e565b6111f5575060009050611292565b4261120561010088013585613144565b82600101546112149190613181565b11156112555784156111c9576040517f031ea4cb00000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b6112628160020154611ff7565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1663010100001790555060015b9250925092565b801561130e57600060405190507f4ce34aa200000000000000000000000000000000000000000000000000000000815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e4820152611308828261010461209a565b5061137f565b600287600381111561132257611322613199565b036113725781600114611361576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136d86868686612236565b61137f565b61137f8686868686612345565b50505050505050565b6113bc6113986020840184612e43565b826113ad6101208601356101808701356131c8565b6113b79190613144565b612477565b6000816113d36101208501356101408601356131c8565b6113dd9190613144565b90506127106113f161016085013583613144565b6113fb91906131c8565b6114059082613203565b905061142061141a60c0850160a08601612e43565b82612477565b505050565b6114696114386080840160608501612e43565b6114456020850185612e43565b8361145a6101208701356101808801356131c8565b6114649190613144565b6124ec565b6000816114806101208501356101408601356131c8565b61148a9190613144565b905061271061149e61016085013583613144565b6114a891906131c8565b6114b29082613203565b90506114206114c76080850160608601612e43565b6114d760c0860160a08701612e43565b836124ec565b60008080846114f560c082013560e083013587612654565b611509575060009250829150819050611292565b6002816101200135101561155f57841561154f576040517f0a199cb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009250829150819050611292565b61158161157136839003830183613021565b6107a06107786020850185612e43565b600081815260026020526040902090945061159f8582600189610f8e565b6115b25750600092508291506112929050565b805460ff166115da576115da6115cb6020840184612e43565b8661083c6102208b018b612f64565b6115fe336115ee6040850160208601612e43565b84604001358561010001356126b3565b815460017fffffffffffffffff000000000000000000000000000000000000000000ff00009091163364010000000002178117835542818401556002830182905560039092018290559497909650939450505050565b61167f6040518060800160405280600081526020016000815260200160008152602001600081525090565b60008061169186610120890135613203565b6101c088013560408501529050831561177d576116b86101208801356101808901356131c8565b6116c29082613144565b6116d190610180890135613203565b91506116e76101208801356101408901356131c8565b6116f19082613144565b61170090610140890135613203565b835260408301518290826127106101608b01356117276101208d01356101408e01356131c8565b6117319190613144565b61173b91906131c8565b6117459190613144565b611754906101408b0135613203565b61175e9190613203565b6117689190613203565b60208401526101808701356060840152611839565b6117916101208801356101808901356131c8565b61179b9087613144565b91506117b16101208801356101408901356131c8565b6117bb9087613144565b80845260408401518391612710906117d9906101608c013590613144565b6117e391906131c8565b6117ed9190613203565b6117f79190613203565b6020840152841561183957866101a00135836000018181516118199190613181565b9052506040830180516101a08901359190611835908390613181565b9052505b5050949350505050565b80513490811015611880576040517f1a783b8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189a6118906020850185612e43565b8360200151612477565b6118b76118ad60c0850160a08601612e43565b8360400151612477565b6060820151156118de576118de6118d460a0850160808601612e43565b8360600151612477565b81516118ea9082613203565b90508015611420576114203382612477565b6119068183612860565b816119515782600114611945576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136d87878787612236565b61137f828260028a8a8a8a8a61287f565b3360006119756080870160608801612e43565b9050611998818361198c60c08a0160a08b01612e43565b88604001518888612918565b6060850151156119c3576119c381836119b760a08a0160808b01612e43565b88606001518888612918565b606085015160408601518651600092916119dc91613203565b6119e69190613203565b905085602001518110611a3f57611a118284611a0560208b018b612e43565b89602001518989612918565b6020860151611a209082613203565b90508015611a3657611a36828430848989612918565b61136d84612953565b611a598284611a5160208b018b612e43565b848989612918565b611a6284612953565b61137f82611a7360208a018a612e43565b8389602001516114649190613203565b6000808080611aaa611a9a36899003890189613021565b6107a061077860208b018b612e43565b600081815260026020526040902080549195509060ff16611b10578515611b00576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b5060009250829150819050611cdf565b611b1d8582600089610f8e565b611b31575060009250829150819050611cdf565b876101200135878260030154611b479190613181565b1180611b535750600187105b15611b93578515611b00576040517fc8910ec000000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b428861010001358260030154611ba99190613144565b8260010154611bb89190613181565b1015611bf9578515611b00576040517f2e775cae00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b86816003016000828254611c0d9190613181565b909155505060038101546101208901359003611c655780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000178155600281015460019250611c6090611ff7565b611cb9565b805460028201546003830154611cb992640100000000900473ffffffffffffffffffffffffffffffffffffffff169190611ca5906101008d013590613144565b8460010154611cb49190613181565b61297c565b54640100000000900473ffffffffffffffffffffffffffffffffffffffff169250600191505b93509350935093565b60007f00000000000000000000000000000000000000000000000000000000000000004614611db957610365604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000526000825160208403805182604103600060018211611e65576040880151606089015160001a96508215611e4357601b8160ff1c0196507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811660408a01525b8689528985526020600060808760015afa508385528589526040890152506000515b8914891515169550859050611fbc57604082526044860380516040880380517f1626ba7e0000000000000000000000000000000000000000000000000000000084528a82526020600060648901868f5afa98508815611fb2577f1626ba7e0000000000000000000000000000000000000000000000000000000060005114611fb2578b3b15611f18577f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6001876041031115611f4e577f8baa579f0000000000000000000000000000000000000000000000000000000060005260046000fd5b640101000000881a611f88577f1f003d0a000000000000000000000000000000000000000000000000000000006000528760045260246000fd5b7f815e1d640000000000000000000000000000000000000000000000000000000060005260046000fd5b8486529190925290525b505050508061114757611fcd612a30565b7f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561207f57600080fd5b505af1158015612093573d6000803e3d6000fd5b5050505050565b604080517f000000000000000000000000000000000000000000000000000000000000000074ff000000000000000000000000000000000000000017600090815260208690527f000000000000000000000000000000000000000000000000000000000000000083526055600b209190925273ffffffffffffffffffffffffffffffffffffffff169050600080600080526020600085876000875af191506000519050816121945761214a612a30565b6040517fd13d53d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610a8b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f4ce34aa2000000000000000000000000000000000000000000000000000000001461222e576040517f1cf99b260000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff84166024820152604401610a8b565b505050505050565b833b61226a577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af180612336573d156122f7576020601f3d01046020830481600302818311156122de57818303600302610200838002858002030401015b5a6020820110156122f3573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b612379577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af18061245b573d1561241d576020601f3d010460208604816003028183111561240457818303600302610200838002858002030401015b5a602082011015612419573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b61248081612a78565b600080600080600085875af19050806114205761249b612a30565b6040517f470c7c1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610a8b565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528260045281602452602060006044600080885af1803d15601f3d116001600051141617163d151581166126455780863b151516612645578061261757816125dd573d1561259e576020601f3d010460208404816003028183111561258557818303600302610200838002858002030401015b5a60208201101561259a573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452306024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528560045230602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528560045260246000fd5b50506040525050600060605250565b6000428411806126645750428311155b156126a95781156126a1576040517f6f7eac2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006102c1565b5060019392505050565b6040517fc6c3bbe600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301526044820184905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063c6c3bbe6906064016020604051808303816000875af1158015612753573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612777919061321a565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663e030565e82886127c14288613181565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff909116602483015267ffffffffffffffff166044820152606401600060405180830381600087803b15801561283e57600080fd5b505af1158015612852573d6000803e3d6000fd5b509298975050505050505050565b600061286d836020015190565b90508181146114205761142083612953565b600060208851036128d35750604080885260208089018a90527f4ce34aa2000000000000000000000000000000000000000000000000000000009189019190915260448801526001606488018190526128e2565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61292183612a78565b61292b8183612860565b816129415761293c86868686612ab5565b61222e565b61222e8282600189898960008a61287f565b604081511461295f5750565b600061296c826020015190565b90506129788183612c22565b5050565b6040517fe030565e0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff848116602483015267ffffffffffffffff831660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e030565e90606401600060405180830381600087803b158015612a1c57600080fd5b505af115801561137f573d6000803e3d6000fd5b3d15610f8c576020601f3d01046020604051048160030281831115612a6357818303600302610200838002858002030401015b5a602082011015611420573d6000803e3d6000fd5b80600003612ab2576040517f91b3e51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116612c125780873b151516612c125780612be45781612baa573d15612b6b576020601f3d0104602084048160030281831115612b5257818303600302610200838002858002030401015b5a602082011015612b67573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b6064810151604082019060c002604401612c3d84838361209a565b50506020905250565b60008060208385031215612c5957600080fd5b823567ffffffffffffffff80821115612c7157600080fd5b818501915085601f830112612c8557600080fd5b813581811115612c9457600080fd5b8660208260051b8501011115612ca957600080fd5b60209290920196919550909350505050565b600060208284031215612ccd57600080fd5b5035919050565b60008060208385031215612ce757600080fd5b823567ffffffffffffffff80821115612cff57600080fd5b818501915085601f830112612d1357600080fd5b813581811115612d2257600080fd5b86602061024083028501011115612ca957600080fd5b60006102208284031215612d4b57600080fd5b50919050565b60006102208284031215612d6457600080fd5b6102c18383612d38565b60006102408284031215612d4b57600080fd5b60006102408284031215612d9457600080fd5b6102c18383612d6e565b60008060408385031215612db157600080fd5b823567ffffffffffffffff811115612dc857600080fd5b612dd485828601612d6e565b95602094909401359450505050565b60008060006102608486031215612df957600080fd5b612e038585612d38565b956102208501359550610240909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612e3e57600080fd5b919050565b600060208284031215612e5557600080fd5b6102c182612e1a565b606081526000845180606084015260005b81811015612e8c5760208188018101516080868401015201612e6f565b81811115612e9e576000608083860101525b5060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1833603018112612f5a57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f9957600080fd5b83018035915067ffffffffffffffff821115612fb457600080fd5b602001915036819003821315612fc957600080fd5b9250929050565b604051610220810167ffffffffffffffff8111828210171561301b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610220828403121561303457600080fd5b61303c612fd0565b61304583612e1a565b815261305360208401612e1a565b60208201526040830135604082015261306e60608401612e1a565b606082015261307f60808401612e1a565b608082015261309060a08401612e1a565b60a082015260c0838101359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561317c5761317c613115565b500290565b6000821982111561319457613194613115565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000826131fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561321557613215613115565b500390565b60006020828403121561322c57600080fd5b505191905056fea26469706673582212208973cac9304a6e97f804d4e16010abc1590e388228a5665d8cd4bbe0352376b264736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB86AE9E1 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xF07EC373 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xF07EC373 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0xF47B7740 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xFFC5D97A EQ PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB86AE9E1 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xBE92D18E EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xD9E53411 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5B34B966 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x5B34B966 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x9432CC1D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0xA3210E7C EQ PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x22378003 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x46423AA7 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x2C46 JUMP JUMPDEST PUSH2 0x2B5 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 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CBB JUMP JUMPDEST PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 ISZERO ISZERO DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE SWAP5 ISZERO ISZERO SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP7 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x35B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x2CD4 JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x2D51 JUMP JUMPDEST PUSH2 0x376 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2D81 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9E JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DE3 JUMP JUMPDEST PUSH2 0x562 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E5E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x5BA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x340 DUP10 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP3 ADD SLOAD PUSH1 0x3 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP6 PUSH2 0x100 DUP5 DIV DUP3 AND SWAP6 PUSH3 0x10000 DUP6 DIV DUP4 AND SWAP6 PUSH4 0x1000000 DUP7 DIV SWAP1 SWAP4 AND SWAP5 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP1 SWAP3 SWAP2 JUMP JUMPDEST SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x365 PUSH2 0x90A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x381 DUP3 PUSH2 0xB27 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x220 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x381 SWAP1 DUP1 PUSH2 0x3A8 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x40A PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x460 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x140 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x180 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1A0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1C0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1E0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x200 ADD CALLDATALOAD DUP2 MSTORE POP DUP4 PUSH2 0x220 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE PUSH2 0x220 SWAP1 SWAP4 ADD DUP1 MLOAD SWAP3 DUP2 MSTORE PUSH2 0x260 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0xC2C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F DUP5 DUP5 DUP5 PUSH2 0xDAD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x381 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x5AF PUSH2 0xED5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8FC JUMPI CALLDATASIZE DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI PUSH2 0x5E6 PUSH2 0x2EF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5F8 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x608 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E43 JUMP JUMPDEST SWAP5 POP PUSH2 0x800 PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x648 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x67C PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x140 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x180 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1A0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1C0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1E0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x200 ADD CALLDATALOAD DUP2 MSTORE POP PUSH2 0x7A0 DUP4 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x778 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE PUSH2 0x220 SWAP1 SWAP4 ADD DUP1 MLOAD SWAP3 DUP2 MSTORE PUSH2 0x260 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP8 POP SWAP6 POP PUSH2 0x81F DUP7 DUP9 PUSH1 0x1 DUP1 PUSH2 0xF8E JUMP JUMPDEST POP DUP7 SLOAD PUSH1 0xFF AND PUSH2 0x8F2 JUMPI PUSH2 0x876 DUP6 DUP8 PUSH2 0x83C PUSH2 0x220 DUP7 ADD DUP7 PUSH2 0x2F64 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x10D0 SWAP3 POP POP POP JUMP JUMPDEST DUP7 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR DUP8 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0x9E126C208C7C6B8DE91FB519FF46EF1F6EB471F6376862CA4DE42EA000026D6 SWAP1 PUSH2 0x8E9 SWAP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x5CB JUMP JUMPDEST POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x914 PUSH2 0xF50 JUMP JUMPDEST POP CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SWAP2 MLOAD DUP2 DUP2 MSTORE SWAP1 SWAP3 SWAP2 PUSH32 0x721C20121297512B72821B97F5326877EA8ECF4BB9948FEA5BFCB6453074D37F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x971 PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB1A JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x992 JUMPI PUSH2 0x992 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x240 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x9AB SWAP1 POP PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E43 JUMP JUMPDEST SWAP4 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x9FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x80EC737400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3C PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP8 POP SWAP1 SWAP2 POP ISZERO PUSH2 0xA94 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 AND PUSH2 0x100 OR DUP7 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0xA6EB7CDC219E1518CED964E9A34E61D68A94E4F1569DB3E84256BA981BA52753 SWAP1 PUSH2 0xB08 SWAP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 ADD PUSH2 0x977 JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB38 DUP6 PUSH1 0x1 PUSH2 0x114D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP1 PUSH2 0xB4E JUMPI POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB7F PUSH1 0x2 PUSH2 0xB63 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0x2E43 JUMP JUMPDEST ADDRESS PUSH2 0xB71 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB91 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBBB JUMPI PUSH2 0xBB6 DUP6 DUP4 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x1425 JUMP JUMPDEST PUSH2 0xBD2 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xE68E1577BA456C32A752DBE4FA63FBAA46841E7E54BC9667D021B9AF64A1CADA DUP5 PUSH1 0x40 MLOAD PUSH2 0xC19 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xC3D DUP7 PUSH1 0x1 PUSH2 0x14DD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH2 0xC54 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x381 JUMP JUMPDEST DUP6 PUSH1 0x0 PUSH2 0xC64 DUP3 PUSH1 0x1 DUP1 DUP5 PUSH2 0x1654 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC78 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCD7 JUMPI PUSH2 0xCC8 PUSH1 0x2 PUSH2 0xCA8 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0xCB5 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD PUSH2 0x1299 JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP3 PUSH2 0x1843 JUMP JUMPDEST PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xD2C PUSH2 0xD0B PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0xD18 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD DUP8 PUSH2 0x18FC JUMP JUMPDEST PUSH2 0xD38 DUP4 DUP4 DUP11 DUP5 PUSH2 0x1962 JUMP JUMPDEST POP JUMPDEST PUSH2 0xD47 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8FB2C26B66AF59DE39B1B2F4E1FBA157F4408A9B52495599333E37E3191B0869 DUP7 DUP6 PUSH1 0x40 MLOAD PUSH2 0xD97 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xDC1 DUP9 DUP8 PUSH1 0x1 PUSH2 0x1A83 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDDE JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xDEE DUP9 DUP8 PUSH1 0x0 DUP6 PUSH2 0x1654 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE02 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE2C JUMPI PUSH2 0xE27 DUP9 DUP3 PUSH2 0x1843 JUMP JUMPDEST PUSH2 0xE5B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xE59 DUP10 DUP4 DUP11 DUP5 PUSH2 0x1962 JUMP JUMPDEST POP JUMPDEST DUP2 ISZERO PUSH2 0xE86 JUMPI PUSH2 0xE86 PUSH1 0x2 PUSH2 0xE76 PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH32 0x6CB64AA506CC92732FC83160C8EA61203B5A13A8CF92E5B5C7CCC4BA6BB41D38 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0xEE2 PUSH2 0x1CE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP3 POP PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH32 0x312E310000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE POP SWAP4 SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x7FA8A98700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xFE3 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A51557400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x56F JUMP JUMPDEST DUP4 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x102E JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x836F8EF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST DUP3 ISZERO PUSH2 0x107E JUMPI PUSH1 0x3 DUP5 ADD SLOAD ISZERO PUSH2 0x1079 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x10C5 JUMP JUMPDEST DUP4 PUSH1 0x3 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x10C5 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0xE567C93E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SUB PUSH2 0x10F2 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113A PUSH2 0x10FF PUSH2 0x1CE8 JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP6 DUP2 MSTORE PUSH1 0x42 DUP3 KECCAK256 SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1147 DUP5 DUP3 DUP5 PUSH2 0x1DDE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1173 PUSH2 0x1163 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP5 POP SWAP1 PUSH1 0xFF AND PUSH2 0x11D3 JUMPI DUP5 ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4C58FF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD SWAP3 POP PUSH2 0x11E7 DUP5 DUP3 PUSH1 0x0 DUP9 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x11F5 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST TIMESTAMP PUSH2 0x1205 PUSH2 0x100 DUP9 ADD CALLDATALOAD DUP6 PUSH2 0x3144 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1214 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST GT ISZERO PUSH2 0x1255 JUMPI DUP5 ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x31EA4CB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x1262 DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x1FF7 JUMP JUMPDEST DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF AND PUSH4 0x1010000 OR SWAP1 SSTORE POP PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x130E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE DUP8 PUSH1 0x44 DUP3 ADD MSTORE DUP7 PUSH1 0x64 DUP3 ADD MSTORE DUP6 PUSH1 0x84 DUP3 ADD MSTORE DUP5 PUSH1 0xA4 DUP3 ADD MSTORE DUP4 PUSH1 0xC4 DUP3 ADD MSTORE DUP3 PUSH1 0xE4 DUP3 ADD MSTORE PUSH2 0x1308 DUP3 DUP3 PUSH2 0x104 PUSH2 0x209A JUMP JUMPDEST POP PUSH2 0x137F JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1322 JUMPI PUSH2 0x1322 PUSH2 0x3199 JUMP JUMPDEST SUB PUSH2 0x1372 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x1361 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP7 DUP7 DUP7 DUP7 PUSH2 0x2236 JUMP JUMPDEST PUSH2 0x137F JUMP JUMPDEST PUSH2 0x137F DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2345 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13BC PUSH2 0x1398 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E43 JUMP JUMPDEST DUP3 PUSH2 0x13AD PUSH2 0x120 DUP7 ADD CALLDATALOAD PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x13B7 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x13D3 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x13DD SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x13F1 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x13FB SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1405 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP PUSH2 0x1420 PUSH2 0x141A PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP3 PUSH2 0x2477 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1469 PUSH2 0x1438 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x1445 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH2 0x145A PUSH2 0x120 DUP8 ADD CALLDATALOAD PUSH2 0x180 DUP9 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1464 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1480 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x148A SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x149E PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x14A8 SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x14B2 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP PUSH2 0x1420 PUSH2 0x14C7 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x14D7 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 PUSH2 0x14F5 PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD CALLDATALOAD DUP8 PUSH2 0x2654 JUMP JUMPDEST PUSH2 0x1509 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH2 0x120 ADD CALLDATALOAD LT ISZERO PUSH2 0x155F JUMPI DUP5 ISZERO PUSH2 0x154F JUMPI PUSH1 0x40 MLOAD PUSH32 0xA199CB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST PUSH2 0x1581 PUSH2 0x1571 CALLDATASIZE DUP4 SWAP1 SUB DUP4 ADD DUP4 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x159F DUP6 DUP3 PUSH1 0x1 DUP10 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x15B2 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP PUSH2 0x1292 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x15DA JUMPI PUSH2 0x15DA PUSH2 0x15CB PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E43 JUMP JUMPDEST DUP7 PUSH2 0x83C PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x2F64 JUMP JUMPDEST PUSH2 0x15FE CALLER PUSH2 0x15EE PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP6 PUSH2 0x100 ADD CALLDATALOAD PUSH2 0x26B3 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FF0000 SWAP1 SWAP2 AND CALLER PUSH5 0x100000000 MUL OR DUP2 OR DUP4 SSTORE TIMESTAMP DUP2 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP3 ADD DUP3 SWAP1 SSTORE SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH2 0x167F PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1691 DUP7 PUSH2 0x120 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x1C0 DUP9 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP DUP4 ISZERO PUSH2 0x177D JUMPI PUSH2 0x16B8 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x16C2 SWAP1 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x16D1 SWAP1 PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST SWAP2 POP PUSH2 0x16E7 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x16F1 SWAP1 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x1700 SWAP1 PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP3 SWAP1 DUP3 PUSH2 0x2710 PUSH2 0x160 DUP12 ADD CALLDATALOAD PUSH2 0x1727 PUSH2 0x120 DUP14 ADD CALLDATALOAD PUSH2 0x140 DUP15 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1731 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x173B SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1745 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x1754 SWAP1 PUSH2 0x140 DUP12 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x175E SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x1768 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1839 JUMP JUMPDEST PUSH2 0x1791 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x179B SWAP1 DUP8 PUSH2 0x3144 JUMP JUMPDEST SWAP2 POP PUSH2 0x17B1 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x17BB SWAP1 DUP8 PUSH2 0x3144 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP4 SWAP2 PUSH2 0x2710 SWAP1 PUSH2 0x17D9 SWAP1 PUSH2 0x160 DUP13 ADD CALLDATALOAD SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x17E3 SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x17ED SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x17F7 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE DUP5 ISZERO PUSH2 0x1839 JUMPI DUP7 PUSH2 0x1A0 ADD CALLDATALOAD DUP4 PUSH1 0x0 ADD DUP2 DUP2 MLOAD PUSH2 0x1819 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH2 0x1A0 DUP10 ADD CALLDATALOAD SWAP2 SWAP1 PUSH2 0x1835 SWAP1 DUP4 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD CALLVALUE SWAP1 DUP2 LT ISZERO PUSH2 0x1880 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A783B8D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x189A PUSH2 0x1890 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x18B7 PUSH2 0x18AD PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD ISZERO PUSH2 0x18DE JUMPI PUSH2 0x18DE PUSH2 0x18D4 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x18EA SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1420 JUMPI PUSH2 0x1420 CALLER DUP3 PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x1906 DUP2 DUP4 PUSH2 0x2860 JUMP JUMPDEST DUP2 PUSH2 0x1951 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x1945 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP8 DUP8 DUP8 DUP8 PUSH2 0x2236 JUMP JUMPDEST PUSH2 0x137F DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x287F JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1975 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E43 JUMP JUMPDEST SWAP1 POP PUSH2 0x1998 DUP2 DUP4 PUSH2 0x198C PUSH1 0xC0 DUP11 ADD PUSH1 0xA0 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP9 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD ISZERO PUSH2 0x19C3 JUMPI PUSH2 0x19C3 DUP2 DUP4 PUSH2 0x19B7 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD DUP9 DUP9 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x19DC SWAP2 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x19E6 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x20 ADD MLOAD DUP2 LT PUSH2 0x1A3F JUMPI PUSH2 0x1A11 DUP3 DUP5 PUSH2 0x1A05 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD MLOAD DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x1A20 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A36 JUMPI PUSH2 0x1A36 DUP3 DUP5 ADDRESS DUP5 DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0x136D DUP5 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0x1A59 DUP3 DUP5 PUSH2 0x1A51 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST DUP5 DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0x1A62 DUP5 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0x137F DUP3 PUSH2 0x1A73 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E43 JUMP JUMPDEST DUP4 DUP10 PUSH1 0x20 ADD MLOAD PUSH2 0x1464 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AAA PUSH2 0x1A9A CALLDATASIZE DUP10 SWAP1 SUB DUP10 ADD DUP10 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP6 POP SWAP1 PUSH1 0xFF AND PUSH2 0x1B10 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4C58FF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x1B1D DUP6 DUP3 PUSH1 0x0 DUP10 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x1B31 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CDF JUMP JUMPDEST DUP8 PUSH2 0x120 ADD CALLDATALOAD DUP8 DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1B47 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST GT DUP1 PUSH2 0x1B53 JUMPI POP PUSH1 0x1 DUP8 LT JUMPDEST ISZERO PUSH2 0x1B93 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC8910EC000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST TIMESTAMP DUP9 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1BA9 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1BB8 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST LT ISZERO PUSH2 0x1BF9 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E775CAE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST DUP7 DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1C0D SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 SUB PUSH2 0x1C65 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF AND PUSH3 0x10000 OR DUP2 SSTORE PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 SWAP3 POP PUSH2 0x1C60 SWAP1 PUSH2 0x1FF7 JUMP JUMPDEST PUSH2 0x1CB9 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH2 0x1CB9 SWAP3 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x1CA5 SWAP1 PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP1 PUSH2 0x3144 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1CB4 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST PUSH2 0x297C JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH1 0x1 SWAP2 POP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x1DB9 JUMPI PUSH2 0x365 PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH1 0x20 DUP5 SUB DUP1 MLOAD DUP3 PUSH1 0x41 SUB PUSH1 0x0 PUSH1 0x1 DUP3 GT PUSH2 0x1E65 JUMPI PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x0 BYTE SWAP7 POP DUP3 ISZERO PUSH2 0x1E43 JUMPI PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD SWAP7 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x40 DUP11 ADD MSTORE JUMPDEST DUP7 DUP10 MSTORE DUP10 DUP6 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x80 DUP8 PUSH1 0x1 GAS STATICCALL POP DUP4 DUP6 MSTORE DUP6 DUP10 MSTORE PUSH1 0x40 DUP10 ADD MSTORE POP PUSH1 0x0 MLOAD JUMPDEST DUP10 EQ DUP10 ISZERO ISZERO AND SWAP6 POP DUP6 SWAP1 POP PUSH2 0x1FBC JUMPI PUSH1 0x40 DUP3 MSTORE PUSH1 0x44 DUP7 SUB DUP1 MLOAD PUSH1 0x40 DUP9 SUB DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP11 DUP3 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 DUP10 ADD DUP7 DUP16 GAS STATICCALL SWAP9 POP DUP9 ISZERO PUSH2 0x1FB2 JUMPI PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MLOAD EQ PUSH2 0x1FB2 JUMPI DUP12 EXTCODESIZE ISZERO PUSH2 0x1F18 JUMPI PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP8 PUSH1 0x41 SUB GT ISZERO PUSH2 0x1F4E JUMPI PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH5 0x101000000 DUP9 BYTE PUSH2 0x1F88 JUMPI PUSH32 0x1F003D0A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST DUP5 DUP7 MSTORE SWAP2 SWAP1 SWAP3 MSTORE SWAP1 MSTORE JUMPDEST POP POP POP POP DUP1 PUSH2 0x1147 JUMPI PUSH2 0x1FCD PUSH2 0x2A30 JUMP JUMPDEST PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x42966C6800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x42966C68 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x207F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2093 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH21 0xFF0000000000000000000000000000000000000000 OR PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH32 0x0 DUP4 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 SWAP2 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 MSTORE PUSH1 0x20 PUSH1 0x0 DUP6 DUP8 PUSH1 0x0 DUP8 GAS CALL SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP2 PUSH2 0x2194 JUMPI PUSH2 0x214A PUSH2 0x2A30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD13D53D400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x222E JUMPI PUSH1 0x40 MLOAD PUSH32 0x1CF99B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xA8B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x226A JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x2336 JUMPI RETURNDATASIZE ISZERO PUSH2 0x22F7 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x22DE JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x22F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x2379 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x245B JUMPI RETURNDATASIZE ISZERO PUSH2 0x241D JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2404 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x2419 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH2 0x2480 DUP2 PUSH2 0x2A78 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x1420 JUMPI PUSH2 0x249B PUSH2 0x2A30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x470C7C1D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP3 PUSH1 0x4 MSTORE DUP2 PUSH1 0x24 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x44 PUSH1 0x0 DUP1 DUP9 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x2645 JUMPI DUP1 DUP7 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2645 JUMPI DUP1 PUSH2 0x2617 JUMPI DUP2 PUSH2 0x25DD JUMPI RETURNDATASIZE ISZERO PUSH2 0x259E JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2585 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x259A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE ADDRESS PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE ADDRESS PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP JUMP JUMPDEST PUSH1 0x0 TIMESTAMP DUP5 GT DUP1 PUSH2 0x2664 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x26A9 JUMPI DUP2 ISZERO PUSH2 0x26A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6F7EAC2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC6C3BBE600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xC6C3BBE6 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2753 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 0x2777 SWAP2 SWAP1 PUSH2 0x321A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xE030565E DUP3 DUP9 PUSH2 0x27C1 TIMESTAMP DUP9 PUSH2 0x3181 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2852 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x286D DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1420 JUMPI PUSH2 0x1420 DUP4 PUSH2 0x2953 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x28D3 JUMPI POP PUSH1 0x40 DUP1 DUP9 MSTORE PUSH1 0x20 DUP1 DUP10 ADD DUP11 SWAP1 MSTORE PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 SWAP2 DUP10 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x64 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x28E2 JUMP JUMPDEST POP PUSH1 0x64 DUP8 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 MSTORE JUMPDEST PUSH1 0x3C PUSH1 0xC0 DUP3 MUL DUP10 ADD SUB DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE DUP4 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2921 DUP4 PUSH2 0x2A78 JUMP JUMPDEST PUSH2 0x292B DUP2 DUP4 PUSH2 0x2860 JUMP JUMPDEST DUP2 PUSH2 0x2941 JUMPI PUSH2 0x293C DUP7 DUP7 DUP7 DUP7 PUSH2 0x2AB5 JUMP JUMPDEST PUSH2 0x222E JUMP JUMPDEST PUSH2 0x222E DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD EQ PUSH2 0x295F JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296C DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2978 DUP2 DUP4 PUSH2 0x2C22 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE030565E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE030565E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xF8C JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2A63 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x1420 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x2AB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x91B3E51400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x2C12 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2C12 JUMPI DUP1 PUSH2 0x2BE4 JUMPI DUP2 PUSH2 0x2BAA JUMPI RETURNDATASIZE ISZERO PUSH2 0x2B6B JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2B52 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x2B67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST PUSH1 0x64 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0xC0 MUL PUSH1 0x44 ADD PUSH2 0x2C3D DUP5 DUP4 DUP4 PUSH2 0x209A JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2CFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH2 0x240 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2CA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D38 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D6E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DD4 DUP6 DUP3 DUP7 ADD PUSH2 0x2D6E JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x260 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2DF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E03 DUP6 DUP6 PUSH2 0x2D38 JUMP JUMPDEST SWAP6 PUSH2 0x220 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH2 0x240 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2E3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP3 PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E8C JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x2E6F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2E9E JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC1 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2FB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2FC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x301B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303C PUSH2 0x2FD0 JUMP JUMPDEST PUSH2 0x3045 DUP4 PUSH2 0x2E1A JUMP JUMPDEST DUP2 MSTORE PUSH2 0x3053 PUSH1 0x20 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x306E PUSH1 0x60 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x307F PUSH1 0x80 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3090 PUSH1 0xA0 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xE0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x140 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x160 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x180 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1C0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1E0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x200 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x317C JUMPI PUSH2 0x317C PUSH2 0x3115 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3194 JUMPI PUSH2 0x3194 PUSH2 0x3115 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x31FE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3215 JUMPI PUSH2 0x3215 PUSH2 0x3115 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 PUSH20 0xCAC9304A6E97F804D4E16010ABC1590E388228A5 PUSH7 0x5D8CD4BBE03523 PUSH23 0xB264736F6C634300080E00330000000000000000000000 ","sourceMap":"121:254:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1283:143:31;;;;;;;;;;-1:-1:-1;1283:143:31;;;;;:::i;:::-;;:::i;:::-;;;824:14:54;;817:22;799:41;;787:2;772:18;1283:143:31;;;;;;;;2337:394;;;;;;;;;;-1:-1:-1;2337:394:31;;;;;:::i;:::-;;:::i;:::-;;;;1380:14:54;;1373:22;1355:41;;1439:14;;1432:22;1427:2;1412:18;;1405:50;1498:14;;1491:22;1471:18;;;1464:50;;;;1557:14;;1550:22;1545:2;1530:18;;1523:50;1622:42;1610:55;1604:3;1589:19;;1582:84;1697:3;1682:19;;1675:35;1741:3;1726:19;;1719:35;;;;1785:3;1770:19;;1763:35;1342:3;1327:19;2337:394:31;1036:768:54;1432:115:31;;;;;;;;;;;;;:::i;:::-;;;1955:25:54;;;1943:2;1928:18;1432:115:31;1809:177:54;1128:149:31;;;;;;;;;;-1:-1:-1;1128:149:31;;;;;:::i;:::-;;:::i;954:168::-;;;;;;;;;;-1:-1:-1;954:168:31;;;;;:::i;:::-;;:::i;1553:778::-;;;;;;;;;;-1:-1:-1;1553:778:31;;;;;:::i;:::-;;:::i;456:224::-;;;;;;:::i;:::-;;:::i;686:262::-;;;;;;:::i;:::-;;:::i;2737:152::-;;;;;;;;;;-1:-1:-1;2737:152:31;;;;;:::i;:::-;;:::i;2895:233::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;336:36:43:-;;;;;;;;;;;;;;;;;;5932:42:54;5920:55;;;5902:74;;5890:2;5875:18;336:36:43;5756:226:54;1283:143:31;1360:14;1402:17;1412:6;;1402:9;:17::i;:::-;1390:29;1283:143;-1:-1:-1;;;1283:143:31:o;2337:394::-;2440:16;2470;2500;2530:13;2557:17;2588;2619:16;2649:17;2698:26;2714:9;11847:16:41;12132:23;;;:12;:23;;;;;;;;12186;;;12366:21;;;12401:20;;;;12297;12435:21;;;;12186:23;;;;;;12223;;;;;12260;;;;;;12297:20;;;;;;;12331:21;;;;;;12366;;12401:20;11743:730;2698:26:31;2691:33;;;;;;;;;;;;;;;;2337:394;;;;;;;;;:::o;1432:115::-;1478:18;1521:19;:17;:19::i;:::-;1508:32;;1432:115;:::o;1128:149::-;1213:14;1255:15;1263:6;;1255:7;:15::i;954:168::-;1045:11;1081:34;1104:10;1081:22;:34::i;:::-;1072:43;954:168;-1:-1:-1;;954:168:31:o;1553:778::-;1729:558;;;;;;;;;1654:17;;1699:625;;1729:558;1762:13;;;;:5;:13;:::i;:::-;1729:558;;;;;;1793:5;:11;;;;;;;;;;:::i;:::-;1729:558;;;;1822:16;;;;;1729:558;;;;;1856:14;;;;;;;;:::i;:::-;1729:558;;;;;;1888:12;;;;;;;;:::i;:::-;1729:558;;;;;;1918:14;;;;;;;;:::i;:::-;1729:558;;;;;;1950:5;:15;;;1729:558;;;;1983:5;:13;;;1729:558;;;;2014:5;:14;;;1729:558;;;;2046:5;:13;;;1729:558;;;;2077:5;:12;;;1729:558;;;;2107:5;:11;;;1729:558;;;;2136:5;:13;;;1729:558;;;;2167:5;:9;;;1729:558;;;;2194:5;:17;;;1729:558;;;;2229:5;:10;;;1729:558;;;;2257:5;:16;;;1729:558;;;2301:5;:13;;;619:29:38;;;683:18;;551:15;715:29;;830:30;776:98;;;910:17;;941:27;;;1018:17;995:41;;1050:34;;;;1098;995:41;375:773;456:224:31;579:14;621:52;646:5;653:19;621:24;:52::i;686:262::-;840:11;876:65;899:10;911:19;932:8;876:22;:65::i;:::-;867:74;686:262;-1:-1:-1;;;;686:262:31:o;2737:152::-;738:18:36;;;2821:15:31;738:18:36;;;:9;:18;;;;;;2862:20:31;598:165:36;2895:233:31;2978:21;3013:23;3050:25;3107:14;:12;:14::i;:::-;3100:21;;;;;;2895:233;;;:::o;8359:3378:41:-;8437:14;8533:21;:19;:21::i;:::-;8615:31;;;8906:6;8615:31;8974:2640;8998:11;8994:1;:15;8974:2640;;;9070:20;9093:6;;9100:1;9093:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;9070:32;-1:-1:-1;9070:32:41;9317:23;;;;9070:32;9317:23;:::i;:::-;9307:33;;9451:970;9489:856;;;;;;;;9530:7;9489:856;;;;;;9563:15;:21;;;;;;;;;;:::i;:::-;9489:856;;;;9610:26;;;;;9489:856;;;;;9662:24;;;;;;;;:::i;:::-;9489:856;;;;;;9712:22;;;;;;;;:::i;:::-;9489:856;;;;;;9760:24;;;;;;;;:::i;:::-;9489:856;;;;;;9810:15;:25;;;9489:856;;;;9861:15;:23;;;9489:856;;;;9910:15;:24;;;9489:856;;;;9960:15;:23;;;9489:856;;;;10009:15;:22;;;9489:856;;;;10057:15;:21;;;9489:856;;;;10104:15;:23;;;9489:856;;;;10153:15;:19;;;9489:856;;;;10198:15;:27;;;9489:856;;;;10251:15;:20;;;9489:856;;;;10297:15;:26;;;9489:856;;;10367:36;10379:15;:23;;;;;;;;;;:::i;:::-;738:18:36;;683:22;738:18;;;:9;:18;;;;;;;598:165;10367:36:41;619:29:38;;;683:18;;551:15;715:29;;830:30;776:98;;;910:17;;941:27;;;1018:17;995:41;;1050:34;;;;1098;995:41;375:773;9451:970:41;10529:23;;;;:12;:23;;;;;;-1:-1:-1;9439:982:41;-1:-1:-1;10647:253:41;9439:982;10529:23;10751:4;;10647:18;:253::i;:::-;-1:-1:-1;10990:23:41;;;;10985:512;;11091:53;11108:7;11117:9;11128:15;;;;:5;:15;:::i;:::-;11091:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11091:16:41;;-1:-1:-1;;;11091:53:41:i;:::-;11238:30;;;;11264:4;11238:30;;;11374:104;;;;;;;;;;11414:9;1955:25:54;;1943:2;1928:18;;1809:177;11374:104:41;;;;;;;;10985:512;-1:-1:-1;;11596:3:41;;8974:2640;;;-1:-1:-1;11726:4:41;;8359:3378;-1:-1:-1;;;;;;;8359:3378:41:o;348:244:36:-;395:18;425:21;:19;:21::i;:::-;-1:-1:-1;506:10:36;496:21;;;;:9;:21;;;;;;;;;494:23;;;;;;;;;543:42;;1955:25:54;;;494:23:36;;506:10;543:42;;1928:18:54;543:42:36;;;;;;;348:244;:::o;5758:2595:41:-;5844:14;5940:21;:19;:21::i;:::-;6022:31;;6286:6;6022:31;6354:1876;6378:11;6374:1;:15;6354:1876;;;6450:30;6483:6;;6490:1;6483:9;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6521:13:41;;-1:-1:-1;6521:13:41;;;6483:9;6521:13;:::i;:::-;6511:23;-1:-1:-1;6557:10:41;:21;;;;6553:93;;6609:18;;;;;;;;;;;;;;6553:93;6745:17;6765:787;6803:696;;;;;;;;6844:7;6803:696;;;;;;6877:5;:11;;;;;;;;;;:::i;6765:787::-;7660:23;;;;:12;:23;;;;;7706:21;;;;7660:23;;-1:-1:-1;6745:807:41;;-1:-1:-1;7706:25:41;7702:109;;7762:30;;;;;;;;1955:25:54;;;1928:18;;7762:30:41;;;;;;;;7702:109;7900:31;;7949:30;;7900:31;7949:30;;;8082:34;;;;;;;;;;8097:9;1955:25:54;;1943:2;1928:18;;1809:177;8082:34:41;;;;;;;;-1:-1:-1;;8212:3:41;;6354:1876;;;-1:-1:-1;8342:4:41;;5758:2595;-1:-1:-1;;;;;;5758:2595:41:o;5031:968:40:-;5134:4;5168:17;5199;5230:10;5253:86;5301:10;5325:4;5253:34;:86::i;:::-;5154:185;;;;;;5355:5;5350:49;;-1:-1:-1;5383:5:40;;5031:968;-1:-1:-1;;;;5031:968:40:o;5350:49::-;5409:234;5455:15;5484:16;;;;;;;;:::i;:::-;5522:4;5541:18;;;;:10;:18;:::i;:::-;5573:21;;;;5608:1;5631;5409:32;:234::i;:::-;5689:1;5658:19;;;;;;;;:::i;:::-;:33;;;5654:225;;5707:41;5726:10;5738:9;5707:18;:41::i;:::-;5654:225;;;5779:89;5817:10;5845:9;5779:20;:89::i;:::-;5942:18;;;;:10;:18;:::i;:::-;5894:76;;;5919:9;5894:76;;;;1955:25:54;;1943:2;1928:18;;1809:177;5894:76:40;;;;;;;;-1:-1:-1;5988:4:40;;5031:968;-1:-1:-1;;;;5031:968:40:o;1801:1679::-;1920:4;1954:17;1985:10;2009:16;2038:76;2081:5;2100:4;2038:29;:76::i;:::-;1940:174;;;;;;2130:5;2125:49;;2158:5;2151:12;;;;;;;2125:49;2227:5;:16;2280:51;2227:5;2316:1;;2227:16;2280:18;:51::i;:::-;2253:78;-1:-1:-1;2382:1:40;2346:24;;;;;;;;:::i;:::-;:38;;;2342:988;;2400:297;2450:15;2483:21;;;;;;;;:::i;:::-;2522:23;;;;:15;:23;:::i;:::-;2571:4;2594:15;:26;;;2638:1;2657:15;:26;;;2400:32;:297::i;:::-;2712:50;2736:15;2753:8;2712:23;:50::i;:::-;2342:988;;;2820:30;;;14291:4:33;2820:30:40;;;;;;;;;2793:24;;2820:30;;;;;;;;;;-1:-1:-1;;2793:57:40;-1:-1:-1;2864:276:40;2897:21;;;;;;;;:::i;:::-;2936:23;;;;:15;:23;:::i;:::-;2985:4;3008:15;:26;;;3052:1;3071:15;:26;;;3115:11;2864:15;:276::i;:::-;3155:164;3198:15;3231:8;3257:19;3294:11;3155:25;:164::i;:::-;2779:551;2342:988;3396:23;;;;:15;:23;:::i;:::-;3345:106;;;3373:9;3433:8;3345:106;;;;;;7510:25:54;;;7566:2;7551:18;;7544:34;7498:2;7483:18;;7336:248;3345:106:40;;;;;;;;-1:-1:-1;3469:4:40;;1801:1679;-1:-1:-1;;;;;;;1801:1679:40:o;3486:1539::-;3636:4;3656:17;3683;3710:16;3750:10;3897:124;3949:10;3977:8;4003:4;3897:34;:124::i;:::-;3774:247;;-1:-1:-1;3774:247:40;;-1:-1:-1;3774:247:40;;-1:-1:-1;3774:247:40;-1:-1:-1;3774:247:40;4036:57;;4073:5;4066:12;;;;;;;;4036:57;3736:367;4113:24;4140:60;4159:10;4171:8;4181:5;4188:11;4140:18;:60::i;:::-;4113:87;-1:-1:-1;4246:1:40;4215:19;;;;;;;;:::i;:::-;:33;;;4211:370;;4264:45;4288:10;4300:8;4264:23;:45::i;:::-;4211:370;;;4367:30;;;14291:4:33;4367:30:40;;;;;;;;;4340:24;;4367:30;;;;;;;;;;-1:-1:-1;4367:30:40;4340:57;;4411:159;4454:10;4482:8;4508:19;4545:11;4411:25;:159::i;:::-;4326:255;4211:370;4595:11;4591:299;;;4622:257;4672:15;4705:16;;;;;;;;:::i;:::-;4747:4;4770:9;4797:21;;;;4836:1;4863;4622:32;:257::i;:::-;4905:91;;;7785:25:54;;;7841:2;7826:18;;7819:34;;;7896:14;;7889:22;7869:18;;;7862:50;4905:91:40;;;;;;;7773:2:54;4905:91:40;;;-1:-1:-1;5014:4:40;;3486:1539;-1:-1:-1;;;;;;;3486:1539:40:o;3829:695:38:-;3913:21;3948:23;3985:25;4093:18;:16;:18::i;:::-;4324:26;;;2270:1:33;4324:26:38;;;;;;;;;4075:36;;-1:-1:-1;4228:19:38;;-1:-1:-1;4324:26:38;;;;;;;;-1:-1:-1;;4480:27:38;4470:7;4457:21;;4450:58;-1:-1:-1;4457:21:38;3829:695;;-1:-1:-1;3829:695:38;:::o;1511:215:42:-;2345:1:33;1636:16:42;;:32;1632:88;;1691:18;;;;;;;;;;;;;;1632:88;1511:215::o;3215:1039:47:-;3419:23;;3393:10;;3419:23;;;;;3415:168;;;3462:15;3458:88;;;3504:27;;;;;;;;1955:25:54;;;1928:18;;3504:27:47;1809:177:54;3458:88:47;-1:-1:-1;3567:5:47;3560:12;;3415:168;3597:23;;;;;;;3593:173;;;3640:15;3636:93;;;3682:32;;;;;;;;1955:25:54;;;1928:18;;3682:32:47;1809:177:54;3593:173:47;3780:8;3776:449;;;3808:21;;;;:25;3804:192;;3857:15;3853:99;;;3903:30;;;;;;;;1955:25:54;;;1928:18;;3903:30:47;1809:177:54;3804:192:47;3776:449;;;4030:11;:21;;;4055:1;4030:26;4026:189;;4080:15;4076:95;;;4126:26;;;;;;;;1955:25:54;;;1928:18;;4126:26:47;1809:177:54;4026:189:47;-1:-1:-1;4243:4:47;3215:1039;;;;;;:::o;2640:569::-;2864:10;2853:21;;;;2849:58;;2640:569;;;:::o;2849:58::-;2997:14;3014:50;3034:18;:16;:18::i;:::-;5134:14:38;4937:13;5124:25;;;5249:29;5242:54;;;;5601:23;5594:42;;;5724:25;5711:39;;5829:34;;;5711:39;4817:1062;3014:50:47;2997:67;;3153:49;3175:7;3184:6;3192:9;3153:21;:49::i;:::-;2770:439;2640:569;;;:::o;4418:1334:41:-;4590:17;;;4699:95;;;;;;;;4729:10;4699:95;:::i;:::-;4753:31;4765:18;;;;:10;:18;:::i;4699:95::-;4805:31;4839:23;;;:12;:23;;;;;4877;;4687:107;;-1:-1:-1;4839:23:41;4877;;4872:193;;4920:15;4916:89;;;4962:28;;;;;;;;1955:25:54;;;1928:18;;4962:28:41;1809:177:54;4916:89:41;-1:-1:-1;5048:5:41;;-1:-1:-1;5018:36:41;;4872:193;5087:11;:21;;;5075:33;;5137:144;5173:9;5200:11;5229:5;5252:15;5137:18;:144::i;:::-;5119:234;;-1:-1:-1;5336:5:41;;-1:-1:-1;5306:36:41;;5119:234;5425:15;5391:31;5403:19;;;;5391:9;:31;:::i;:::-;5367:11;:21;;;:55;;;;:::i;:::-;:73;5363:240;;;5460:15;5456:87;;;5502:26;;;;;;;;1955:25:54;;;1928:18;;5502:26:41;1809:177:54;5363:240:41;5613:32;5624:11;:20;;;5613:10;:32::i;:::-;5656:30;;5696:27;;;;;;-1:-1:-1;;4418:1334:41;;;;;;:::o;2173:3517:37:-;2487:24;;2483:3201;;2607:22;2844:21;2838:28;2820:46;;2977:25;2961:14;2954:49;3280:35;3194:42;3154:14;3125:133;3097:236;3610:38;3524:42;3484:14;3455:133;3427:239;3841:8;3782:36;3766:14;3762:57;3734:133;4035:5;3979:33;3963:14;3959:54;3931:127;4235:4;4180:32;4164:14;4160:53;4132:125;4394:2;4361:30;4345:14;4341:51;4334:63;4581:10;4520:38;4504:14;4500:59;4472:137;4788:6;4731:34;4715:14;4711:55;4683:129;4888:138;4930:10;4958:14;14171:5:33;4888:24:37;:138::i;:::-;2513:2524;2483:3201;;;5150:15;5138:8;:27;;;;;;;;:::i;:::-;;5134:540;;5263:6;5273:1;5263:11;5259:94;;5305:29;;;;;;;;;;;;;;5259:94;5440:51;5463:5;5470:4;5476:2;5480:10;5440:22;:51::i;:::-;5134:540;;;5599:60;5623:5;5630:4;5636:2;5640:10;5652:6;5599:23;:60::i;:::-;2173:3517;;;;;;;:::o;6005:552:40:-;6135:143;6169:23;;;;:15;:23;:::i;:::-;6259:9;6207:49;6233:23;;;;6207;;;;:49;:::i;:::-;:61;;;;:::i;:::-;6135:12;:143::i;:::-;6288:18;6360:9;6309:48;6334:23;;;;6309:22;;;;:48;:::i;:::-;:60;;;;:::i;:::-;6288:81;-1:-1:-1;6442:5:40;6405:34;6418:21;;;;6288:81;6405:34;:::i;:::-;:42;;;;:::i;:::-;6392:55;;:10;:55;:::i;:::-;6379:68;-1:-1:-1;6457:93:40;6491:24;;;;;;;;:::i;:::-;6530:10;6457:12;:93::i;:::-;6125:432;6005:552;;:::o;6563:497::-;6690:119;6716:19;;;;;;;;:::i;:::-;6737:18;;;;:10;:18;:::i;:::-;6799:9;6757:39;6778:18;;;;6757;;;;:39;:::i;:::-;:51;;;;:::i;:::-;6690:25;:119::i;:::-;6820:18;6882:9;6841:38;6861:18;;;;6841:17;;;;:38;:::i;:::-;:50;;;;:::i;:::-;6820:71;-1:-1:-1;6959:5:40;6927:29;6940:16;;;;6820:71;6927:29;:::i;:::-;:37;;;;:::i;:::-;6914:50;;:10;:50;:::i;:::-;6901:63;-1:-1:-1;6974:79:40;7000:19;;;;;;;;:::i;:::-;7021;;;;;;;;:::i;:::-;7042:10;6974:25;:79::i;523:1861:41:-;675:17;;;814:5;858:142;887:25;;;;930:23;;;;971:15;858:11;:142::i;:::-;840:225;;-1:-1:-1;1041:1:41;;-1:-1:-1;1041:1:41;;-1:-1:-1;1041:1:41;;-1:-1:-1;1025:29:41;;840:225;1105:1;1079:15;:23;;;:27;1075:185;;;1126:15;1122:85;;;1168:24;;;;;;;;;;;;;;1122:85;-1:-1:-1;1236:1:41;;-1:-1:-1;1236:1:41;;-1:-1:-1;1236:1:41;;-1:-1:-1;1220:29:41;;1075:185;1282:105;;;;;;;;1312:15;1282:105;:::i;:::-;1341:36;1353:23;;;;:15;:23;:::i;1282:105::-;1398:31;1432:23;;;:12;:23;;;;;1270:117;;-1:-1:-1;1484:143:41;1270:117;1432:23;1576:4;1598:15;1484:18;:143::i;:::-;1466:225;;-1:-1:-1;1671:5:41;;-1:-1:-1;1671:5:41;;-1:-1:-1;1652:28:41;;-1:-1:-1;1652:28:41;1466:225;1706:23;;;;1701:186;;1745:131;1779:23;;;;:15;:23;:::i;:::-;1820:9;1847:15;;;;:5;:15;:::i;1745:131::-;1908:157;1932:10;1956:21;;;;;;;;:::i;:::-;1991:15;:26;;;2031:15;:24;;;1908:10;:157::i;:::-;2076:30;;2102:4;2195:34;;;;2219:10;2195:34;;;;;;;2263:15;2239:21;;;:39;2288:20;;;:31;;;2157:20;2329:21;;;:25;;;523:1861;;2102:4;;-1:-1:-1;2288:31:41;;-1:-1:-1;;;;523:1861:41:o;661:1134:40:-;856:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:19:40;891:15;;936:25;953:8;936:14;;;;:25;:::i;:::-;989:18;;;;972:14;;;:35;916:45;-1:-1:-1;1017:772:40;;;;1087:31;1104:14;;;;1087;;;;:31;:::i;:::-;1074:45;;:9;:45;:::i;:::-;1057:62;;:14;;;;:62;:::i;:::-;1047:72;-1:-1:-1;1175:30:40;1191:14;;;;1175:13;;;;:30;:::i;:::-;1163:43;;:9;:43;:::i;:::-;1147:59;;:13;;;;:59;:::i;:::-;1133:73;;1322:14;;;;1339:7;;1310:9;1302:5;1287:12;;;;1253:30;1269:14;;;;1253:13;;;;:30;:::i;:::-;1252:47;;;;:::i;:::-;:55;;;;:::i;:::-;:67;;;;:::i;:::-;1236:83;;:13;;;;:83;:::i;:::-;:100;;;;:::i;:::-;:110;;;;:::i;:::-;1220:13;;;:126;1375:14;;;;1360:12;;;:29;1017:772;;;1442:31;1459:14;;;;1442;;;;:31;:::i;:::-;1430:44;;:8;:44;:::i;:::-;1420:54;-1:-1:-1;1514:30:40;1530:14;;;;1514:13;;;;:30;:::i;:::-;1502:43;;:8;:43;:::i;:::-;1488:57;;;1624:14;;;;1641:7;;1616:5;;1587:26;;1601:12;;;;;1587:26;:::i;:::-;:34;;;;:::i;:::-;:51;;;;:::i;:::-;:61;;;;:::i;:::-;1571:13;;;:77;1662:117;;;;1708:6;:10;;;1693:3;:11;;:25;;;;;;;:::i;:::-;;;-1:-1:-1;1736:14:40;;;:28;;1754:10;;;;;1736:14;:28;;1754:10;;1736:28;:::i;:::-;;;-1:-1:-1;1662:117:40;881:914;;661:1134;;;;;;:::o;7066:882::-;7257:16;;7233:9;;7257:33;-1:-1:-1;7253:98:40;;;7313:27;;;;;;;;;;;;;;7253:98;7361:100;7395:23;;;;:15;:23;:::i;:::-;7433:8;:18;;;7361:12;:100::i;:::-;7472:102;7506:24;;;;;;;;:::i;:::-;7545:8;:19;;;7472:12;:102::i;:::-;7589:17;;;;:21;7585:162;;7626:110;7664:22;;;;;;;;:::i;:::-;7705:8;:17;;;7626:12;:110::i;:::-;7775:16;;7757:34;;;;:::i;:::-;;-1:-1:-1;7806:18:40;;7802:140;;7868:49;7889:10;7902:14;7868:12;:49::i;9569:1092:37:-;9863:59;9898:11;9911:10;9863:34;:59::i;:::-;9984:10;9980:675;;10098:6;10108:1;10098:11;10094:86;;10136:29;;;;;;;;;;;;;;10094:86;10259:51;10282:5;10289:4;10295:2;10299:10;10259:22;:51::i;9980:675::-;10409:235;10434:10;10462:11;10491:22;10531:5;10554:4;10576:2;10596:10;10624:6;10409:7;:235::i;7954:1787:40:-;8170:10;8155:12;8206:19;;;;;;;;:::i;:::-;8190:35;-1:-1:-1;8236:176:40;8190:35;8283:4;8301:19;;;;;;;;:::i;:::-;8334:8;:19;;;8367:10;8391:11;8236:14;:176::i;:::-;8427:17;;;;:21;8423:252;;8464:200;8496:5;8519:4;8541:17;;;;;;;;:::i;:::-;8576:8;:17;;;8611:10;8639:11;8464:14;:200::i;:::-;8741:17;;;;8719:19;;;;8700:16;;8685:12;;8741:17;8700:38;;;:::i;:::-;:58;;;;:::i;:::-;8685:73;;8780:8;:18;;;8772:4;:26;8768:967;;8814:202;8846:5;8869:4;8891:18;;;;:10;:18;:::i;:::-;8927:8;:18;;;8963:10;8991:11;8814:14;:202::i;:::-;9038:18;;;;9030:26;;;;:::i;:::-;;-1:-1:-1;9074:8:40;;9070:258;;9102:211;9138:5;9165:4;9199;9226;9252:10;9284:11;9102:14;:211::i;:::-;9341:28;9357:11;9341:15;:28::i;8768:967::-;9400:188;9432:5;9455:4;9477:18;;;;:10;:18;:::i;:::-;9513:4;9535:10;9563:11;9400:14;:188::i;:::-;9602:28;9618:11;9602:15;:28::i;:::-;9645:79;9671:5;9678:18;;;;:10;:18;:::i;:::-;9719:4;9698:8;:18;;;:25;;;;:::i;2390:2022:41:-;2588:17;;;;2727:95;;;;;;;;2757:10;2727:95;:::i;:::-;2781:31;2793:18;;;;:10;:18;:::i;2727:95::-;2833:31;2867:23;;;:12;:23;;;;;2905;;2715:107;;-1:-1:-1;2867:23:41;2905;;2900:201;;2948:15;2944:89;;;2990:28;;;;;;;;1955:25:54;;;1928:18;;2990:28:41;1809:177:54;2944:89:41;-1:-1:-1;3073:1:41;;-1:-1:-1;3073:1:41;;-1:-1:-1;3073:1:41;;-1:-1:-1;3046:44:41;;2900:201;3129:144;3165:9;3192:11;3221:5;3244:15;3129:18;:144::i;:::-;3111:242;;-1:-1:-1;3325:1:41;;-1:-1:-1;3325:1:41;;-1:-1:-1;3325:1:41;;-1:-1:-1;3298:44:41;;3111:242;3402:10;:18;;;3391:8;3367:11;:21;;;:32;;;;:::i;:::-;:53;:69;;;;3435:1;3424:8;:12;3367:69;3363:256;;;3456:15;3452:99;;;3498:38;;;;;;;;1955:25:54;;;1928:18;;3498:38:41;1809:177:54;3363:256:41;3703:15;3681:10;:19;;;3657:11;:21;;;:43;;;;:::i;:::-;3633:11;:21;;;:67;;;;:::i;:::-;:85;3629:257;;;3738:15;3734:84;;;3780:23;;;;;;;;1955:25:54;;;1928:18;;3780:23:41;1809:177:54;3629:257:41;3921:8;3896:11;:21;;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;;3943:21:41;;;;3968:18;;;;3943:43;;3939:401;;4002:30;;;;;;;;:23;4089:20;;;4028:4;;-1:-1:-1;4078:32:41;;:10;:32::i;:::-;3939:401;;;4171:21;;4210:20;;;;4272:21;;;;4141:188;;4171:21;;;;;;4210:20;4272:43;;4171:21;4296:19;;;;4272:43;:::i;:::-;4248:11;:21;;;:67;;;;:::i;:::-;4141:12;:188::i;:::-;4384:21;;;;;;;-1:-1:-1;4358:4:41;;-1:-1:-1;2390:2022:41;;;;;;;;:::o;3281:208:38:-;3332:7;3402:9;3385:13;:26;:97;;3458:24;1203:187:32;;;1231:24;1203:187;;;12904:25:54;1273:10:32;12945:18:54;;;12938:34;;;;1301:13:32;12988:18:54;;;12981:34;1332:13:32;13031:18:54;;;13024:34;1371:4:32;13074:19:54;;;13067:84;1154:7:32;;12876:19:54;;1203:187:32;;;;;;;;;;;;1180:220;;;;;;1173:227;;1097:310;;3385:97:38;-1:-1:-1;3426:17:38;;3281:208::o;1066:9919:44:-;1284:12;1484:1;1481;1474:12;1556:5;1652:9;1646:16;1954:7;1943:9;1939:23;2096:22;2090:29;2563:15;2546;2542:37;2655:19;2824:1;2815:7;2812:14;2802:3382;;2975:24;2964:9;2960:40;2929:93;3407:24;3396:9;3392:40;3386:47;3359:1;3329:126;3324:131;;3554:7;3551:820;;;3803:17;3754:18;3744:8;3740:33;3707:139;3702:144;;4265:28;4213:18;4176:147;4121:24;4110:9;4106:40;4070:279;3551:820;4556:1;4545:9;4538:20;4768:6;4744:22;4737:38;5430:7;5365:1;5284:19;5203:22;5123:20;5088:5;5048:451;-1:-1:-1;5604:57:44;;;5739:34;;;5901:24;5886:40;;5854:138;-1:-1:-1;;6158:8:44;2802:3382;6453:27;;6482:13;;;6449:47;;-1:-1:-1;6449:47:44;;-1:-1:-1;6602:3944:44;;6921:46;6877:22;6849:136;7156:48;7125:9;7100:122;7362:11;7356:18;7545:46;7514:9;7489:120;7745:9;7739:16;7868:33;7855:11;7848:54;7981:6;7970:9;7963:25;8396:7;8373:1;8285:44;8244:15;8215:136;8182:11;8154:6;8127:5;8095:326;8084:337;;8518:7;8515:1692;;;8702:33;8698:1;8692:8;8689:47;8679:1510;;8857:6;8845:19;8842:254;;;8960:36;8957:1;8950:47;9036:33;9033:1;9026:44;8842:254;9233:1;9215:15;9198;9194:37;9191:44;9188:292;;;9352:32;9349:1;9342:43;9424:29;9421:1;9414:40;9188:292;9604:42;9601:1;9596:51;9557:405;;9774:29;9771:1;9764:40;9868:1;9840:26;9833:37;9909:26;9906:1;9899:37;9557:405;10075:29;10072:1;10065:40;10140:26;10137:1;10130:37;8679:1510;10341:57;;;10415:52;;;;10484:48;;6602:3944;;;;;10604:7;10599:380;;10692:34;:32;:34::i;:::-;10857:36;10854:1;10847:47;10921:33;10918:1;10911:44;974:110:43;1030:47;;;;;;;;1955:25:54;;;1051:11:43;1030:38;;;;;1928:18:54;;1030:47:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:110;:::o;17154:1355:37:-;1774:21:38;1768:28;;1392:19;1983:18;1980:41;17371:15:37;1970:52:38;;;2117:7;2110:27;;;1537;2232:41;;2660:31;2539:28;2445:264;2899:48;;;;2800:23;2379:458;17371:44:37;;17426:12;17448:13;17594:1;17591;17584:12;17872:7;17853:1;17823:12;17791:14;17772:1;17747:7;17724:5;17702:191;17691:202;;17995:1;17989:8;17979:18;;18055:7;18050:254;;18153:34;:32;:34::i;:::-;18264:29;;;;;5932:42:54;5920:55;;18264:29:37;;;5902:74:54;5875:18;;18264:29:37;5756:226:54;18050:254:37;18391:43;;;18401:33;18391:43;18387:116;;18457:35;;;;;;;;11219:25:54;;;11292:42;11280:55;;11260:18;;;11253:83;11192:18;;18457:35:37;11045:297:54;18387:116:37;17293:1216;;;17154:1355;;;:::o;21079:4914:45:-;21398:5;21386:18;21376:254;;21457:26;21431:24;21424:60;21536:5;21508:26;21501:41;21592:23;21566:24;21559:57;21376:254;21828:21;21822:28;21974:29;21945:27;21938:66;22054:4;22024:28;22017:42;22107:2;22079:26;22072:38;22158:10;22130:26;22123:46;22448:1;22429;22385:26;22340:27;22321:1;22298:5;22275;22253:210;22528:7;22518:3268;;22679:16;22676:2328;;;23121:7;23081:13;23063:16;23059:36;23030:120;23432:7;23420:10;23416:24;23560:15;23547:11;23543:33;23689:10;23672:15;23669:31;23666:769;;;23880:32;;;23950:11;23839:156;24297:26;24194:27;;;24115:37;;;24070:189;24029:328;23802:585;23735:678;23666:769;24679:5;24662:14;24656:4;24652:25;24649:36;24646:340;;;24814:16;24811:1;24808;24793:38;24947:16;24944:1;24937:27;24646:340;;;;22676:2328;25179:43;25116:41;25088:152;25309:5;25264:43;25257:58;25383:4;25339:42;25332:56;25454:2;25412:40;25405:52;25523:10;25481:40;25474:60;25604:1;25558:44;25551:55;25714:40;25651:41;25623:149;22518:3268;-1:-1:-1;25864:21:45;25857:41;-1:-1:-1;;25975:1:45;25965:8;25958:19;-1:-1:-1;;21079:4914:45:o;26641:5620::-;26986:5;26974:18;26964:254;;27045:26;27019:24;27012:60;27124:5;27096:26;27089:41;27180:23;27154:24;27147:57;26964:254;27410:21;27404:28;27467:8;27461:15;27511:8;27505:15;27555:8;27549:15;27730:34;27680:32;27656:122;27833:4;27798:33;27791:47;27891:2;27858:31;27851:43;27947:10;27914:31;27907:51;28015:6;27978:35;27971:51;28117:43;28059:40;28035:139;28236:1;28194:40;28187:51;28527:1;28508;28459:31;28409:32;28390:1;28367:5;28344;28322:220;28607:7;28597:3273;;28758:16;28755:2328;;;29200:7;29160:13;29142:16;29138:36;29109:120;29511:7;29499:10;29495:24;29639:15;29626:11;29622:33;29768:10;29751:15;29748:31;29745:769;;;29959:32;;;30029:11;29918:156;30376:26;30273:27;;;30194:37;;;30149:189;30108:328;29881:585;29814:678;29745:769;30758:5;30741:14;30735:4;30731:25;30728:36;30725:340;;;30893:16;30890:1;30887;30872:38;31026:16;31023:1;31016:27;30725:340;;;;28755:2328;31258:43;31195:41;31167:152;31388:5;31343:43;31336:58;31462:4;31418:42;31411:56;31533:2;31491:40;31484:52;31602:10;31560:40;31553:60;31683:6;31637:44;31630:60;31798:40;31735:41;31707:149;28597:3273;-1:-1:-1;31891:8:45;31884:26;;;;31952:8;31945:26;32013:8;32006:26;32132:21;32125:41;-1:-1:-1;;32243:1:45;-1:-1:-1;32226:19:45;-1:-1:-1;;;26641:5620:45:o;5921:742:37:-;6054:28;6075:6;6054:20;:28::i;:::-;6174:12;6330:1;6327;6324;6321;6313:6;6309:2;6302:5;6297:35;6286:46;;6389:7;6384:273;;6488:34;:32;:34::i;:::-;6607:39;;;;;11559:42:54;11547:55;;6607:39:37;;;11529:74:54;11619:18;;;11612:34;;;11502:18;;6607:39:37;11347:305:54;10946:9529:45;11354:21;11348:28;11498:24;11474:22;11467:56;11566:2;11543:21;11536:33;11616:6;11589:25;11582:41;12302:7;12283:1;12244:21;12204:22;12185:1;12162:5;12139;12117:206;12800:10;12747:16;12740:24;12714:2;12696:16;12693:24;12689:1;12685;12679:8;12676:15;12672:46;12648:134;12432:392;13185:16;13178:24;13171:32;13162:7;13158:46;13148:7120;;13506:7;13496:5;13484:18;13477:26;13470:34;13466:48;13456:6592;;13595:7;13585:6142;;13694:10;13684:4764;;13884:16;13881:3322;;;14451:7;14399:13;14381:16;14377:36;14336:156;14857:7;14845:10;14841:24;15009:15;14996:11;14992:33;15162:10;15145:15;15142:31;15139:1293;;;15413:186;;;15649:11;15360:346;16246:26;16119:27;;;15862:203;;;15805:391;15752:566;15311:1049;15220:1178;15139:1293;16724:5;16707:14;16701:4;16697:25;16694:36;16691:482;;;16922:16;16919:1;16916;16901:38;17122:16;17119:1;17112:27;16691:482;;;;13881:3322;17426:43;17351:41;17311:188;17645:5;17568:43;17528:152;17825:9;17749:42;17709:155;17942:2;17900:40;17893:52;18023:1;17981:40;17974:51;18172:6;18094:44;18054:154;18352:40;18277:41;18237:185;13684:4764;18737:49;18660:47;18624:188;18952:5;18873:49;18837:146;19122:9;19044:48;19008:149;19294:2;19218:46;19182:140;19463:6;19383:50;19347:148;19633:46;19556:47;19520:185;13585:6142;19863:26;19837:24;19830:60;19946:5;19918:26;19911:41;20006:23;19980:24;19973:57;13456:6592;-1:-1:-1;;20346:21:45;20339:41;-1:-1:-1;;20457:1:45;20447:8;20440:19;-1:-1:-1;10946:9529:45:o;1338:627:47:-;1470:10;1587:15;1575:9;:27;:57;;;;1617:15;1606:7;:26;;1575:57;1571:314;;;1725:15;1721:74;;;1767:13;;;;;;;;;;;;;;1721:74;-1:-1:-1;1869:5:47;1862:12;;1571:314;-1:-1:-1;1954:4:47;1338:627;;;;;:::o;450:358:43:-;624:72;;;;;671:4;624:72;;;11920:34:54;624:38:43;11990:15:54;;;11970:18;;;11963:43;12022:18;;;12015:34;;;591:7:43;;;;645:11;624:38;;;;11832:18:54;;624:72:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;610:86;-1:-1:-1;706:30:43;716:11;706:30;;610:86;742:2;753:26;764:15;753:8;:26;:::i;:::-;706:75;;;;;;;;;;;;;12449:25:54;;;;12522:42;12510:55;;;12490:18;;;12483:83;12614:18;12602:31;12582:18;;;12575:59;12422:18;;706:75:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;798:3:43;;450:358;-1:-1:-1;;;;;;;;450:358:43:o;13407:458:37:-;13604:29;13636:38;13662:11;19234:26;19217:44;19194:81;;18927:364;13636:38;13604:70;;13794:10;13769:21;:35;13765:94;;13820:28;13836:11;13820:15;:28::i;20287:2154::-;20547:16;14291:4:33;20721:11:37;:18;:41;20717:1009;;-1:-1:-1;20916:16:37;20896:37;;;21000:26;20983:44;;;20976:64;;;20822:33;21064:42;;;21057:60;;;;21179:28;21162:46;;21134:138;20789:1;21313:28;21296:46;;21289:64;;;20717:1009;;;-1:-1:-1;21550:28:37;21533:46;;21527:53;;21602:1;21502:119;21638:64;;;;20717:1009;21903:36;21858:25;21848:8;21844:40;21831:11;21827:58;21806:147;21986:8;21973:11;21966:29;22065:5;22032:30;22019:11;22015:48;22008:63;22140:4;22108:29;22095:11;22091:47;22084:61;22212:2;22182:27;22169:11;22165:45;22158:57;22323:10;22269:35;22256:11;22252:53;22228:119;22418:6;22384:31;22371:11;22367:49;22360:65;;21773:662;20287:2154;;;;;;;;:::o;7599:969::-;7855:28;7876:6;7855:20;:28::i;:::-;7959:59;7994:11;8007:10;7959:34;:59::i;:::-;8080:10;8076:486;;8172:46;8194:5;8201:4;8207:2;8211:6;8172:21;:46::i;:::-;8076:486;;;8317:234;8342:10;8370:11;8399:21;8438:5;8461:4;8483:2;8511:1;8531:6;8317:7;:234::i;14229:437::-;14333:4:33;14354:11:37;:18;:38;14350:75;;14229:437;:::o;14350:75::-;14501:29;14533:38;14559:11;19234:26;19217:44;19194:81;;18927:364;14533:38;14501:70;;14615:44;14624:21;14647:11;14615:8;:44::i;:::-;14289:377;14229:437;:::o;814:154:43:-;901:60;;;;;;;;12449:25:54;;;901:30:43;12510:55:54;;;12490:18;;;12483:83;12614:18;12602:31;;12582:18;;;12575:59;911:11:43;901:30;;;;12422:18:54;;901:60:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:2237:39;1554:16;1551:2017;;;1920:7;1884:13;1866:16;1862:36;1837:108;2229:7;2205:21;2199:28;2195:42;2349:15;2336:11;2332:33;2470:10;2453:15;2450:31;2447:607;;;2608:32;;;2642:11;2604:50;2932:26;2837:27;;;2762:37;;;2721:177;2684:304;2571:443;2512:524;2447:607;3263:5;3246:14;3240:4;3236:25;3233:36;3230:324;;;3390:16;3387:1;3384;3369:38;3519:16;3516:1;3509:27;463:203:30;596:6;606:1;596:11;592:68;;630:19;;;;;;;;;;;;;;592:68;463:203;:::o;1325:9615:45:-;1751:21;1745:28;1899;1871:26;1864:64;1977:4;1948:27;1941:41;2029:2;2002:25;1995:37;2083:6;2052:29;2045:45;2777:7;2758:1;2715:25;2671:26;2652:1;2629:5;2606;2584:214;3275:10;3222:16;3215:24;3189:2;3171:16;3168:24;3164:1;3160;3154:8;3151:15;3147:46;3123:134;2907:392;3660:16;3653:24;3646:32;3637:7;3633:46;3623:7110;;3981:7;3971:5;3959:18;3952:26;3945:34;3941:48;3931:6582;;4070:7;4060:6132;;4169:10;4159:4759;;4359:16;4356:3322;;;4926:7;4874:13;4856:16;4852:36;4811:156;5332:7;5320:10;5316:24;5484:15;5471:11;5467:33;5637:10;5620:15;5617:31;5614:1293;;;5888:186;;;6124:11;5835:346;6721:26;6594:27;;;6337:203;;;6280:391;6227:566;5786:1049;5695:1178;5614:1293;7199:5;7182:14;7176:4;7172:25;7169:36;7166:482;;;7397:16;7394:1;7391;7376:38;7597:16;7594:1;7587:27;7166:482;;;;4356:3322;7901:43;7826:41;7786:188;8120:5;8043:43;8003:152;8300:4;8224:42;8184:150;8412:2;8370:40;8363:52;8493:1;8451:40;8444:51;8642:6;8564:44;8524:154;8822:40;8747:41;8707:185;4159:4759;9207:49;9130:47;9094:188;9422:5;9343:49;9307:146;9592:4;9514:48;9478:144;9759:2;9683:46;9647:140;9928:6;9848:50;9812:148;10098:46;10021:47;9985:185;4060:6132;10328:26;10302:24;10295:60;10411:5;10383:26;10376:41;10471:23;10445:24;10438:57;3931:6582;-1:-1:-1;;10811:21:45;10804:41;-1:-1:-1;;10922:1:45;10912:8;10905:19;-1:-1:-1;;1325:9615:45:o;15371:1113:37:-;16045:28;16028:46;;16022:53;15859:8;15842:26;;;16097:25;15997:143;15951:28;15930:224;16255:66;16280:10;15842:26;15930:224;16255:24;:66::i;:::-;-1:-1:-1;;16448:19:37;16428:40;;-1:-1:-1;15371:1113:37:o;14:640:54:-;125:6;133;186:2;174:9;165:7;161:23;157:32;154:52;;;202:1;199;192:12;154:52;242:9;229:23;271:18;312:2;304:6;301:14;298:34;;;328:1;325;318:12;298:34;366:6;355:9;351:22;341:32;;411:7;404:4;400:2;396:13;392:27;382:55;;433:1;430;423:12;382:55;473:2;460:16;499:2;491:6;488:14;485:34;;;515:1;512;505:12;485:34;568:7;563:2;553:6;550:1;546:14;542:2;538:23;534:32;531:45;528:65;;;589:1;586;579:12;528:65;620:2;612:11;;;;;642:6;;-1:-1:-1;14:640:54;;-1:-1:-1;;;;14:640:54:o;851:180::-;910:6;963:2;951:9;942:7;938:23;934:32;931:52;;;979:1;976;969:12;931:52;-1:-1:-1;1002:23:54;;851:180;-1:-1:-1;851:180:54:o;1991:655::-;2112:6;2120;2173:2;2161:9;2152:7;2148:23;2144:32;2141:52;;;2189:1;2186;2179:12;2141:52;2229:9;2216:23;2258:18;2299:2;2291:6;2288:14;2285:34;;;2315:1;2312;2305:12;2285:34;2353:6;2342:9;2338:22;2328:32;;2398:7;2391:4;2387:2;2383:13;2379:27;2369:55;;2420:1;2417;2410:12;2369:55;2460:2;2447:16;2486:2;2478:6;2475:14;2472:34;;;2502:1;2499;2492:12;2472:34;2560:7;2555:2;2545:6;2537;2533:19;2529:2;2525:28;2521:37;2518:50;2515:70;;;2581:1;2578;2571:12;2651:164;2719:5;2764:3;2755:6;2750:3;2746:16;2742:26;2739:46;;;2781:1;2778;2771:12;2739:46;-1:-1:-1;2803:6:54;2651:164;-1:-1:-1;2651:164:54:o;2820:255::-;2914:6;2967:3;2955:9;2946:7;2942:23;2938:33;2935:53;;;2984:1;2981;2974:12;2935:53;3007:62;3061:7;3050:9;3007:62;:::i;3080:164::-;3148:5;3193:3;3184:6;3179:3;3175:16;3171:26;3168:46;;;3210:1;3207;3200:12;3249:255;3343:6;3396:3;3384:9;3375:7;3371:23;3367:33;3364:53;;;3413:1;3410;3403:12;3364:53;3436:62;3490:7;3479:9;3436:62;:::i;3691:430::-;3784:6;3792;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;3901:9;3888:23;3934:18;3926:6;3923:30;3920:50;;;3966:1;3963;3956:12;3920:50;3989:75;4056:7;4047:6;4036:9;4032:22;3989:75;:::i;:::-;3979:85;4111:2;4096:18;;;;4083:32;;-1:-1:-1;;;;3691:430:54:o;4126:393::-;4238:6;4246;4254;4307:3;4295:9;4286:7;4282:23;4278:33;4275:53;;;4324:1;4321;4314:12;4275:53;4347:62;4401:7;4390:9;4347:62;:::i;:::-;4337:72;4456:3;4441:19;;4428:33;;-1:-1:-1;4508:3:54;4493:19;;;4480:33;;4126:393;-1:-1:-1;;;4126:393:54:o;4524:196::-;4592:20;;4652:42;4641:54;;4631:65;;4621:93;;4710:1;4707;4700:12;4621:93;4524:196;;;:::o;4725:186::-;4784:6;4837:2;4825:9;4816:7;4812:23;4808:32;4805:52;;;4853:1;4850;4843:12;4805:52;4876:29;4895:9;4876:29;:::i;4916:835::-;5121:2;5110:9;5103:21;5084:4;5153:6;5147:13;5196:6;5191:2;5180:9;5176:18;5169:34;5221:1;5231:145;5245:6;5242:1;5239:13;5231:145;;;5359:4;5343:14;;;5339:25;;5333:32;5327:3;5308:17;;;5304:27;5297:69;5260:12;5231:145;;;5394:6;5391:1;5388:13;5385:92;;;5465:1;5459:3;5450:6;5439:9;5435:22;5431:32;5424:43;5385:92;;5604:3;5534:66;5529:2;5521:6;5517:15;5513:88;5502:9;5498:104;5494:114;5486:122;;;5646:6;5639:4;5628:9;5624:20;5617:36;5701:42;5693:6;5689:55;5684:2;5673:9;5669:18;5662:83;4916:835;;;;;;:::o;5987:184::-;6039:77;6036:1;6029:88;6136:4;6133:1;6126:15;6160:4;6157:1;6150:15;6176:381;6267:4;6325:11;6312:25;6415:66;6404:8;6388:14;6384:29;6380:102;6360:18;6356:127;6346:155;;6497:1;6494;6487:12;6346:155;6518:33;;;;;6176:381;-1:-1:-1;;6176:381:54:o;6562:580::-;6639:4;6645:6;6705:11;6692:25;6795:66;6784:8;6768:14;6764:29;6760:102;6740:18;6736:127;6726:155;;6877:1;6874;6867:12;6726:155;6904:33;;6956:20;;;-1:-1:-1;6999:18:54;6988:30;;6985:50;;;7031:1;7028;7021:12;6985:50;7064:4;7052:17;;-1:-1:-1;7095:14:54;7091:27;;;7081:38;;7078:58;;;7132:1;7129;7122:12;7078:58;6562:580;;;;;:::o;7923:401::-;7990:2;7984:9;8032:3;8020:16;;8066:18;8051:34;;8087:22;;;8048:62;8045:242;;;8143:77;8140:1;8133:88;8244:4;8241:1;8234:15;8272:4;8269:1;8262:15;8045:242;8303:2;8296:22;7923:401;:::o;8329:1558::-;8421:6;8474:3;8462:9;8453:7;8449:23;8445:33;8442:53;;;8491:1;8488;8481:12;8442:53;8517:17;;:::i;:::-;8557:29;8576:9;8557:29;:::i;:::-;8550:5;8543:44;8619:38;8653:2;8642:9;8638:18;8619:38;:::i;:::-;8614:2;8607:5;8603:14;8596:62;8718:2;8707:9;8703:18;8690:32;8685:2;8678:5;8674:14;8667:56;8755:38;8789:2;8778:9;8774:18;8755:38;:::i;:::-;8750:2;8743:5;8739:14;8732:62;8827:39;8861:3;8850:9;8846:19;8827:39;:::i;:::-;8821:3;8814:5;8810:15;8803:64;8900:39;8934:3;8923:9;8919:19;8900:39;:::i;:::-;8894:3;8883:15;;8876:64;9001:3;8986:19;;;8973:33;8956:15;;;8949:58;9068:3;9053:19;;;9040:33;9023:15;;;9016:58;9093:3;9141:18;;;9128:32;9112:14;;;9105:56;9180:3;9228:18;;;9215:32;9199:14;;;9192:56;9267:3;9315:18;;;9302:32;9286:14;;;9279:56;9354:3;9402:18;;;9389:32;9373:14;;;9366:56;9441:3;9489:18;;;9476:32;9460:14;;;9453:56;9528:3;9576:18;;;9563:32;9547:14;;;9540:56;9615:3;9663:18;;;9650:32;9634:14;;;9627:56;9702:3;9750:18;;;9737:32;9721:14;;;9714:56;9789:3;9837:18;;;9824:32;9808:14;;;9801:56;;;;-1:-1:-1;8887:5:54;8329:1558;-1:-1:-1;8329:1558:54:o;9892:184::-;9944:77;9941:1;9934:88;10041:4;10038:1;10031:15;10065:4;10062:1;10055:15;10081:228;10121:7;10247:1;10179:66;10175:74;10172:1;10169:81;10164:1;10157:9;10150:17;10146:105;10143:131;;;10254:18;;:::i;:::-;-1:-1:-1;10294:9:54;;10081:228::o;10314:128::-;10354:3;10385:1;10381:6;10378:1;10375:13;10372:39;;;10391:18;;:::i;:::-;-1:-1:-1;10427:9:54;;10314:128::o;10447:184::-;10499:77;10496:1;10489:88;10596:4;10593:1;10586:15;10620:4;10617:1;10610:15;10636:274;10676:1;10702;10692:189;;10737:77;10734:1;10727:88;10838:4;10835:1;10828:15;10866:4;10863:1;10856:15;10692:189;-1:-1:-1;10895:9:54;;10636:274::o;10915:125::-;10955:4;10983:1;10980;10977:8;10974:34;;;10988:18;;:::i;:::-;-1:-1:-1;11025:9:54;;10915:125::o;12060:184::-;12130:6;12183:2;12171:9;12162:7;12158:23;12154:32;12151:52;;;12199:1;12196;12189:12;12151:52;-1:-1:-1;12222:16:54;;12060:184;-1:-1:-1;12060:184:54:o"},"gasEstimates":{"creation":{"codeDepositCost":"2581000","executionCost":"infinite","totalCost":"infinite"},"external":{"breakOrder((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32))":"infinite","cancel((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256)[])":"infinite","fulfillOrder(((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes),bytes32)":"infinite","getCounter(address)":"2569","getOrderHash((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256))":"infinite","getOrderStatus(bytes32)":"9212","incrementCounter()":"28150","information()":"infinite","repayOrder((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes32,uint256)":"infinite","shadowToken()":"infinite","validate(((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes)[])":"infinite"},"internal":{"_nameString()":"infinite"}},"methodIdentifiers":{"breakOrder((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32))":"a3210e7c","cancel((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256)[])":"9432cc1d","fulfillOrder(((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes),bytes32)":"be92d18e","getCounter(address)":"f07ec373","getOrderHash((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256))":"b86ae9e1","getOrderStatus(bytes32)":"46423aa7","incrementCounter()":"5b34b966","information()":"f47b7740","repayOrder((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes32,uint256)":"d9e53411","shadowToken()":"ffc5d97a","validate(((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes)[])":"22378003"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"shadowToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNativeOfferItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrderParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderInvalidRepayParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotValidated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"CounterIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderBroken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"name\":\"OrderRepaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"breakOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"broken\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"cancel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"cancelled\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"}],\"name\":\"fulfillOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"getCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"getOrderHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"getOrderStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidated\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isCancelled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isFinalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isBroken\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidTimes\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"information\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"}],\"name\":\"repayOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"repaid\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shadowToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"validate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"validated\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidNativeOfferItem()\":[{\"details\":\"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders.\"}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BNPL.sol\":\"BNPL\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/BNPL.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.13;\\n\\nimport {\\n    Consideration\\n} from \\\"./lib/Consideration.sol\\\";\\n\\ncontract BNPL is Consideration {\\n\\n    constructor(address conduitController, address shadowToken) Consideration(conduitController, shadowToken) {}\\n\\n    function _nameString() internal pure override returns (string memory) {\\n        return \\\"BNPL\\\";\\n    }\\n}\",\"keccak256\":\"0x8bcb0c2407bca625c28866e4d4b4866853bdddc21282ca8a6d87b22eca0414ee\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ConduitItemType {\\n    NATIVE, // unused\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\\n\",\"keccak256\":\"0x1a84850bbff4b820573334c70ee0797462f20fd8c9b86fdebeacc85ecb1963a6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitItemType } from \\\"./ConduitEnums.sol\\\";\\n\\nstruct ConduitTransfer {\\n    ConduitItemType itemType;\\n    address token;\\n    address from;\\n    address to;\\n    uint256 identifier;\\n    uint256 amount;\\n}\\n\\nstruct ConduitBatch1155Transfer {\\n    address token;\\n    address from;\\n    address to;\\n    uint256[] ids;\\n    uint256[] amounts;\\n}\\n\",\"keccak256\":\"0xe3e87c74dd79c59293e49b7236cc7befdc19886bb79af5fe53208b1772fd24f9\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title ConduitInterface\\n * @author 0age\\n * @notice ConduitInterface contains all external function interfaces, events,\\n *         and errors for conduit contracts.\\n */\\ninterface ConduitInterface {\\n    /**\\n     * @dev Revert with an error when attempting to execute transfers using a\\n     *      caller that does not have an open channel.\\n     */\\n    error ChannelClosed(address channel);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update a channel to the\\n     *      current status of that channel.\\n     */\\n    error ChannelStatusAlreadySet(address channel, bool isOpen);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute a transfer for an\\n     *      item that does not have an ERC20/721/1155 item type.\\n     */\\n    error InvalidItemType();\\n\\n    /**\\n     * @dev Revert with an error when attempting to update the status of a\\n     *      channel from a caller that is not the conduit controller.\\n     */\\n    error InvalidController();\\n\\n    /**\\n     * @dev Emit an event whenever a channel is opened or closed.\\n     *\\n     * @param channel The channel that has been updated.\\n     * @param open    A boolean indicating whether the conduit is open or not.\\n     */\\n    event ChannelUpdated(address indexed channel, bool open);\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\\n     *         open channel can call this function.\\n     *\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\\n     *         a caller with an open channel can call this function.\\n     *\\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external;\\n}\\n\",\"keccak256\":\"0x628e23ec7e820e8ac59c0999211bb022bb5c5581a5bc6bd39465d6419d7d85b5\",\"license\":\"MIT\"},\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConsiderationEventsAndErrors\\n * @author 0age\\n * @notice ConsiderationEventsAndErrors contains all events and errors.\\n */\\ninterface ConsiderationEventsAndErrors {\\n\\n    event OrderFulfilled(\\n        bytes32 orderHash,\\n        address indexed offerer,\\n        uint256 shadowId\\n    );\\n\\n    event OrderRepaid(\\n        bytes32 orderHash,\\n        uint256 payTimes,\\n        bool finalized\\n    );\\n\\n    event OrderBroken(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is successfully cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     * @param offerer   The offerer of the cancelled order.\\n     */\\n    event OrderCancelled(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is explicitly validated. Note that\\n     *      this event will not be emitted on partial fills even though they do\\n     *      validate the order as part of partial fulfillment.\\n     *\\n     * @param orderHash The hash of the validated order.\\n     * @param offerer   The offerer of the validated order.\\n     */\\n    event OrderValidated(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\\n     *\\n     * @param newCounter The new counter for the offerer.\\n     * @param offerer  The offerer in question.\\n     */\\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has\\n     *      already been fully filled.\\n     *\\n     * @param orderHash The order hash on which a fill was attempted.\\n     */\\n    error OrderAlreadyFilled(bytes32 orderHash);\\n\\n    error OrderAlreadyFinalized(bytes32 orderHash);\\n\\n    error OrderAlreadyStarted(bytes32 orderHash);\\n\\n    error OrderNotStarted(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order outside the\\n     *      specified start time and end time.\\n     */\\n    error InvalidTime();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order referencing an\\n     *      invalid conduit (i.e. one that has not been deployed).\\n     */\\n    error InvalidConduit(bytes32 conduitKey, address conduit);\\n\\n    /**\\n     * @dev Revert with an error when an order is supplied for fulfillment with\\n     *      a consideration array that is shorter than the original array.\\n     */\\n    error MissingOriginalConsiderationItems();\\n\\n    /**\\n     * @dev Revert with an error when a call to a conduit fails with revert data\\n     *      that is too expensive to return.\\n     */\\n    error InvalidCallToConduit(address conduit);\\n\\n    /**\\n     * @dev Revert with an error if a consideration amount has not been fully\\n     *      zeroed out after applying all fulfillments.\\n     *\\n     * @param orderIndex         The index of the order with the consideration\\n     *                           item with a shortfall.\\n     * @param considerationIndex The index of the consideration item on the\\n     *                           order.\\n     * @param shortfallAmount    The unfulfilled consideration amount.\\n     */\\n    error ConsiderationNotMet(\\n        uint256 orderIndex,\\n        uint256 considerationIndex,\\n        uint256 shortfallAmount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when insufficient ether is supplied as part of\\n     *      msg.value when fulfilling orders.\\n     */\\n    error InsufficientEtherSupplied();\\n\\n    /**\\n     * @dev Revert with an error when an ether transfer reverts.\\n     */\\n    error EtherTransferGenericFailure(address account, uint256 amount);\\n\\n    /**\\n     * @dev Revert with an error when a partial fill is attempted on an order\\n     *      that does not specify partial fill support in its order type.\\n     */\\n    error PartialFillsNotEnabledForOrder();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has been\\n     *      cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     */\\n    error OrderIsCancelled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order that has\\n     *      been partially filled.\\n     *\\n     * @param orderHash The hash of the partially used order.\\n     */\\n    error OrderPartiallyFilled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel an order as a caller\\n     *      other than the indicated offerer or zone.\\n     */\\n    error InvalidCanceller();\\n\\n    /**\\n     * @dev Revert with an error when supplying a fraction with a value of zero\\n     *      for the numerator or denominator, or one where the numerator exceeds\\n     *      the denominator.\\n     */\\n    error BadFraction();\\n\\n    /**\\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\\n     *      non-payable basic order route or does not supply any callvalue to a\\n     *      payable basic order route.\\n     */\\n    error InvalidMsgValue(uint256 value);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order using\\n     *      calldata not produced by default ABI encoding.\\n     */\\n    error InvalidBasicOrderParameterEncoding();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill any number of\\n     *      available orders when none are fulfillable.\\n     */\\n    error NoSpecifiedOrdersAvailable();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order with an\\n     *      offer for ETH outside of matching orders.\\n     */\\n    error InvalidNativeOfferItem();\\n\\n    error OrderNotValidated(bytes32 orderHash);\\n\\n    error OrderExpired(bytes32 orderHash);\\n\\n    error OrderNotExpired(bytes32 orderHash);\\n\\n    error OrderInvalidRepayParameters(bytes32 orderHash);\\n\\n    error InvalidOrderParameters();\\n}\\n\",\"keccak256\":\"0x71a166db3dbdc44218081f02a9fe0de3cf2d3d9680ac88ef68c0b376eb1a3e97\",\"license\":\"MIT\"},\"contracts/interfaces/EIP1271Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface EIP1271Interface {\\n    function isValidSignature(bytes32 digest, bytes calldata signature)\\n        external\\n        view\\n        returns (bytes4);\\n}\",\"keccak256\":\"0xba82a40106e4565fda2909937d8ab23dc45622fead50d439ee09994d678828e0\",\"license\":\"MIT\"},\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"},\"contracts/interfaces/SignatureVerificationErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title SignatureVerificationErrors\\n * @author 0age\\n * @notice SignatureVerificationErrors contains all errors related to signature\\n *         verification.\\n */\\ninterface SignatureVerificationErrors {\\n    /**\\n     * @dev Revert with an error when a signature that does not contain a v\\n     *      value of 27 or 28 has been supplied.\\n     *\\n     * @param v The invalid v value.\\n     */\\n    error BadSignatureV(uint8 v);\\n\\n    /**\\n     * @dev Revert with an error when the signer recovered by the supplied\\n     *      signature does not match the offerer or an allowed EIP-1271 signer\\n     *      as specified by the offerer in the event they are a contract.\\n     */\\n    error InvalidSigner();\\n\\n    /**\\n     * @dev Revert with an error when a signer cannot be recovered from the\\n     *      supplied signature.\\n     */\\n    error InvalidSignature();\\n\\n    /**\\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\\n     */\\n    error BadContractSignature();\\n}\\n\",\"keccak256\":\"0xd0f5b26469ba6cd303e5ea9b53cf6b7c25cb00918097eb59a263678b51197381\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/Assertions.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { GettersAndDerivers } from \\\"./GettersAndDerivers.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { CounterManager } from \\\"./CounterManager.sol\\\";\\n\\ncontract Assertions is\\n    GettersAndDerivers,\\n    CounterManager,\\n    TokenTransferrerErrors\\n{\\n    constructor(address conduitController)\\n        GettersAndDerivers(conduitController)\\n    {}\\n\\n    function _assertNonZeroAmount(uint256 amount) internal pure {\\n        // Revert if the supplied amount is equal to zero.\\n        if (amount == 0) {\\n            revert MissingItemAmount();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5841bbb4c48b541f692567567de5672939afc452bc940ef69a9d0726697d6414\",\"license\":\"MIT\"},\"contracts/lib/Consideration.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    OrderParameters,\\n    OrderComponents,\\n    OrderStatus,\\n    Order\\n} from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport {\\n    OrderFulfiller\\n} from \\\"./OrderFulfiller.sol\\\";\\n\\ncontract Consideration is OrderFulfiller {\\n\\n    mapping(bytes32 => OrderStatus) private _orderStatus;\\n\\n    constructor(address conduitController, address shadowToken) OrderFulfiller(conduitController, shadowToken) {}\\n\\n    function fulfillOrder(Order calldata order, bytes32 fulfillerConduitKey)\\n        external\\n        payable\\n        returns (bool fulfilled)\\n    {\\n        fulfilled = _validateAndFulfillOrder(order, fulfillerConduitKey);\\n    }\\n\\n    function repayOrder(OrderParameters calldata parameters, bytes32 fulfillerConduitKey, uint256 payTimes)\\n        external\\n        payable\\n        returns (bool repaid)\\n    {\\n        repaid = _validateAndRepayOrder(parameters, fulfillerConduitKey, payTimes);\\n    }\\n\\n    function breakOrder(OrderParameters calldata parameters)\\n        external\\n        returns (bool broken)\\n    {\\n        broken = _validateAndBreakOrder(parameters);\\n    }\\n\\n    function cancel(OrderComponents[] calldata orders)\\n        external\\n        returns (bool cancelled)\\n    {\\n        cancelled = _cancel(orders);\\n    }\\n\\n    function validate(Order[] calldata orders)\\n        external\\n        returns (bool validated)\\n    {\\n        validated = _validate(orders);\\n    }\\n\\n    function incrementCounter() external returns (uint256 newCounter) {\\n        newCounter = _incrementCounter();\\n    }\\n\\n    function getOrderHash(OrderComponents calldata order)\\n        external\\n        view\\n        returns (bytes32 orderHash)\\n    {\\n        orderHash = _deriveOrderHash(\\n            OrderParameters(\\n                order.offerer,\\n                order.token,\\n                order.identifier,\\n                order.currency,\\n                order.artist,\\n                order.platform,\\n                order.startTime,\\n                order.endTime,\\n                order.duration,\\n                order.periods,\\n                order.amount,\\n                order.ratio,\\n                order.royalty,\\n                order.fee,\\n                order.withdrawFee,\\n                order.salt,\\n                order.conduitKey\\n            ),\\n            order.counter\\n        );\\n    }\\n\\n    function getOrderStatus(bytes32 orderHash)\\n        external\\n        view\\n        returns (\\n            bool isValidated,\\n            bool isCancelled,\\n            bool isFinalized,\\n            bool isBroken,\\n            address fulfiller,\\n            uint256 startedAt,\\n            uint256 shadowId,\\n            uint256 paidTimes\\n        )\\n    {\\n        return _getOrderStatus(orderHash);\\n    }\\n\\n    function getCounter(address offerer)\\n        external\\n        view\\n        returns (uint256 counter)\\n    {\\n        counter = _getCounter(offerer);\\n    }\\n\\n    function information()\\n        external\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        return _information();\\n    }\\n}\",\"keccak256\":\"0xabf6e7795c3f34483c6de6a3c2d74769f5067becdceee9ab53a647c7cd787e04\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\ncontract ConsiderationBase {\\n    bytes32 internal immutable _NAME_HASH;\\n    bytes32 internal immutable _VERSION_HASH;\\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\\n    bytes32 internal immutable _ORDER_TYPEHASH;\\n    uint256 internal immutable _CHAIN_ID;\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n\\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n\\n    constructor(address conduitController) {\\n        (\\n            _NAME_HASH,\\n            _VERSION_HASH,\\n            _EIP_712_DOMAIN_TYPEHASH,\\n            _ORDER_TYPEHASH\\n        ) = _deriveTypehashes();\\n\\n        _CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\\n\\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\\n\\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\\n        );\\n    }\\n\\n    function _deriveDomainSeparator() internal view returns (bytes32) {\\n        return keccak256(\\n            abi.encode(\\n                _EIP_712_DOMAIN_TYPEHASH,\\n                _NAME_HASH,\\n                _VERSION_HASH,\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    function _nameString() internal pure virtual returns (string memory) {\\n        return \\\"Consideration\\\";\\n    }\\n\\n    function _deriveTypehashes()\\n        internal\\n        pure\\n        returns (\\n            bytes32 nameHash,\\n            bytes32 versionHash,\\n            bytes32 eip712DomainTypehash,\\n            bytes32 orderTypehash\\n        )\\n    {\\n        nameHash = keccak256(bytes(_nameString()));\\n\\n        versionHash = keccak256(bytes(\\\"1.0\\\"));\\n\\n        bytes memory orderComponentsTypeString = abi.encodePacked(\\n            \\\"OrderComponents(\\\",\\n                \\\"address offerer,\\\",\\n                \\\"address token,\\\",\\n                \\\"uint256 identifier,\\\",\\n                \\\"address currency,\\\",\\n                \\\"address artist,\\\",\\n                \\\"address platform,\\\",\\n                \\\"uint256 startTime,\\\",\\n                \\\"uint256 endTime,\\\",\\n                \\\"uint256 duration,\\\",\\n                \\\"uint256 periods,\\\",\\n                \\\"uint256 amount,\\\",\\n                \\\"uint256 ratio,\\\",\\n                \\\"uint256 royalty,\\\",\\n                \\\"uint256 fee,\\\",\\n                \\\"uint256 withdrawFee,\\\",\\n                \\\"uint256 salt,\\\",\\n                \\\"bytes32 conduitKey,\\\",\\n                \\\"uint256 counter\\\",\\n            \\\")\\\"\\n        );\\n\\n        eip712DomainTypehash = keccak256(\\n            abi.encodePacked(\\n                \\\"EIP712Domain(\\\",\\n                    \\\"string name,\\\",\\n                    \\\"string version,\\\",\\n                    \\\"uint256 chainId,\\\",\\n                    \\\"address verifyingContract\\\",\\n                \\\")\\\"\\n            )\\n        );\\n\\n        orderTypehash = keccak256(orderComponentsTypeString);\\n    }\\n}\",\"keccak256\":\"0x9cd33c5b8bd60301ea09c0305587414ef38f6898fa7a1e0dfb217dd26091d106\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ItemType {\\n    NATIVE,\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\",\"keccak256\":\"0x6da855eedfe9a6360ac027a0b9ecebb6eacfd09fa5b0c5f55a141e21362808ea\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nstruct OrderComponents {\\n    address offerer;\\n    address token;\\n    uint256 identifier;\\n    address currency;\\n    address artist;\\n    address platform;\\n    uint256 startTime;\\n    uint256 endTime;\\n    uint256 duration;\\n    uint256 periods;\\n    uint256 amount;\\n    uint256 ratio;\\n    uint256 royalty;\\n    uint256 fee;\\n    uint256 withdrawFee;\\n    uint256 salt;\\n    bytes32 conduitKey;\\n    uint256 counter;\\n}\\n\\nstruct OrderParameters {\\n    address offerer;    // 0x00\\n    address token;      // 0x20\\n    uint256 identifier; // 0x40\\n    address currency;   // 0x60\\n    address artist;     // 0x80\\n    address platform;   // 0xa0\\n    uint256 startTime;  // 0xc0\\n    uint256 endTime;    // 0xe0\\n    uint256 duration;   // 0x100\\n    uint256 periods;    // 0x120\\n    uint256 amount;     // 0x140\\n    uint256 ratio;      // 0x160\\n    uint256 royalty;    // 0x180\\n    uint256 fee;        // 0x1a0\\n    uint256 withdrawFee;// 0x1c0\\n    uint256 salt;       // 0x1e0\\n    bytes32 conduitKey; // 0x200\\n}\\n\\nstruct Order {\\n    OrderParameters parameters;\\n    bytes signature;\\n}\\n\\nstruct OrderStatus {\\n    bool isValidated;\\n    bool isCancelled;\\n    bool isFinalized;\\n    bool isBroken;\\n    address fulfiller;\\n    uint256 startedAt;\\n    uint256 shadowId;\\n    uint256 paidTimes;\\n}\",\"keccak256\":\"0xe0a311247127b5bbaf92415e092bec717f990ed8cfe6dec710046d755db38048\",\"license\":\"MIT\"},\"contracts/lib/CounterManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConsiderationEventsAndErrors\\n} from \\\"../interfaces/ConsiderationEventsAndErrors.sol\\\";\\n\\nimport { ReentrancyGuard } from \\\"./ReentrancyGuard.sol\\\";\\n\\ncontract CounterManager is ConsiderationEventsAndErrors, ReentrancyGuard {\\n\\n    mapping(address => uint256) private _counters;\\n\\n    function _incrementCounter() internal returns (uint256 newCounter) {\\n        _assertNonReentrant();\\n\\n        unchecked {\\n            newCounter = ++_counters[msg.sender];\\n        }\\n\\n        emit CounterIncremented(newCounter, msg.sender);\\n    }\\n\\n    function _getCounter(address offerer)\\n        internal\\n        view\\n        returns (uint256 currentCounter)\\n    {\\n        currentCounter = _counters[offerer];\\n    }\\n}\\n\",\"keccak256\":\"0xf07f27dab21fe6607342bc513064c81f10729cf4b9f41e6173ae66d6a4b7a25a\",\"license\":\"MIT\"},\"contracts/lib/Executor.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport { ConduitItemType } from \\\"../conduit/lib/ConduitEnums.sol\\\";\\n\\nimport { ItemType } from \\\"./ConsiderationEnums.sol\\\";\\n\\nimport { Verifiers } from \\\"./Verifiers.sol\\\";\\n\\nimport { TokenTransferrer } from \\\"./TokenTransferrer.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title Executor\\n * @author 0age\\n * @notice Executor contains functions related to processing executions (i.e.\\n *         transferring items, either directly or via conduits).\\n */\\ncontract Executor is Verifiers, TokenTransferrer {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Verifiers(conduitController) {}\\n\\n    /**\\n     * @dev Internal function to transfer an individual ERC721 or ERC1155 item\\n     *      from a given originator to a given recipient. The accumulator will\\n     *      be bypassed, meaning that this function should be utilized in cases\\n     *      where multiple item transfers can be accumulated into a single\\n     *      conduit call. Sufficient approvals must be set, either on the\\n     *      respective conduit or on this contract itself.\\n     *\\n     * @param itemType   The type of item to transfer, either ERC721 or ERC1155.\\n     * @param token      The token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     * @param amount     The amount to transfer.\\n     * @param conduitKey A bytes32 value indicating what corresponding conduit,\\n     *                   if any, to source token approvals from. The zero hash\\n     *                   signifies that no conduit should be used, with direct\\n     *                   approvals set on this contract.\\n     */\\n    function _transferIndividual721Or1155Item(\\n        ItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Determine if the transfer is to be performed via a conduit.\\n        if (conduitKey != bytes32(0)) {\\n            // Use free memory pointer as calldata offset for the conduit call.\\n            uint256 callDataOffset;\\n\\n            // Utilize assembly to place each argument in free memory.\\n            assembly {\\n                // Retrieve the free memory pointer and use it as the offset.\\n                callDataOffset := mload(FreeMemoryPointerSlot)\\n\\n                // Write ConduitInterface.execute.selector to memory.\\n                mstore(callDataOffset, Conduit_execute_signature)\\n\\n                // Write the offset to the ConduitTransfer array in memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_offset_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_ptr\\n                )\\n\\n                // Write the length of the ConduitTransfer array to memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_length_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_length\\n                )\\n\\n                // Write the item type to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferItemType_ptr),\\n                    itemType\\n                )\\n\\n                // Write the token to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferToken_ptr),\\n                    token\\n                )\\n\\n                // Write the transfer source to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferFrom_ptr),\\n                    from\\n                )\\n\\n                // Write the transfer recipient to memory.\\n                mstore(add(callDataOffset, Conduit_execute_transferTo_ptr), to)\\n\\n                // Write the token identifier to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferIdentifier_ptr),\\n                    identifier\\n                )\\n\\n                // Write the transfer amount to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferAmount_ptr),\\n                    amount\\n                )\\n            }\\n\\n            // Perform the call to the conduit.\\n            _callConduitUsingOffsets(\\n                conduitKey,\\n                callDataOffset,\\n                OneConduitExecute_size\\n            );\\n        } else {\\n            // Otherwise, determine whether it is an ERC721 or ERC1155 item.\\n            if (itemType == ItemType.ERC721) {\\n                // Ensure that exactly one 721 item is being transferred.\\n                if (amount != 1) {\\n                    revert InvalidERC721TransferAmount();\\n                }\\n\\n                // Perform transfer via the token contract directly.\\n                _performERC721Transfer(token, from, to, identifier);\\n            } else {\\n                // Perform transfer via the token contract directly.\\n                _performERC1155Transfer(token, from, to, identifier, amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer Ether or other native tokens to a\\n     *      given recipient.\\n     *\\n     * @param to     The recipient of the transfer.\\n     * @param amount The amount to transfer.\\n     */\\n    function _transferEth(address payable to, uint256 amount) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Declare a variable indicating whether the call was successful or not.\\n        bool success;\\n\\n        assembly {\\n            // Transfer the ETH and store if it succeeded or not.\\n            success := call(gas(), to, amount, 0, 0, 0, 0)\\n        }\\n\\n        // If the call fails...\\n        if (!success) {\\n            // Revert and pass the revert reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error message.\\n            revert EtherTransferGenericFailure(to, amount);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient using a given conduit if applicable. Sufficient\\n     *      approvals must be set on this contract or on a respective conduit.\\n     *\\n     * @param token       The ERC20 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC20(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform the token transfer directly.\\n            _performERC20Transfer(token, from, to, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC20,\\n                token,\\n                from,\\n                to,\\n                uint256(0),\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer a single ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set,\\n     *      either on the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC721 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer (must be 1 for ERC721).\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC721(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Ensure that exactly one 721 item is being transferred.\\n            if (amount != 1) {\\n                revert InvalidERC721TransferAmount();\\n            }\\n\\n            // Perform transfer via the token contract directly.\\n            _performERC721Transfer(token, from, to, identifier);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC721,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set, either on\\n     *      the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC1155 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The id to transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC1155(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform transfer via the token contract directly.\\n            _performERC1155Transfer(token, from, to, identifier, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC1155,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\") and the supplied conduit key does not match the key held\\n     *      by the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     */\\n    function _triggerIfArmedAndNotAccumulatable(\\n        bytes memory accumulator,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call if the set key does not match the supplied key.\\n        if (accumulatorConduitKey != conduitKey) {\\n            _triggerIfArmed(accumulator);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\").\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _triggerIfArmed(bytes memory accumulator) internal {\\n        // Exit if the accumulator is not \\\"armed\\\".\\n        if (accumulator.length != AccumulatorArmed) {\\n            return;\\n        }\\n\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call.\\n        _trigger(accumulatorConduitKey, accumulator);\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit corresponding to\\n     *      a given conduit key, supplying all accumulated item transfers. The\\n     *      accumulator will be \\\"disarmed\\\" and reset in the process.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _trigger(bytes32 conduitKey, bytes memory accumulator) internal {\\n        // Declare variables for offset in memory & size of calldata to conduit.\\n        uint256 callDataOffset;\\n        uint256 callDataSize;\\n\\n        // Call the conduit with all the accumulated transfers.\\n        assembly {\\n            // Call begins at third word; the first is length or \\\"armed\\\" status,\\n            // and the second is the current conduit key.\\n            callDataOffset := add(accumulator, TwoWords)\\n\\n            // 68 + items * 192\\n            callDataSize := add(\\n                Accumulator_array_offset_ptr,\\n                mul(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    Conduit_transferItem_size\\n                )\\n            )\\n        }\\n\\n        // Call conduit derived from conduit key & supply accumulated transfers.\\n        _callConduitUsingOffsets(conduitKey, callDataOffset, callDataSize);\\n\\n        // Reset accumulator length to signal that it is now \\\"disarmed\\\".\\n        assembly {\\n            mstore(accumulator, AccumulatorDisarmed)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a call to the conduit corresponding to\\n     *      a given conduit key based on the offset and size of the calldata in\\n     *      question in memory.\\n     *\\n     * @param conduitKey     A bytes32 value indicating what corresponding\\n     *                       conduit, if any, to source token approvals from.\\n     *                       The zero hash signifies that no conduit should be\\n     *                       used, with direct approvals set on this contract.\\n     * @param callDataOffset The memory pointer where calldata is contained.\\n     * @param callDataSize   The size of calldata in memory.\\n     */\\n    function _callConduitUsingOffsets(\\n        bytes32 conduitKey,\\n        uint256 callDataOffset,\\n        uint256 callDataSize\\n    ) internal {\\n        // Derive the address of the conduit using the conduit key.\\n        address conduit = _deriveConduit(conduitKey);\\n\\n        bool success;\\n        bytes4 result;\\n\\n        // call the conduit.\\n        assembly {\\n            // Ensure first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Perform call, placing first word of return data in scratch space.\\n            success := call(\\n                gas(),\\n                conduit,\\n                0,\\n                callDataOffset,\\n                callDataSize,\\n                0,\\n                OneWord\\n            )\\n\\n            // Take value from scratch space and place it on the stack.\\n            result := mload(0)\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Pass along whatever revert reason was given by the conduit.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error.\\n            revert InvalidCallToConduit(conduit);\\n        }\\n\\n        // Ensure result was extracted and matches EIP-1271 magic value.\\n        if (result != ConduitInterface.execute.selector) {\\n            revert InvalidConduit(conduitKey, conduit);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to retrieve the current conduit key set for\\n     *      the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     *\\n     * @return accumulatorConduitKey The conduit key currently set for the\\n     *                               accumulator.\\n     */\\n    function _getAccumulatorConduitKey(bytes memory accumulator)\\n        internal\\n        pure\\n        returns (bytes32 accumulatorConduitKey)\\n    {\\n        // Retrieve the current conduit key from the accumulator.\\n        assembly {\\n            accumulatorConduitKey := mload(\\n                add(accumulator, Accumulator_conduitKey_ptr)\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to place an item transfer into an accumulator\\n     *      that collects a series of transfers to execute against a given\\n     *      conduit in a single call.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param itemType    The type of the item to transfer.\\n     * @param token       The token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer.\\n     * @param amount      The amount to transfer.\\n     */\\n    function _insert(\\n        bytes32 conduitKey,\\n        bytes memory accumulator,\\n        ConduitItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal pure {\\n        uint256 elements;\\n        // \\\"Arm\\\" and prime accumulator if it's not already armed. The sentinel\\n        // value is held in the length of the accumulator array.\\n        if (accumulator.length == AccumulatorDisarmed) {\\n            elements = 1;\\n            bytes4 selector = ConduitInterface.execute.selector;\\n            assembly {\\n                mstore(accumulator, AccumulatorArmed) // \\\"arm\\\" the accumulator.\\n                mstore(add(accumulator, Accumulator_conduitKey_ptr), conduitKey)\\n                mstore(add(accumulator, Accumulator_selector_ptr), selector)\\n                mstore(\\n                    add(accumulator, Accumulator_array_offset_ptr),\\n                    Accumulator_array_offset\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        } else {\\n            // Otherwise, increase the number of elements by one.\\n            assembly {\\n                elements := add(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    1\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        }\\n\\n        // Insert the item.\\n        assembly {\\n            let itemPointer := sub(\\n                add(accumulator, mul(elements, Conduit_transferItem_size)),\\n                Accumulator_itemSizeOffsetDifference\\n            )\\n            mstore(itemPointer, itemType)\\n            mstore(add(itemPointer, Conduit_transferItem_token_ptr), token)\\n            mstore(add(itemPointer, Conduit_transferItem_from_ptr), from)\\n            mstore(add(itemPointer, Conduit_transferItem_to_ptr), to)\\n            mstore(\\n                add(itemPointer, Conduit_transferItem_identifier_ptr),\\n                identifier\\n            )\\n            mstore(add(itemPointer, Conduit_transferItem_amount_ptr), amount)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4b3165cc66037d31d39c5ca2468c46202765bd3831c91a3b33e9c03a59b93a5d\",\"license\":\"MIT\"},\"contracts/lib/GettersAndDerivers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderParameters } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { ConsiderationBase } from \\\"./ConsiderationBase.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract GettersAndDerivers is ConsiderationBase {\\n\\n    constructor(address conduitController)\\n        ConsiderationBase(conduitController)\\n    {}\\n\\n    function _deriveOrderHash(\\n        OrderParameters memory orderParameters,\\n        uint256 counter\\n    ) internal view returns (bytes32 orderHash) {\\n        bytes32 typeHash = _ORDER_TYPEHASH;\\n\\n        assembly {\\n            let typeHashPtr := sub(orderParameters, OneWord)\\n\\n            let previousValue := mload(typeHashPtr)\\n\\n            mstore(typeHashPtr, typeHash)\\n\\n            let counterPtr := add(\\n                orderParameters,\\n                OrderParameters_counter_offset\\n            )\\n\\n            let counterDataPtr := mload(counterPtr)\\n\\n            mstore(counterPtr, counter)\\n\\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\\n\\n            mstore(typeHashPtr, previousValue)\\n\\n            mstore(counterPtr, counterDataPtr)\\n        }\\n    }\\n\\n    function _deriveConduit(bytes32 conduitKey)\\n        internal\\n        view\\n        returns (address conduit)\\n    {\\n        // Read conduit controller address from runtime and place on the stack.\\n        address conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Read conduit creation code hash from runtime and place on the stack.\\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\\n\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Retrieve the free memory pointer; it will be replaced afterwards.\\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Place the control character and the conduit controller in scratch\\n            // space; note that eleven bytes at the beginning are left unused.\\n            mstore(0, or(MaskOverByteTwelve, conduitController))\\n\\n            // Place the conduit key in the next region of scratch space.\\n            mstore(OneWord, conduitKey)\\n\\n            // Place conduit creation code hash in free memory pointer location.\\n            mstore(TwoWords, conduitCreationCodeHash)\\n\\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\\n            conduit := and(\\n                // Hash the relevant region.\\n                keccak256(\\n                    // The region starts at memory pointer 11.\\n                    Create2AddressDerivation_ptr,\\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\\n                    Create2AddressDerivation_length\\n                ),\\n                // The address equals the last twenty bytes of the hash.\\n                MaskOverLastTwentyBytes\\n            )\\n\\n            // Restore the free memory pointer.\\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to get the EIP-712 domain separator. If the\\n     *      chainId matches the chainId set on deployment, the cached domain\\n     *      separator will be returned; otherwise, it will be derived from\\n     *      scratch.\\n     *\\n     * @return The domain separator.\\n     */\\n    function _domainSeparator() internal view returns (bytes32) {\\n        // prettier-ignore\\n        return block.chainid == _CHAIN_ID\\n            ? _DOMAIN_SEPARATOR\\n            : _deriveDomainSeparator();\\n    }\\n\\n    /**\\n     * @dev Internal view function to retrieve configuration information for\\n     *      this contract.\\n     *\\n     * @return version           The contract version.\\n     * @return domainSeparator   The domain separator for this contract.\\n     * @return conduitController The conduit Controller set for this contract.\\n     */\\n    function _information()\\n        internal\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        // Derive the domain separator.\\n        domainSeparator = _domainSeparator();\\n\\n        // Declare variable as immutables cannot be accessed within assembly.\\n        conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Allocate a string with the intended length.\\n        version = new string(Version_length);\\n\\n        // Set the version as data on the newly allocated string.\\n        assembly {\\n            mstore(add(version, OneWord), shl(Version_shift, Version))\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to efficiently derive an digest to sign for\\n     *      an order in accordance with EIP-712.\\n     *\\n     * @param domainSeparator The domain separator.\\n     * @param orderHash       The order hash.\\n     *\\n     * @return value The hash.\\n     */\\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\\n        internal\\n        pure\\n        returns (bytes32 value)\\n    {\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Place the EIP-712 prefix at the start of scratch space.\\n            mstore(0, EIP_712_PREFIX)\\n\\n            // Place the domain separator in the next region of scratch space.\\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\\n\\n            // Place the order hash in scratch space, spilling into the first\\n            // two bytes of the free memory pointer \\u2014 this should never be set\\n            // as memory cannot be expanded to that size, and will be zeroed out\\n            // after the hash is performed.\\n            mstore(EIP712_OrderHash_offset, orderHash)\\n\\n            // Hash the relevant region (65 bytes).\\n            value := keccak256(0, EIP712_DigestPayload_size)\\n\\n            // Clear out the dirtied bits in the memory pointer.\\n            mstore(EIP712_OrderHash_offset, 0)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5c0866572e7dfe34edad443a82e35851c4d3631cc9c5957994d68e41516dd6c4\",\"license\":\"MIT\"},\"contracts/lib/LowLevelHelpers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title LowLevelHelpers\\n * @author 0age\\n * @notice LowLevelHelpers contains logic for performing various low-level\\n *         operations.\\n */\\ncontract LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to staticcall an arbitrary target with given\\n     *      calldata. Note that no data is written to memory and no contract\\n     *      size check is performed.\\n     *\\n     * @param target   The account to staticcall.\\n     * @param callData The calldata to supply when staticcalling the target.\\n     *\\n     * @return success The status of the staticcall to the target.\\n     */\\n    function _staticcall(address target, bytes memory callData)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        assembly {\\n            // Perform the staticcall.\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(callData, OneWord),\\n                mload(callData),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to revert and pass along the revert reason if\\n     *      data was returned by the last call and that the size of that data\\n     *      does not exceed the currently allocated memory size.\\n     */\\n    function _revertWithReasonIfOneIsReturned() internal view {\\n        assembly {\\n            // If it returned a message, bubble it up as long as sufficient gas\\n            // remains to do so:\\n            if returndatasize() {\\n                // Ensure that sufficient gas is available to copy returndata\\n                // while expanding memory where necessary. Start by computing\\n                // the word size of returndata and allocated memory.\\n                let returnDataWords := div(\\n                    add(returndatasize(), AlmostOneWord),\\n                    OneWord\\n                )\\n\\n                // Note: use the free memory pointer in place of msize() to work\\n                // around a Yul warning that prevents accessing msize directly\\n                // when the IR pipeline is activated.\\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\\n\\n                // Next, compute the cost of the returndatacopy.\\n                let cost := mul(CostPerWord, returnDataWords)\\n\\n                // Then, compute cost of new memory allocation.\\n                if gt(returnDataWords, msizeWords) {\\n                    cost := add(\\n                        cost,\\n                        add(\\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\\n                            div(\\n                                sub(\\n                                    mul(returnDataWords, returnDataWords),\\n                                    mul(msizeWords, msizeWords)\\n                                ),\\n                                MemoryExpansionCoefficient\\n                            )\\n                        )\\n                    )\\n                }\\n\\n                // Finally, add a small constant and compare to gas remaining;\\n                // bubble up the revert data if enough gas is still available.\\n                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                    // Copy returndata to memory; overwrite existing memory.\\n                    returndatacopy(0, 0, returndatasize())\\n\\n                    // Revert, specifying memory region with copied returndata.\\n                    revert(0, returndatasize())\\n                }\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to determine if the first word of returndata\\n     *      matches an expected magic value.\\n     *\\n     * @param expected The expected magic value.\\n     *\\n     * @return A boolean indicating whether the expected value matches the one\\n     *         located in the first word of returndata.\\n     */\\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\\n        // Declare a variable for the value held by the return data buffer.\\n        bytes4 result;\\n\\n        // Utilize assembly in order to read directly from returndata buffer.\\n        assembly {\\n            // Only put result on stack if return data is exactly one word.\\n            if eq(returndatasize(), OneWord) {\\n                // Copy the word directly from return data into scratch space.\\n                returndatacopy(0, 0, OneWord)\\n\\n                // Take value from scratch space and place it on the stack.\\n                result := mload(0)\\n            }\\n        }\\n\\n        // Return a boolean indicating whether expected and located value match.\\n        return result != expected;\\n    }\\n}\\n\",\"keccak256\":\"0x57700a6f8f18d1cdfc8492724ef3b9f89aa143382f13794489df70c1f3fc027c\",\"license\":\"MIT\"},\"contracts/lib/OrderFulfiller.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport {\\n    ItemType\\n} from \\\"./ConsiderationEnums.sol\\\";\\n\\nimport {\\n    Order,\\n    OrderParameters\\n} from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { OrderValidator } from \\\"./OrderValidator.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract OrderFulfiller is OrderValidator {\\n\\n    struct Dispatch {\\n        uint256 payment;\\n        uint256 toOfferer;\\n        uint256 toPlatform;\\n        uint256 toArtist;\\n    }\\n\\n    constructor(address conduitController, address shadowToken) OrderValidator(conduitController, shadowToken) {}\\n\\n    function _calculateDispatch(\\n        OrderParameters calldata params,\\n        uint256 payTimes,\\n        bool isFirst,\\n        bool isFinalize\\n    )\\n        internal\\n        pure\\n        returns (Dispatch memory ret)\\n    {\\n        uint256 royalty;\\n        uint256 paidTimes = params.periods - payTimes;\\n\\n        ret.toPlatform = params.withdrawFee;\\n        if (isFinalize) {\\n            royalty = params.royalty - paidTimes * (params.royalty / params.periods);\\n            ret.payment = params.amount - paidTimes* (params.amount / params.periods);\\n            ret.toOfferer = params.amount - (params.amount / params.periods) * params.ratio / 10000 * paidTimes - ret.toPlatform - royalty;\\n            ret.toArtist = params.royalty;\\n        } else {\\n            royalty = payTimes * (params.royalty / params.periods);\\n            ret.payment = payTimes * (params.amount / params.periods);            \\n            ret.toOfferer = ret.payment * params.ratio / 10000 - ret.toPlatform - royalty;\\n            if (isFirst) {\\n                ret.payment += params.fee;\\n                ret.toPlatform += params.fee;\\n            }\\n        }\\n    }\\n\\n    function _validateAndFulfillOrder(Order calldata order, bytes32 fulfillerConduitKey)\\n        internal\\n        returns (bool)\\n    {\\n        (\\n            bytes32 orderHash,\\n            bool valid,\\n            uint256 shadowId\\n        ) = _validateOrderAndUpdateStatus(\\n            order,\\n            true\\n        );\\n\\n        if (!valid) {\\n            return false;\\n        }\\n\\n        OrderParameters calldata orderParameters = order.parameters;\\n        Dispatch memory dispatch = _calculateDispatch(orderParameters, 1, true, false);\\n\\n        if (orderParameters.currency == address(0)) {\\n            _transferIndividual721Or1155Item(\\n                ItemType.ERC721,\\n                orderParameters.token,\\n                orderParameters.offerer,\\n                address(this),\\n                orderParameters.identifier,\\n                1,\\n                orderParameters.conduitKey\\n            );\\n\\n            _transferEthAndFinalize(orderParameters, dispatch);\\n        } else {\\n            bytes memory accumulator = new bytes(AccumulatorDisarmed);\\n            _transferERC721(\\n                orderParameters.token,\\n                orderParameters.offerer,\\n                address(this),\\n                orderParameters.identifier,\\n                1,\\n                orderParameters.conduitKey,\\n                accumulator\\n            );\\n\\n            _transferERC20AndFinalize(\\n                orderParameters,\\n                dispatch,\\n                fulfillerConduitKey,\\n                accumulator\\n            );\\n        }\\n\\n        emit OrderFulfilled(\\n            orderHash,\\n            orderParameters.offerer,\\n            shadowId\\n        );\\n\\n        return true;\\n    }\\n\\n    function _validateAndRepayOrder(OrderParameters calldata parameters, bytes32 fulfillerConduitKey, uint256 payTimes)\\n        internal\\n        returns (bool)\\n    {\\n        bytes32 orderHash;\\n        address fulfiller;\\n        bool isFinalized;\\n        {\\n            bool valid;\\n            (\\n                orderHash,\\n                fulfiller,\\n                valid,\\n                isFinalized\\n            ) = _validateOrderAndUpdateRepayStatus(\\n                parameters,\\n                payTimes,\\n                true\\n            );\\n\\n            if (!valid) {\\n                return false;\\n            }\\n        }\\n\\n        Dispatch memory dispatch = _calculateDispatch(parameters, payTimes, false, isFinalized);\\n\\n        if (parameters.currency == address(0)) {\\n            _transferEthAndFinalize(parameters, dispatch);\\n        } else {\\n            bytes memory accumulator = new bytes(AccumulatorDisarmed);\\n            _transferERC20AndFinalize(\\n                parameters,\\n                dispatch,\\n                fulfillerConduitKey,\\n                accumulator\\n            );\\n        }\\n\\n        if (isFinalized) {\\n            _transferIndividual721Or1155Item(\\n                ItemType.ERC721,\\n                parameters.token,\\n                address(this),\\n                fulfiller,\\n                parameters.identifier,\\n                1,\\n                bytes32(0)\\n            );\\n        }\\n\\n        emit OrderRepaid(\\n            orderHash,\\n            payTimes,\\n            isFinalized\\n        );\\n\\n        return true;\\n    }\\n\\n    function _validateAndBreakOrder(OrderParameters calldata parameters)\\n        internal\\n        returns (bool)\\n    {\\n        (\\n            bytes32 orderHash,\\n            uint256 paidTimes,\\n            bool valid\\n        ) = _validateOrderAndUpdateBreakStatus(\\n            parameters,\\n            true\\n        );\\n\\n        if (!valid) {\\n            return false;\\n        }\\n\\n        _transferIndividual721Or1155Item(\\n            ItemType.ERC721,\\n            parameters.token,\\n            address(this),\\n            parameters.offerer,\\n            parameters.identifier,\\n            1,\\n            bytes32(0)\\n        );\\n\\n        if (parameters.currency == address(0)) {\\n            _transferEthBroken(parameters, paidTimes);\\n        } else {\\n            _transferERC20Broken(\\n                parameters,\\n                paidTimes\\n            );\\n        }\\n\\n        emit OrderBroken(\\n            orderHash,\\n            parameters.offerer\\n        );\\n\\n        return true;\\n    }\\n\\n    function _transferEthBroken(\\n        OrderParameters calldata orderParameters,\\n        uint256 paidTimes\\n    ) internal {\\n        _transferEth(\\n            payable(orderParameters.offerer),\\n            orderParameters.royalty / orderParameters.periods * paidTimes\\n        );\\n        uint256 toPlatform = orderParameters.amount / orderParameters.periods * paidTimes;\\n        toPlatform = toPlatform - toPlatform * orderParameters.ratio / 10000;\\n        _transferEth(\\n            payable(orderParameters.platform),\\n            toPlatform\\n        );\\n    }\\n\\n    function _transferERC20Broken(\\n        OrderParameters calldata parameters,\\n        uint256 paidTimes\\n    ) internal {\\n        _performSelfERC20Transfer(parameters.currency, parameters.offerer, parameters.royalty / parameters.periods * paidTimes);\\n\\n        uint256 toPlatform = parameters.amount / parameters.periods * paidTimes;\\n        toPlatform = toPlatform - toPlatform * parameters.ratio / 10000;\\n        _performSelfERC20Transfer(parameters.currency, parameters.platform, toPlatform);\\n    }\\n\\n    function _transferEthAndFinalize(\\n        OrderParameters calldata orderParameters,\\n        Dispatch memory dispatch\\n    ) internal {\\n        uint256 etherRemaining = msg.value;\\n\\n        if (dispatch.payment > etherRemaining) {\\n            revert InsufficientEtherSupplied();\\n        }\\n\\n        _transferEth(\\n            payable(orderParameters.offerer),\\n            dispatch.toOfferer\\n        );\\n\\n        _transferEth(\\n            payable(orderParameters.platform),\\n            dispatch.toPlatform\\n        );\\n\\n        if (dispatch.toArtist > 0) {\\n            _transferEth(\\n                payable(orderParameters.artist),\\n                dispatch.toArtist\\n            );\\n        }\\n\\n        etherRemaining -= dispatch.payment;\\n\\n        if (etherRemaining > 0) {\\n            unchecked {\\n                _transferEth(payable(msg.sender), etherRemaining);\\n            }\\n        }\\n    }\\n\\n    function _transferERC20AndFinalize(\\n        OrderParameters calldata parameters,\\n        Dispatch memory dispatch,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        address from = msg.sender;\\n        address token = parameters.currency;\\n\\n        _transferERC20(\\n            token,\\n            from,\\n            parameters.platform,\\n            dispatch.toPlatform,\\n            conduitKey,\\n            accumulator\\n        );\\n\\n        if (dispatch.toArtist > 0) {\\n            _transferERC20(\\n                token,\\n                from,\\n                parameters.artist,\\n                dispatch.toArtist,\\n                conduitKey,\\n                accumulator\\n            );\\n        }\\n\\n        uint256 left = dispatch.payment - dispatch.toPlatform - dispatch.toArtist;\\n        if (left >= dispatch.toOfferer) {\\n            _transferERC20(\\n                token,\\n                from,\\n                parameters.offerer,\\n                dispatch.toOfferer,\\n                conduitKey,\\n                accumulator\\n            );\\n            left -= dispatch.toOfferer;\\n            if (left > 0) {\\n                _transferERC20(\\n                    token,\\n                    from,\\n                    address(this),\\n                    left,\\n                    conduitKey,\\n                    accumulator\\n                );\\n            }\\n            _triggerIfArmed(accumulator);\\n        } else {\\n            _transferERC20(\\n                token,\\n                from,\\n                parameters.offerer,\\n                left,\\n                conduitKey,\\n                accumulator\\n            );\\n            _triggerIfArmed(accumulator);\\n\\n            _performSelfERC20Transfer(token, parameters.offerer, dispatch.toOfferer - left);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcc6c4cf70611dcb3ddb97629ce2d8650466b0d48a8889efbc8baf328535f523d\",\"license\":\"MIT\"},\"contracts/lib/OrderValidator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    OrderParameters,\\n    Order,\\n    OrderComponents,\\n    OrderStatus\\n} from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\nimport { Executor } from \\\"./Executor.sol\\\";\\nimport { Shadow } from \\\"./Shadow.sol\\\";\\n\\ncontract OrderValidator is Executor, Shadow {\\n\\n    mapping(bytes32 => OrderStatus) private _orderStatus;\\n\\n    constructor(address conduitController, address shadowToken) Executor(conduitController) Shadow(shadowToken) {}\\n\\n    function _validateOrderAndUpdateStatus(\\n        Order calldata order,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            bool valid,\\n            uint256 shadowId\\n        )\\n    {\\n        OrderParameters calldata orderParameters = order.parameters;\\n        if (\\n            !_verifyTime(\\n                orderParameters.startTime,\\n                orderParameters.endTime,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (bytes32(0), false, 0);\\n        }\\n\\n        if (orderParameters.periods < 2) {\\n            if (revertOnInvalid) {\\n                revert InvalidOrderParameters();\\n            }\\n            return (bytes32(0), false, 0);\\n        }\\n\\n        orderHash = _deriveOrderHash(\\n            orderParameters,\\n            _getCounter(orderParameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                true,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, false, 0);\\n        }\\n\\n        if (!orderStatus.isValidated) {\\n            _verifySignature(\\n                orderParameters.offerer,\\n                orderHash,\\n                order.signature\\n            );\\n        }\\n\\n        shadowId = _mintToken(\\n            msg.sender,\\n            orderParameters.token,\\n            orderParameters.identifier,\\n            orderParameters.duration\\n        );\\n\\n        orderStatus.isValidated = true;\\n        orderStatus.isCancelled = false;\\n        orderStatus.isBroken = false;\\n        orderStatus.fulfiller = msg.sender;\\n        orderStatus.startedAt = block.timestamp;\\n        orderStatus.shadowId = shadowId;\\n        orderStatus.paidTimes = 1;\\n\\n        valid = true;\\n    }\\n\\n    function _validateOrderAndUpdateRepayStatus(\\n        OrderParameters calldata parameters,\\n        uint256 payTimes,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            address fulfiller,\\n            bool valid,\\n            bool isFinalized\\n        )\\n    {\\n        orderHash = _deriveOrderHash(\\n            parameters,\\n            _getCounter(parameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        if (!orderStatus.isValidated) {\\n            if (revertOnInvalid) {\\n                revert OrderNotValidated(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                false,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (orderStatus.paidTimes + payTimes > parameters.periods || payTimes < 1) {\\n            if (revertOnInvalid) {\\n                revert OrderInvalidRepayParameters(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (orderStatus.startedAt + orderStatus.paidTimes * parameters.duration < block.timestamp) {\\n            if (revertOnInvalid) {\\n                revert OrderExpired(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        orderStatus.paidTimes += payTimes;\\n        if (orderStatus.paidTimes == parameters.periods) {\\n            orderStatus.isFinalized = true;\\n            isFinalized = true;\\n            _burnToken(orderStatus.shadowId);\\n        } else {\\n            _extendToken(\\n                orderStatus.fulfiller,\\n                orderStatus.shadowId,\\n                orderStatus.startedAt + orderStatus.paidTimes * parameters.duration\\n            );\\n        }\\n\\n        valid = true;\\n        fulfiller = orderStatus.fulfiller;\\n    }\\n\\n    function _validateOrderAndUpdateBreakStatus(\\n        OrderParameters calldata parameters,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            uint256 paidTimes,\\n            bool valid\\n        )\\n    {\\n        orderHash = _deriveOrderHash(\\n            parameters,\\n            _getCounter(parameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        if (!orderStatus.isValidated) {\\n            if (revertOnInvalid) {\\n                revert OrderNotValidated(orderHash);\\n            }\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        paidTimes = orderStatus.paidTimes;\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                false,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        if (orderStatus.startedAt + paidTimes * parameters.duration > block.timestamp) {\\n            if (revertOnInvalid) {\\n                revert OrderNotExpired(orderHash);\\n            }\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        _burnToken(orderStatus.shadowId);\\n\\n        orderStatus.isFinalized = true;\\n        orderStatus.isBroken = true;\\n        valid = true;\\n    }\\n\\n    function _cancel(OrderComponents[] calldata orders)\\n        internal\\n        returns (bool cancelled)\\n    {\\n        // Ensure that the reentrancy guard is not currently set.\\n        _assertNonReentrant();\\n\\n        // Declare variables outside of the loop.\\n        OrderStatus storage orderStatus;\\n        address offerer;\\n\\n        // Skip overflow check as for loop is indexed starting at zero.\\n        unchecked {\\n            // Read length of the orders array from memory and place on stack.\\n            uint256 totalOrders = orders.length;\\n\\n            // Iterate over each order.\\n            for (uint256 i = 0; i < totalOrders; ) {\\n                // Retrieve the order.\\n                OrderComponents calldata order = orders[i];\\n\\n                offerer = order.offerer;\\n\\n                if (msg.sender != offerer) {\\n                    revert InvalidCanceller();\\n                }\\n\\n                // Derive order hash using the order parameters and the counter.\\n                bytes32 orderHash = _deriveOrderHash(\\n                    OrderParameters(\\n                        offerer,\\n                        order.token,\\n                        order.identifier,\\n                        order.currency,\\n                        order.artist,\\n                        order.platform,\\n                        order.startTime,\\n                        order.endTime,\\n                        order.duration,\\n                        order.periods,\\n                        order.amount,\\n                        order.ratio,\\n                        order.royalty,\\n                        order.fee,\\n                        order.withdrawFee,\\n                        order.salt,\\n                        order.conduitKey\\n                    ),\\n                    order.counter\\n                );\\n\\n                // Retrieve the order status using the derived order hash.\\n                orderStatus = _orderStatus[orderHash];\\n\\n                if (orderStatus.startedAt > 0) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n\\n                // Update the order status as not valid and cancelled.\\n                orderStatus.isValidated = false;\\n                orderStatus.isCancelled = true;\\n\\n                // Emit an event signifying that the order has been cancelled.\\n                emit OrderCancelled(orderHash, offerer);\\n\\n                // Increment counter inside body of loop for gas efficiency.\\n                ++i;\\n            }\\n        }\\n\\n        // Return a boolean indicating that orders were successfully cancelled.\\n        cancelled = true;\\n    }\\n\\n    function _validate(Order[] calldata orders)\\n        internal\\n        returns (bool validated)\\n    {\\n        // Ensure that the reentrancy guard is not currently set.\\n        _assertNonReentrant();\\n\\n        // Declare variables outside of the loop.\\n        OrderStatus storage orderStatus;\\n        bytes32 orderHash;\\n        address offerer;\\n\\n        // Skip overflow check as for loop is indexed starting at zero.\\n        unchecked {\\n            // Read length of the orders array from memory and place on stack.\\n            uint256 totalOrders = orders.length;\\n\\n            // Iterate over each order.\\n            for (uint256 i = 0; i < totalOrders; ) {\\n                // Retrieve the order.\\n                Order calldata order = orders[i];\\n\\n                // Retrieve the order parameters.\\n                OrderParameters calldata orderParameters = order.parameters;\\n\\n                // Move offerer from memory to the stack.\\n                offerer = orderParameters.offerer;\\n\\n                // Get current counter & use it w/ params to derive order hash.\\n                orderHash = _deriveOrderHash(\\n                    OrderParameters(\\n                        offerer,\\n                        orderParameters.token,\\n                        orderParameters.identifier,\\n                        orderParameters.currency,\\n                        orderParameters.artist,\\n                        orderParameters.platform,\\n                        orderParameters.startTime,\\n                        orderParameters.endTime,\\n                        orderParameters.duration,\\n                        orderParameters.periods,\\n                        orderParameters.amount,\\n                        orderParameters.ratio,\\n                        orderParameters.royalty,\\n                        orderParameters.fee,\\n                        orderParameters.withdrawFee,\\n                        orderParameters.salt,\\n                        orderParameters.conduitKey\\n                    ),\\n                    _getCounter(orderParameters.offerer)\\n                );\\n\\n                // Retrieve the order status using the derived order hash.\\n                orderStatus = _orderStatus[orderHash];\\n\\n                // Ensure order is fillable and retrieve the filled amount.\\n                _verifyOrderStatus(\\n                    orderHash,\\n                    orderStatus,\\n                    true, // Signifies that partially filled orders are valid.\\n                    true // Signifies to revert if the order is invalid.\\n                );\\n\\n                // If the order has not already been validated...\\n                if (!orderStatus.isValidated) {\\n                    // Verify the supplied signature.\\n                    _verifySignature(offerer, orderHash, order.signature);\\n\\n                    // Update order status to mark the order as valid.\\n                    orderStatus.isValidated = true;\\n\\n                    // Emit an event signifying the order has been validated.\\n                    emit OrderValidated(\\n                        orderHash,\\n                        offerer\\n                    );\\n                }\\n\\n                // Increment counter inside body of the loop for gas efficiency.\\n                ++i;\\n            }\\n        }\\n\\n        // Return a boolean indicating that orders were successfully validated.\\n        validated = true;\\n    }\\n\\n    function _getOrderStatus(bytes32 orderHash)\\n        internal\\n        view\\n        returns (\\n            bool isValidated,\\n            bool isCancelled,\\n            bool isFinalized,\\n            bool isBroken,\\n            address fulfiller,\\n            uint256 startedAt,\\n            uint256 shadowId,\\n            uint256 paidTimes\\n        )\\n    {\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        return (\\n            orderStatus.isValidated,\\n            orderStatus.isCancelled,\\n            orderStatus.isFinalized,\\n            orderStatus.isBroken,\\n            orderStatus.fulfiller,\\n            orderStatus.startedAt,\\n            orderStatus.shadowId,\\n            orderStatus.paidTimes\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x4076a1d39f964a1c535665dcacbe5a04e9b001273db63b3846bf5eec9c9e88bd\",\"license\":\"MIT\"},\"contracts/lib/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ReentrancyErrors } from \\\"../interfaces/ReentrancyErrors.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title ReentrancyGuard\\n * @author 0age\\n * @notice ReentrancyGuard contains a storage variable and related functionality\\n *         for protecting against reentrancy.\\n */\\ncontract ReentrancyGuard is ReentrancyErrors {\\n    // Prevent reentrant calls on protected functions.\\n    uint256 private _reentrancyGuard;\\n\\n    /**\\n     * @dev Initialize the reentrancy guard during deployment.\\n     */\\n    constructor() {\\n        // Initialize the reentrancy guard in a cleared state.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to ensure that the sentinel value for the\\n     *      reentrancy guard is not currently set and, if not, to set the\\n     *      sentinel value for the reentrancy guard.\\n     */\\n    function _setReentrancyGuard() internal {\\n        // Ensure that the reentrancy guard is not already set.\\n        _assertNonReentrant();\\n\\n        // Set the reentrancy guard.\\n        _reentrancyGuard = _ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to unset the reentrancy guard sentinel value.\\n     */\\n    function _clearReentrancyGuard() internal {\\n        // Clear the reentrancy guard.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal view function to ensure that the sentinel value for the\\n            reentrancy guard is not currently set.\\n     */\\n    function _assertNonReentrant() internal view {\\n        // Ensure that the reentrancy guard is not currently set.\\n        if (_reentrancyGuard != _NOT_ENTERED) {\\n            revert NoReentrantCalls();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa52711c788a24071f8a872ea5ee3030f0f8f592abf8f0d5577707e585a7628d5\",\"license\":\"MIT\"},\"contracts/lib/Shadow.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { IERC4907A } from \\\"erc721a/contracts/extensions/IERC4907A.sol\\\";\\n\\ninterface IMintBurnableERC4907 {\\n    function mint(address to, address tokenAddress, uint256 tokenId) external returns (uint256);\\n    function burn(uint256 tokenId) external;\\n}\\n\\ncontract Shadow {\\n    \\n    address public immutable shadowToken;\\n\\n    constructor(address _token) {\\n        shadowToken = _token;\\n    }\\n\\n    function _mintToken(\\n        address to,\\n        address token,\\n        uint256 identifier,\\n        uint256 duration\\n    ) internal returns (uint256) {\\n        uint256 tid = IMintBurnableERC4907(shadowToken).mint(address(this), token, identifier);\\n        IERC4907A(shadowToken).setUser(tid, to, uint64(duration + block.timestamp));\\n        return tid;\\n    }\\n\\n    function _extendToken(address to, uint256 tokenId, uint256 expires) internal {\\n        IERC4907A(shadowToken).setUser(tokenId, to, uint64(expires));\\n    }\\n\\n    function _burnToken(uint256 tokenId) internal {\\n        IMintBurnableERC4907(shadowToken).burn(tokenId);\\n    }\\n}\",\"keccak256\":\"0x71b95c35b423d619bb4583e8a39c0227fd730c090d4b7071e79c8cac87910e8d\",\"license\":\"MIT\"},\"contracts/lib/SignatureVerification.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { EIP1271Interface } from \\\"../interfaces/EIP1271Interface.sol\\\";\\n\\nimport {\\n    SignatureVerificationErrors\\n} from \\\"../interfaces/SignatureVerificationErrors.sol\\\";\\n\\nimport { LowLevelHelpers } from \\\"./LowLevelHelpers.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title SignatureVerification\\n * @author 0age\\n * @notice SignatureVerification contains logic for verifying signatures.\\n */\\ncontract SignatureVerification is SignatureVerificationErrors, LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied signer.\\n     *\\n     * @param signer    The signer for the order.\\n     * @param digest    The digest to verify the signature against.\\n     * @param signature A signature from the signer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _assertValidSignature(\\n        address signer,\\n        bytes32 digest,\\n        bytes memory signature\\n    ) internal view {\\n        // Declare value for ecrecover equality or 1271 call success status.\\n        bool success;\\n\\n        // Utilize assembly to perform optimized signature verification check.\\n        assembly {\\n            // Ensure that first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Declare value for v signature parameter.\\n            let v\\n\\n            // Get the length of the signature.\\n            let signatureLength := mload(signature)\\n\\n            // Get the pointer to the value preceding the signature length.\\n            // This will be used for temporary memory overrides - either the\\n            // signature head for isValidSignature or the digest for ecrecover.\\n            let wordBeforeSignaturePtr := sub(signature, OneWord)\\n\\n            // Cache the current value behind the signature to restore it later.\\n            let cachedWordBeforeSignature := mload(wordBeforeSignaturePtr)\\n\\n            // Declare lenDiff + recoveredSigner scope to manage stack pressure.\\n            {\\n                // Take the difference between the max ECDSA signature length\\n                // and the actual signature length. Overflow desired for any\\n                // values > 65. If the diff is not 0 or 1, it is not a valid\\n                // ECDSA signature - move on to EIP1271 check.\\n                let lenDiff := sub(ECDSA_MaxLength, signatureLength)\\n\\n                // Declare variable for recovered signer.\\n                let recoveredSigner\\n\\n                // If diff is 0 or 1, it may be an ECDSA signature.\\n                // Try to recover signer.\\n                if iszero(gt(lenDiff, 1)) {\\n                    // Read the signature `s` value.\\n                    let originalSignatureS := mload(\\n                        add(signature, ECDSA_signature_s_offset)\\n                    )\\n\\n                    // Read the first byte of the word after `s`. If the\\n                    // signature is 65 bytes, this will be the real `v` value.\\n                    // If not, it will need to be modified - doing it this way\\n                    // saves an extra condition.\\n                    v := byte(\\n                        0,\\n                        mload(add(signature, ECDSA_signature_v_offset))\\n                    )\\n\\n                    // If lenDiff is 1, parse 64-byte signature as ECDSA.\\n                    if lenDiff {\\n                        // Extract yParity from highest bit of vs and add 27 to\\n                        // get v.\\n                        v := add(\\n                            shr(MaxUint8, originalSignatureS),\\n                            Signature_lower_v\\n                        )\\n\\n                        // Extract canonical s from vs, all but the highest bit.\\n                        // Temporarily overwrite the original `s` value in the\\n                        // signature.\\n                        mstore(\\n                            add(signature, ECDSA_signature_s_offset),\\n                            and(\\n                                originalSignatureS,\\n                                EIP2098_allButHighestBitMask\\n                            )\\n                        )\\n                    }\\n                    // Temporarily overwrite the signature length with `v` to\\n                    // conform to the expected input for ecrecover.\\n                    mstore(signature, v)\\n\\n                    // Temporarily overwrite the word before the length with\\n                    // `digest` to conform to the expected input for ecrecover.\\n                    mstore(wordBeforeSignaturePtr, digest)\\n\\n                    // Attempt to recover the signer for the given signature. Do\\n                    // not check the call status as ecrecover will return a null\\n                    // address if the signature is invalid.\\n                    pop(\\n                        staticcall(\\n                            gas(),\\n                            Ecrecover_precompile, // Call ecrecover precompile.\\n                            wordBeforeSignaturePtr, // Use data memory location.\\n                            Ecrecover_args_size, // Size of digest, v, r, and s.\\n                            0, // Write result to scratch space.\\n                            OneWord // Provide size of returned result.\\n                        )\\n                    )\\n\\n                    // Restore cached word before signature.\\n                    mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n\\n                    // Restore cached signature length.\\n                    mstore(signature, signatureLength)\\n\\n                    // Restore cached signature `s` value.\\n                    mstore(\\n                        add(signature, ECDSA_signature_s_offset),\\n                        originalSignatureS\\n                    )\\n\\n                    // Read the recovered signer from the buffer given as return\\n                    // space for ecrecover.\\n                    recoveredSigner := mload(0)\\n                }\\n\\n                // Set success to true if the signature provided was a valid\\n                // ECDSA signature and the signer is not the null address. Use\\n                // gt instead of direct as success is used outside of assembly.\\n                success := and(eq(signer, recoveredSigner), gt(signer, 0))\\n            }\\n\\n            // If the signature was not verified with ecrecover, try EIP1271.\\n            if iszero(success) {\\n                // Temporarily overwrite the word before the signature length\\n                // and use it as the head of the signature input to\\n                // `isValidSignature`, which has a value of 64.\\n                mstore(\\n                    wordBeforeSignaturePtr,\\n                    EIP1271_isValidSignature_signature_head_offset\\n                )\\n\\n                // Get pointer to use for the selector of `isValidSignature`.\\n                let selectorPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_selector_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the selector pointer.\\n                let cachedWordOverwrittenBySelector := mload(selectorPtr)\\n\\n                // Get pointer to use for `digest` input to `isValidSignature`.\\n                let digestPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_digest_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the digest pointer.\\n                let cachedWordOverwrittenByDigest := mload(digestPtr)\\n\\n                // Write the selector first, since it overlaps the digest.\\n                mstore(selectorPtr, EIP1271_isValidSignature_selector)\\n\\n                // Next, write the digest.\\n                mstore(digestPtr, digest)\\n\\n                // Call signer with `isValidSignature` to validate signature.\\n                success := staticcall(\\n                    gas(),\\n                    signer,\\n                    selectorPtr,\\n                    add(\\n                        signatureLength,\\n                        EIP1271_isValidSignature_calldata_baseLength\\n                    ),\\n                    0,\\n                    OneWord\\n                )\\n\\n                // Determine if the signature is valid on successful calls.\\n                if success {\\n                    // If first word of scratch space does not contain EIP-1271\\n                    // signature selector, revert.\\n                    if iszero(eq(mload(0), EIP1271_isValidSignature_selector)) {\\n                        // Revert with bad 1271 signature if signer has code.\\n                        if extcodesize(signer) {\\n                            // Bad contract signature.\\n                            mstore(0, BadContractSignature_error_signature)\\n                            revert(0, BadContractSignature_error_length)\\n                        }\\n\\n                        // Check if signature length was invalid.\\n                        if gt(sub(ECDSA_MaxLength, signatureLength), 1) {\\n                            // Revert with generic invalid signature error.\\n                            mstore(0, InvalidSignature_error_signature)\\n                            revert(0, InvalidSignature_error_length)\\n                        }\\n\\n                        // Check if v was invalid.\\n                        if iszero(\\n                            byte(v, ECDSA_twentySeventhAndTwentyEighthBytesSet)\\n                        ) {\\n                            // Revert with invalid v value.\\n                            mstore(0, BadSignatureV_error_signature)\\n                            mstore(BadSignatureV_error_offset, v)\\n                            revert(0, BadSignatureV_error_length)\\n                        }\\n\\n                        // Revert with generic invalid signer error message.\\n                        mstore(0, InvalidSigner_error_signature)\\n                        revert(0, InvalidSigner_error_length)\\n                    }\\n                }\\n\\n                // Restore the cached values overwritten by selector, digest and\\n                // signature head.\\n                mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n                mstore(selectorPtr, cachedWordOverwrittenBySelector)\\n                mstore(digestPtr, cachedWordOverwrittenByDigest)\\n            }\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Revert and pass reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with error indicating bad contract signature.\\n            assembly {\\n                mstore(0, BadContractSignature_error_signature)\\n                revert(0, BadContractSignature_error_length)\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9af8a720f3f6aac730d7896484f407ecea62105c1c9dc45666273d51555a0f42\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport \\\"./TokenTransferrerConstants.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { ConduitBatch1155Transfer } from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title TokenTransferrer\\n * @author 0age\\n * @custom:coauthor d1ll0n\\n * @custom:coauthor transmissions11\\n * @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\\n *         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\\n *         by conduits deployed by the ConduitController. Use great caution when\\n *         considering these functions for use in other codebases, as there are\\n *         significant side effects and edge cases that need to be thoroughly\\n *         understood and carefully addressed.\\n */\\ncontract TokenTransferrer is TokenTransferrerErrors {\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set on the\\n     *      contract performing the transfer.\\n     *\\n     * @param token      The ERC20 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC20Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\\n            mstore(ERC20_transferFrom_from_ptr, from)\\n            mstore(ERC20_transferFrom_to_ptr, to)\\n            mstore(ERC20_transferFrom_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transferFrom_sig_ptr,\\n                ERC20_transferFrom_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                from\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            from\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    function _performSelfERC20Transfer(\\n        address token,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transfer_sig_ptr, ERC20_transfer_signature)\\n            mstore(ERC20_transfer_to_ptr, to)\\n            mstore(ERC20_transfer_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transfer_sig_ptr,\\n                ERC20_transfer_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                address()\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            address()\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer an ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer. Note that this function does\\n     *      not check whether the receiver can accept the ERC721 token (i.e. it\\n     *      does not use `safeTransferFrom`).\\n     *\\n     * @param token      The ERC721 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     */\\n    function _performERC721Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC721 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data to memory starting with function selector.\\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\\n            mstore(ERC721_transferFrom_from_ptr, from)\\n            mstore(ERC721_transferFrom_to_ptr, to)\\n            mstore(ERC721_transferFrom_id_ptr, identifier)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC721_transferFrom_sig_ptr,\\n                ERC721_transferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer.\\n     *\\n     * @param token      The ERC1155 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The id to transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC1155Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The following memory slots will be used when populating call data\\n            // for the transfer; read the values and restore them later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n            let slot0x80 := mload(Slot0x80)\\n            let slot0xA0 := mload(Slot0xA0)\\n            let slot0xC0 := mload(Slot0xC0)\\n\\n            // Write call data into memory, beginning with function selector.\\n            mstore(\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_signature\\n            )\\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\\n            mstore(\\n                ERC1155_safeTransferFrom_data_offset_ptr,\\n                ERC1155_safeTransferFrom_data_length_offset\\n            )\\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer. NOTE: this function is not\\n     *      memory-safe; it will overwrite existing memory, restore the free\\n     *      memory pointer to the default value, and overwrite the zero slot.\\n     *      This function should only be called once memory is no longer\\n     *      required and when uninitialized arrays are not utilized, and memory\\n     *      should be considered fully corrupted (aside from the existence of a\\n     *      default-value free memory pointer) after calling this function.\\n     *\\n     * @param batchTransfers The group of 1155 batch transfers to perform.\\n     */\\n    function _performERC1155BatchTransfers(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) internal {\\n        // Utilize assembly to perform optimized batch 1155 transfers.\\n        assembly {\\n            let len := batchTransfers.length\\n            // Pointer to first head in the array, which is offset to the struct\\n            // at each index. This gets incremented after each loop to avoid\\n            // multiplying by 32 to get the offset for each element.\\n            let nextElementHeadPtr := batchTransfers.offset\\n\\n            // Pointer to beginning of the head of the array. This is the\\n            // reference position each offset references. It's held static to\\n            // let each loop calculate the data position for an element.\\n            let arrayHeadPtr := nextElementHeadPtr\\n\\n            // Write the function selector, which will be reused for each call:\\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\n            mstore(\\n                ConduitBatch1155Transfer_from_offset,\\n                ERC1155_safeBatchTransferFrom_signature\\n            )\\n\\n            // Iterate over each batch transfer.\\n            for {\\n                let i := 0\\n            } lt(i, len) {\\n                i := add(i, 1)\\n            } {\\n                // Read the offset to the beginning of the element and add\\n                // it to pointer to the beginning of the array head to get\\n                // the absolute position of the element in calldata.\\n                let elementPtr := add(\\n                    arrayHeadPtr,\\n                    calldataload(nextElementHeadPtr)\\n                )\\n\\n                // Retrieve the token from calldata.\\n                let token := calldataload(elementPtr)\\n\\n                // If the token has no code, revert.\\n                if iszero(extcodesize(token)) {\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Get the total number of supplied ids.\\n                let idsLength := calldataload(\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\\n                )\\n\\n                // Determine the expected offset for the amounts array.\\n                let expectedAmountsOffset := add(\\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\\n                    mul(idsLength, OneWord)\\n                )\\n\\n                // Validate struct encoding.\\n                let invalidEncoding := iszero(\\n                    and(\\n                        // ids.length == amounts.length\\n                        eq(\\n                            idsLength,\\n                            calldataload(add(elementPtr, expectedAmountsOffset))\\n                        ),\\n                        and(\\n                            // ids_offset == 0xa0\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatch1155Transfer_ids_head_offset\\n                                    )\\n                                ),\\n                                ConduitBatch1155Transfer_ids_length_offset\\n                            ),\\n                            // amounts_offset == 0xc0 + ids.length*32\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatchTransfer_amounts_head_offset\\n                                    )\\n                                ),\\n                                expectedAmountsOffset\\n                            )\\n                        )\\n                    )\\n                )\\n\\n                // Revert with an error if the encoding is not valid.\\n                if invalidEncoding {\\n                    mstore(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_selector\\n                    )\\n                    revert(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_length\\n                    )\\n                }\\n\\n                // Update the offset position for the next loop\\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\\n\\n                // Copy the first section of calldata (before dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\\n                    ConduitBatch1155Transfer_usable_head_size\\n                )\\n\\n                // Determine size of calldata required for ids and amounts. Note\\n                // that the size includes both lengths as well as the data.\\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\\n\\n                // Update the offset for the data array in memory.\\n                mstore(\\n                    BatchTransfer1155Params_data_head_ptr,\\n                    add(\\n                        BatchTransfer1155Params_ids_length_offset,\\n                        idsAndAmountsSize\\n                    )\\n                )\\n\\n                // Set the length of the data array in memory to zero.\\n                mstore(\\n                    add(\\n                        BatchTransfer1155Params_data_length_basePtr,\\n                        idsAndAmountsSize\\n                    ),\\n                    0\\n                )\\n\\n                // Determine the total calldata size for the call to transfer.\\n                let transferDataSize := add(\\n                    BatchTransfer1155Params_calldata_baseSize,\\n                    idsAndAmountsSize\\n                )\\n\\n                // Copy second section of calldata (including dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ids_length_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\\n                    idsAndAmountsSize\\n                )\\n\\n                // Perform the call to transfer 1155 tokens.\\n                let success := call(\\n                    gas(),\\n                    token,\\n                    0,\\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\\n                    transferDataSize, // Location of the length of callData.\\n                    0,\\n                    0\\n                )\\n\\n                // If the transfer reverted:\\n                if iszero(success) {\\n                    // If it returned a message, bubble it up as long as\\n                    // sufficient gas remains to do so:\\n                    if returndatasize() {\\n                        // Ensure that sufficient gas is available to copy\\n                        // returndata while expanding memory where necessary.\\n                        // Start by computing word size of returndata and\\n                        // allocated memory. Round up to the nearest full word.\\n                        let returnDataWords := div(\\n                            add(returndatasize(), AlmostOneWord),\\n                            OneWord\\n                        )\\n\\n                        // Note: use transferDataSize in place of msize() to\\n                        // work around a Yul warning that prevents accessing\\n                        // msize directly when the IR pipeline is activated.\\n                        // The free memory pointer is not used here because\\n                        // this function does almost all memory management\\n                        // manually and does not update it, and transferDataSize\\n                        // should be the largest memory value used (unless a\\n                        // previous batch was larger).\\n                        let msizeWords := div(transferDataSize, OneWord)\\n\\n                        // Next, compute the cost of the returndatacopy.\\n                        let cost := mul(CostPerWord, returnDataWords)\\n\\n                        // Then, compute cost of new memory allocation.\\n                        if gt(returnDataWords, msizeWords) {\\n                            cost := add(\\n                                cost,\\n                                add(\\n                                    mul(\\n                                        sub(returnDataWords, msizeWords),\\n                                        CostPerWord\\n                                    ),\\n                                    div(\\n                                        sub(\\n                                            mul(\\n                                                returnDataWords,\\n                                                returnDataWords\\n                                            ),\\n                                            mul(msizeWords, msizeWords)\\n                                        ),\\n                                        MemoryExpansionCoefficient\\n                                    )\\n                                )\\n                            )\\n                        }\\n\\n                        // Finally, add a small constant and compare to gas\\n                        // remaining; bubble up the revert data if enough gas is\\n                        // still available.\\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\\n                            // Copy returndata to memory; overwrite existing.\\n                            returndatacopy(0, 0, returndatasize())\\n\\n                            // Revert with memory region containing returndata.\\n                            revert(0, returndatasize())\\n                        }\\n                    }\\n\\n                    // Set the error signature.\\n                    mstore(\\n                        0,\\n                        ERC1155BatchTransferGenericFailure_error_signature\\n                    )\\n\\n                    // Write the token.\\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\\n\\n                    // Increase the offset to ids by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_ids_head_ptr,\\n                        ERC1155BatchTransferGenericFailure_ids_offset\\n                    )\\n\\n                    // Increase the offset to amounts by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_amounts_head_ptr,\\n                        add(\\n                            OneWord,\\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\\n                        )\\n                    )\\n\\n                    // Return modified region. The total size stays the same as\\n                    // `token` uses the same number of bytes as `data.length`.\\n                    revert(0, transferDataSize)\\n                }\\n            }\\n\\n            // Reset the free memory pointer to the default value; memory must\\n            // be assumed to be dirtied and not reused from this point forward.\\n            // Also note that the zero slot is not reset to zero, meaning empty\\n            // arrays cannot be safely created or utilized until it is restored.\\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9be626e5928b95748e08259c63a6168d3e0b3e490f2f340491b8afd546cbbcd1\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrerConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\nuint256 constant Slot0xC0 = 0xc0;\\n\\n// abi.encodeWithSignature(\\\"transferFrom(address,address,uint256)\\\")\\nuint256 constant ERC20_transferFrom_signature = (\\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"transfer(address,uint256)\\\")\\nuint256 constant ERC20_transfer_signature = (\\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transfer_sig_ptr = 0x0;\\nuint256 constant ERC20_transfer_to_ptr = 0x04;\\nuint256 constant ERC20_transfer_amount_ptr = 0x24;\\nuint256 constant ERC20_transfer_length = 0x44; // 4 + 32 * 2 == 68\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeTransferFrom(address,address,uint256,uint256,bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeTransferFrom_signature = (\\n    0xf242432a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\\n);\\n\\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\\n);\\n\\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\n// abi.encodeWithSignature(\\n//     \\\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\\\"\\n// )\\nuint256 constant TokenTransferGenericFailure_error_signature = (\\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\\n\\n// 4 + 32 * 5 == 164\\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\\n\\n// abi.encodeWithSignature(\\n//     \\\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\\\"\\n// )\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\\n    0x9889192300000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\\n\\n// 4 + 32 * 4 == 132\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200;\\n\\n// Values are offset by 32 bytes in order to write the token to the beginning\\n// in the event of a revert\\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x64;\\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0xc4;\\nuint256 constant BatchTransfer1155Params_calldata_baseSize = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\\n\\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\\n\\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\\n\\n// Note: abbreviated version of above constant to adhere to line length limit.\\nuint256 constant ConduitBatchTransfer_amounts_head_offset = 0x80;\\n\\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\\n    0xafc445e200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\\nuint256 constant ERC1155BatchTransferGenericFailure_ids_offset = 0xc0;\\n\",\"keccak256\":\"0x002bea8dcc1d37a0cdd6d1c25f536a1a13e01e1fb32b7bbb2a3016425e40b672\",\"license\":\"MIT\"},\"contracts/lib/Verifiers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderStatus } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { Assertions } from \\\"./Assertions.sol\\\";\\n\\nimport { SignatureVerification } from \\\"./SignatureVerification.sol\\\";\\n\\n/**\\n * @title Verifiers\\n * @author 0age\\n * @notice Verifiers contains functions for performing verifications.\\n */\\ncontract Verifiers is Assertions, SignatureVerification {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Assertions(conduitController) {}\\n\\n    /**\\n     * @dev Internal view function to ensure that the current time falls within\\n     *      an order's valid timespan.\\n     *\\n     * @param startTime       The time at which the order becomes active.\\n     * @param endTime         The time at which the order becomes inactive.\\n     * @param revertOnInvalid A boolean indicating whether to revert if the\\n     *                        order is not active.\\n     *\\n     * @return valid A boolean indicating whether the order is active.\\n     */\\n    function _verifyTime(\\n        uint256 startTime,\\n        uint256 endTime,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        // Revert if order's timespan hasn't started yet or has already ended.\\n        if (startTime > block.timestamp || endTime <= block.timestamp) {\\n            // Only revert if revertOnInvalid has been supplied as true.\\n            if (revertOnInvalid) {\\n                revert InvalidTime();\\n            }\\n\\n            // Return false as the order is invalid.\\n            return false;\\n        }\\n\\n        // Return true as the order time is valid.\\n        valid = true;\\n    }\\n\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied offerer. Note that in cases where a 64 or 65 byte signature\\n     *      is supplied, only standard ECDSA signatures that recover to a\\n     *      non-zero address are supported.\\n     *\\n     * @param offerer   The offerer for the order.\\n     * @param orderHash The order hash.\\n     * @param signature A signature from the offerer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _verifySignature(\\n        address offerer,\\n        bytes32 orderHash,\\n        bytes memory signature\\n    ) internal view {\\n        // Skip signature verification if the offerer is the caller.\\n        if (offerer == msg.sender) {\\n            return;\\n        }\\n\\n        // Derive EIP-712 digest using the domain separator and the order hash.\\n        bytes32 digest = _deriveEIP712Digest(_domainSeparator(), orderHash);\\n\\n        // Ensure that the signature for the digest is valid for the offerer.\\n        _assertValidSignature(offerer, digest, signature);\\n    }\\n\\n    function _verifyOrderStatus(\\n        bytes32 orderHash,\\n        OrderStatus storage orderStatus,\\n        bool firstPay,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        if (orderStatus.isCancelled) {\\n            if (revertOnInvalid) {\\n                revert OrderIsCancelled(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (orderStatus.isFinalized) {\\n            if (revertOnInvalid) {\\n                revert OrderAlreadyFinalized(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (firstPay) {\\n            if (orderStatus.paidTimes > 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        } else {\\n            if (orderStatus.paidTimes == 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderNotStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        }\\n\\n        valid = true;\\n    }\\n}\\n\",\"keccak256\":\"0x4166159d504ffb5810fbad9c64445fd23659f5b19e84a61dde67f8760bcd1255\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7723,"contract":"contracts/BNPL.sol:BNPL","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":5403,"contract":"contracts/BNPL.sol:BNPL","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":6907,"contract":"contracts/BNPL.sol:BNPL","label":"_orderStatus","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)"},{"astId":4379,"contract":"contracts/BNPL.sol:BNPL","label":"_orderStatus","offset":0,"slot":"3","type":"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OrderStatus)","numberOfBytes":"32","value":"t_struct(OrderStatus)5389_storage"},"t_struct(OrderStatus)5389_storage":{"encoding":"inplace","label":"struct OrderStatus","members":[{"astId":5374,"contract":"contracts/BNPL.sol:BNPL","label":"isValidated","offset":0,"slot":"0","type":"t_bool"},{"astId":5376,"contract":"contracts/BNPL.sol:BNPL","label":"isCancelled","offset":1,"slot":"0","type":"t_bool"},{"astId":5378,"contract":"contracts/BNPL.sol:BNPL","label":"isFinalized","offset":2,"slot":"0","type":"t_bool"},{"astId":5380,"contract":"contracts/BNPL.sol:BNPL","label":"isBroken","offset":3,"slot":"0","type":"t_bool"},{"astId":5382,"contract":"contracts/BNPL.sol:BNPL","label":"fulfiller","offset":4,"slot":"0","type":"t_address"},{"astId":5384,"contract":"contracts/BNPL.sol:BNPL","label":"startedAt","offset":0,"slot":"1","type":"t_uint256"},{"astId":5386,"contract":"contracts/BNPL.sol:BNPL","label":"shadowId","offset":0,"slot":"2","type":"t_uint256"},{"astId":5388,"contract":"contracts/BNPL.sol:BNPL","label":"paidTimes","offset":0,"slot":"3","type":"t_uint256"}],"numberOfBytes":"128"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ERC4907.sol":{"ERC4907":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"SetUserCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint64","name":"expires","type":"uint64"}],"name":"UpdateUser","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"tid","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"payable","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":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint64","name":"expires","type":"uint64"}],"name":"setUser","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"userExpires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"userOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"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}."},"name()":{"details":"Returns the token collection name."},"owner()":{"details":"Returns the address of the current owner."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"safeTransferFrom(address,address,uint256)":{"details":"Equivalent to `safeTransferFrom(from, to, tokenId, '')`."},"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 caller. Emits an {ApprovalForAll} event."},"setUser(uint256,address,uint64)":{"details":"Sets the `user` and `expires` for `tokenId`. The zero address indicates there is no user. Requirements: - The caller must own `tokenId` or be an approved operator."},"supportsInterface(bytes4)":{"details":"Override of {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the token collection symbol."},"totalSupply()":{"details":"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` from `from` to `to`. 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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"userExpires(uint256)":{"details":"Returns the user's expires of `tokenId`."},"userOf(uint256)":{"details":"Returns the user address for `tokenId`. The zero address indicates that there is no user or if the user is expired."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_23":{"entryPoint":null,"id":23,"parameterSlots":0,"returnSlots":0},"@_2476":{"entryPoint":null,"id":2476,"parameterSlots":0,"returnSlots":0},"@_8658":{"entryPoint":null,"id":8658,"parameterSlots":2,"returnSlots":0},"@_msgSender_2136":{"entryPoint":null,"id":2136,"parameterSlots":0,"returnSlots":1},"@_startTokenId_8667":{"entryPoint":null,"id":8667,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_111":{"entryPoint":127,"id":111,"parameterSlots":1,"returnSlots":0},"extract_byte_array_length":{"entryPoint":375,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:396:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"69:325:54","statements":[{"nodeType":"YulAssignment","src":"79:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"93:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"96:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"89:3:54"},"nodeType":"YulFunctionCall","src":"89:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"79:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"110:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"140:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"146:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"136:3:54"},"nodeType":"YulFunctionCall","src":"136:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"114:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"187:31:54","statements":[{"nodeType":"YulAssignment","src":"189:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"203:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"211:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"199:3:54"},"nodeType":"YulFunctionCall","src":"199:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"189:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"167:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"160:6:54"},"nodeType":"YulFunctionCall","src":"160:26:54"},"nodeType":"YulIf","src":"157:61:54"},{"body":{"nodeType":"YulBlock","src":"277:111:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"298:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"305:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"310:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"301:3:54"},"nodeType":"YulFunctionCall","src":"301:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"291:6:54"},"nodeType":"YulFunctionCall","src":"291:31:54"},"nodeType":"YulExpressionStatement","src":"291:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"342:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"345:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"335:6:54"},"nodeType":"YulFunctionCall","src":"335:15:54"},"nodeType":"YulExpressionStatement","src":"335:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"370:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"373:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"363:6:54"},"nodeType":"YulFunctionCall","src":"363:15:54"},"nodeType":"YulExpressionStatement","src":"363:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"233:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"256:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"264:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"253:2:54"},"nodeType":"YulFunctionCall","src":"253:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"230:2:54"},"nodeType":"YulFunctionCall","src":"230:38:54"},"nodeType":"YulIf","src":"227:161:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"49:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"58:6:54","type":""}],"src":"14:380:54"}]},"contents":"{\n    { }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040805180820182526004808252631093941360e21b6020808401828152855180870190965292855284015281519192916200005191600291620000d1565b50805162000067906003906020840190620000d1565b5050600080555062000079336200007f565b620001b3565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000df9062000177565b90600052602060002090601f0160209004810192826200010357600085556200014e565b82601f106200011e57805160ff19168380011785556200014e565b828001600101855582156200014e579182015b828111156200014e57825182559160200191906001019062000131565b506200015c92915062000160565b5090565b5b808211156200015c576000815560010162000161565b600181811c908216806200018c57607f821691505b602082108103620001ad57634e487b7160e01b600052602260045260246000fd5b50919050565b611bfe80620001c36000396000f3fe6080604052600436106101755760003560e01c80638da5cb5b116100cb578063c2f1f14a1161007f578063e030565e11610059578063e030565e14610400578063e985e9c514610420578063f2fde38b1461047657600080fd5b8063c2f1f14a1461038c578063c6c3bbe6146103c0578063c87b56dd146103e057600080fd5b806395d89b41116100b057806395d89b4114610344578063a22cb46514610359578063b88d4fde1461037957600080fd5b80638da5cb5b146102e95780638fc88c481461031457600080fd5b806323b872dd1161012d5780636352211e116101075780636352211e1461029457806370a08231146102b4578063715018a6146102d457600080fd5b806323b872dd1461024e57806342842e0e1461026157806342966c681461027457600080fd5b8063081812fc1161015e578063081812fc146101d1578063095ea7b31461021657806318160ddd1461022b57600080fd5b806301ffc9a71461017a57806306fdde03146101af575b600080fd5b34801561018657600080fd5b5061019a6101953660046116f7565b610496565b60405190151581526020015b60405180910390f35b3480156101bb57600080fd5b506101c46104f3565b6040516101a6919061176c565b3480156101dd57600080fd5b506101f16101ec36600461177f565b610585565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b6102296102243660046117c1565b6105ef565b005b34801561023757600080fd5b50600154600054035b6040519081526020016101a6565b61022961025c3660046117eb565b6106da565b61022961026f3660046117eb565b610973565b34801561028057600080fd5b5061022961028f36600461177f565b610993565b3480156102a057600080fd5b506101f16102af36600461177f565b6109b3565b3480156102c057600080fd5b506102406102cf366004611827565b6109be565b3480156102e057600080fd5b50610229610a40565b3480156102f557600080fd5b5060095473ffffffffffffffffffffffffffffffffffffffff166101f1565b34801561032057600080fd5b5061024061032f36600461177f565b60009081526008602052604090205460a01c90565b34801561035057600080fd5b506101c4610a54565b34801561036557600080fd5b50610229610374366004611842565b610a63565b610229610387366004611906565b610afa565b34801561039857600080fd5b506101f16103a736600461177f565b6000908152600860205260409020544260a01b81110290565b3480156103cc57600080fd5b506102406103db3660046117eb565b610b6a565b3480156103ec57600080fd5b506101c46103fb36600461177f565b610c0c565b34801561040c57600080fd5b5061022961041b3660046119b1565b610cde565b34801561042c57600080fd5b5061019a61043b3660046119fe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561048257600080fd5b50610229610491366004611827565b610e00565b60006104a182610eb9565b806104ed57507fad092b5c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461050290611a31565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611a31565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b5050505050905090565b600061059082610f9a565b6105c6576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105fa826109b3565b90503373ffffffffffffffffffffffffffffffffffffffff82161461065957610623813361043b565b610659576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006106e582610fda565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461074c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080546107858187335b73ffffffffffffffffffffffffffffffffffffffff9081169116811491141790565b6107c957610793863361043b565b6107c9576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610816576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561082157600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000841690036109105760018401600081815260046020526040812054900361090e57600054811461090e5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b61098e83838360405180602001604052806000815250610afa565b505050565b61099b611091565b6109a781600080610cde565b6109b081611112565b50565b60006104ed82610fda565b600073ffffffffffffffffffffffffffffffffffffffff8216610a0d576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b610a48611091565b610a52600061111d565b565b60606003805461050290611a31565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610b058484846106da565b73ffffffffffffffffffffffffffffffffffffffff83163b15610b6457610b2e84848484611194565b610b64576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610b74611091565b610b7f8460016112ef565b6001610b8a60005490565b610b949190611a7e565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff958616815260208082019586526000848152600a90915291909120905181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169516949094178455915160019093019290925592915050565b6000818152600a602090815260409182902082518084018452815473ffffffffffffffffffffffffffffffffffffffff1680825260019092015492810183905292517fc87b56dd00000000000000000000000000000000000000000000000000000000815260048101929092526060929163c87b56dd90602401600060405180830381865afa925050508015610cc457506040513d6000823e601f3d908101601f19168201604052610cc19190810190611abc565b60015b610cd157610cd18361142d565b9392505050565b50919050565b6000610ce9846109b3565b90503373ffffffffffffffffffffffffffffffffffffffff821614610d6d57610d12813361043b565b610d6d5733610d2085610585565b73ffffffffffffffffffffffffffffffffffffffff1614610d6d576040517f4f1dd8e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526008602090815260409182902073ffffffffffffffffffffffffffffffffffffffff861660a086901b7bffffffffffffffff0000000000000000000000000000000000000000168117909155915167ffffffffffffffff8516815286917f4e06b4e7000e659094299b3533b47b6aa8ad048e95e872d23d1f4ee55af89cfe910160405180910390a350505050565b610e08611091565b73ffffffffffffffffffffffffffffffffffffffff8116610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109b08161111d565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610f4c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806104ed5750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60008054821080156104ed5750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b60008160005481101561105f57600081815260046020526040812054907c01000000000000000000000000000000000000000000000000000000008216900361105d575b80600003610cd157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160008181526004602052604090205461101e565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095473ffffffffffffffffffffffffffffffffffffffff163314610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ea7565b6109b08160006114d6565b6009805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906111ef903390899088908890600401611b33565b6020604051808303816000875af192505050801561122a575060408051601f3d908101601f1916820190925261122791810190611b7c565b60015b6112a1573d808015611258576040519150601f19603f3d011682016040523d82523d6000602084013e61125d565b606091505b508051600003611299576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b600080549082900361132d576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146113e957808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001016113b1565b5081600003611424576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b606061143882610f9a565b61146e576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061148560408051602081019091526000815290565b905080516000036114a55760405180602001604052806000815250610cd1565b806114af84611685565b6040516020016114c0929190611b99565b6040516020818303038152906040529392505050565b60006114e183610fda565b9050806000806114ff86600090815260066020526040902080549091565b91509150841561155857611514818433610763565b61155857611522833361043b565b611558576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561156357600082555b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b177c0300000000000000000000000000000000000000000000000000000000176000878152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000851690036116305760018601600081815260046020526040812054900361162e57600054811461162e5760008181526004602052604090208590555b505b604051869060009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061169f5750819003601f19909101908152919050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146109b057600080fd5b60006020828403121561170957600080fd5b8135610cd1816116c9565b60005b8381101561172f578181015183820152602001611717565b83811115610b645750506000910152565b60008151808452611758816020860160208601611714565b601f01601f19169290920160200192915050565b602081526000610cd16020830184611740565b60006020828403121561179157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146117bc57600080fd5b919050565b600080604083850312156117d457600080fd5b6117dd83611798565b946020939093013593505050565b60008060006060848603121561180057600080fd5b61180984611798565b925061181760208501611798565b9150604084013590509250925092565b60006020828403121561183957600080fd5b610cd182611798565b6000806040838503121561185557600080fd5b61185e83611798565b91506020830135801515811461187357600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118d6576118d661187e565b604052919050565b600067ffffffffffffffff8211156118f8576118f861187e565b50601f01601f191660200190565b6000806000806080858703121561191c57600080fd5b61192585611798565b935061193360208601611798565b925060408501359150606085013567ffffffffffffffff81111561195657600080fd5b8501601f8101871361196757600080fd5b803561197a611975826118de565b6118ad565b81815288602083850101111561198f57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806000606084860312156119c657600080fd5b833592506119d660208501611798565b9150604084013567ffffffffffffffff811681146119f357600080fd5b809150509250925092565b60008060408385031215611a1157600080fd5b611a1a83611798565b9150611a2860208401611798565b90509250929050565b600181811c90821680611a4557607f821691505b602082108103610cd8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600082821015611ab7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b600060208284031215611ace57600080fd5b815167ffffffffffffffff811115611ae557600080fd5b8201601f81018413611af657600080fd5b8051611b04611975826118de565b818152856020838501011115611b1957600080fd5b611b2a826020830160208601611714565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611b726080830184611740565b9695505050505050565b600060208284031215611b8e57600080fd5b8151610cd1816116c9565b60008351611bab818460208801611714565b835190830190611bbf818360208801611714565b0194935050505056fea26469706673582212202dadfde1354b4329fbb4f3f73ed877f7c2cb3f744bd1963f9f303232d445f44c64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH4 0x10939413 PUSH1 0xE2 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH3 0x51 SWAP2 PUSH1 0x2 SWAP2 PUSH3 0xD1 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x67 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0xD1 JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 SSTORE POP PUSH3 0x79 CALLER PUSH3 0x7F JUMP JUMPDEST PUSH3 0x1B3 JUMP JUMPDEST PUSH1 0x9 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 SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0xDF SWAP1 PUSH3 0x177 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x103 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x14E JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x11E JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x14E JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x14E JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x14E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x131 JUMP JUMPDEST POP PUSH3 0x15C SWAP3 SWAP2 POP PUSH3 0x160 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x15C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x161 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x18C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1AD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BFE DUP1 PUSH3 0x1C3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x175 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xC2F1F14A GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE030565E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE030565E EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC2F1F14A EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0xC6C3BBE6 EQ PUSH2 0x3C0 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x8FC88C48 EQ PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x12D JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x81812FC GT PUSH2 0x15E JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1AF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19A PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x16F7 JUMP JUMPDEST PUSH2 0x496 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 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C4 PUSH2 0x4F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A6 SWAP2 SWAP1 PUSH2 0x176C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F1 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH2 0x585 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A6 JUMP JUMPDEST PUSH2 0x229 PUSH2 0x224 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C1 JUMP JUMPDEST PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH1 0x0 SLOAD SUB JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A6 JUMP JUMPDEST PUSH2 0x229 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x17EB JUMP JUMPDEST PUSH2 0x6DA JUMP JUMPDEST PUSH2 0x229 PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x17EB JUMP JUMPDEST PUSH2 0x973 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0x28F CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH2 0x993 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F1 PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH2 0x9B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x240 PUSH2 0x2CF CALLDATASIZE PUSH1 0x4 PUSH2 0x1827 JUMP JUMPDEST PUSH2 0x9BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0xA40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x240 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xA0 SHR SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C4 PUSH2 0xA54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0x374 CALLDATASIZE PUSH1 0x4 PUSH2 0x1842 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH2 0x229 PUSH2 0x387 CALLDATASIZE PUSH1 0x4 PUSH2 0x1906 JUMP JUMPDEST PUSH2 0xAFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F1 PUSH2 0x3A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP PUSH1 0xA0 SHL DUP2 GT MUL SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x240 PUSH2 0x3DB CALLDATASIZE PUSH1 0x4 PUSH2 0x17EB JUMP JUMPDEST PUSH2 0xB6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C4 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH2 0xC0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x19B1 JUMP JUMPDEST PUSH2 0xCDE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19A PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x19FE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x1827 JUMP JUMPDEST PUSH2 0xE00 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A1 DUP3 PUSH2 0xEB9 JUMP JUMPDEST DUP1 PUSH2 0x4ED JUMPI POP PUSH32 0xAD092B5C00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x502 SWAP1 PUSH2 0x1A31 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x52E SWAP1 PUSH2 0x1A31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x57B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x550 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x590 DUP3 PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x5C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCF4700E400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FA DUP3 PUSH2 0x9B3 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x659 JUMPI PUSH2 0x623 DUP2 CALLER PUSH2 0x43B JUMP JUMPDEST PUSH2 0x659 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCFB3B94200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP6 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E5 DUP3 PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x74C JUMPI PUSH1 0x40 MLOAD PUSH32 0xA114810000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x785 DUP2 DUP8 CALLER JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND DUP2 EQ SWAP2 EQ OR SWAP1 JUMP JUMPDEST PUSH2 0x7C9 JUMPI PUSH2 0x793 DUP7 CALLER PUSH2 0x43B JUMP JUMPDEST PUSH2 0x7C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x59C896BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEA553B3400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP3 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE TIMESTAMP PUSH1 0xA0 SHL OR PUSH29 0x200000000000000000000000000000000000000000000000000000000 OR PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH29 0x200000000000000000000000000000000000000000000000000000000 DUP5 AND SWAP1 SUB PUSH2 0x910 JUMPI PUSH1 0x1 DUP5 ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SUB PUSH2 0x90E JUMPI PUSH1 0x0 SLOAD DUP2 EQ PUSH2 0x90E JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE JUMPDEST POP JUMPDEST DUP4 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x98E DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xAFA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x99B PUSH2 0x1091 JUMP JUMPDEST PUSH2 0x9A7 DUP2 PUSH1 0x0 DUP1 PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x9B0 DUP2 PUSH2 0x1112 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4ED DUP3 PUSH2 0xFDA JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xA0D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8F4EB60400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xA48 PUSH2 0x1091 JUMP JUMPDEST PUSH2 0xA52 PUSH1 0x0 PUSH2 0x111D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x502 SWAP1 PUSH2 0x1A31 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xB05 DUP5 DUP5 DUP5 PUSH2 0x6DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0xB64 JUMPI PUSH2 0xB2E DUP5 DUP5 DUP5 DUP5 PUSH2 0x1194 JUMP JUMPDEST PUSH2 0xB64 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD1A57ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB74 PUSH2 0x1091 JUMP JUMPDEST PUSH2 0xB7F DUP5 PUSH1 0x1 PUSH2 0x12EF JUMP JUMPDEST PUSH1 0x1 PUSH2 0xB8A PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB94 SWAP2 SWAP1 PUSH2 0x1A7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP6 DUP7 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xA SWAP1 SWAP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP6 AND SWAP5 SWAP1 SWAP5 OR DUP5 SSTORE SWAP2 MLOAD PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD SWAP3 DUP2 ADD DUP4 SWAP1 MSTORE SWAP3 MLOAD PUSH32 0xC87B56DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 SWAP2 PUSH4 0xC87B56DD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xCC4 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xCC1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1ABC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xCD1 JUMPI PUSH2 0xCD1 DUP4 PUSH2 0x142D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE9 DUP5 PUSH2 0x9B3 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0xD6D JUMPI PUSH2 0xD12 DUP2 CALLER PUSH2 0x43B JUMP JUMPDEST PUSH2 0xD6D JUMPI CALLER PUSH2 0xD20 DUP6 PUSH2 0x585 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD6D JUMPI PUSH1 0x40 MLOAD PUSH32 0x4F1DD8E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0xA0 DUP7 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND DUP2 MSTORE DUP7 SWAP2 PUSH32 0x4E06B4E7000E659094299B3533B47B6AA8AD048E95E872D23D1F4EE55AF89CFE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0xE08 PUSH2 0x1091 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xEB0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9B0 DUP2 PUSH2 0x111D JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0xF4C JUMPI POP PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST DUP1 PUSH2 0x4ED JUMPI POP POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP3 LT DUP1 ISZERO PUSH2 0x4ED JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SLOAD DUP2 LT ISZERO PUSH2 0x105F JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 SUB PUSH2 0x105D JUMPI JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0xCD1 JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x101E JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDF2D9B4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xA52 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xEA7 JUMP JUMPDEST PUSH2 0x9B0 DUP2 PUSH1 0x0 PUSH2 0x14D6 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x11EF SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B33 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x122A JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1227 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x12A1 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1258 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 0x125D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1299 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD1A57ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 DUP3 SWAP1 SUB PUSH2 0x132D JUMPI PUSH1 0x40 MLOAD PUSH32 0xB562E8DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH9 0x10000000000000001 DUP9 MUL ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 PUSH1 0x1 DUP6 EQ PUSH1 0xE1 SHL TIMESTAMP PUSH1 0xA0 SHL OR DUP4 OR SWAP1 SSTORE DUP3 DUP5 ADD SWAP1 DUP4 SWAP1 DUP4 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 PUSH1 0x1 DUP4 ADD JUMPDEST DUP2 DUP2 EQ PUSH2 0x13E9 JUMPI DUP1 DUP4 PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x0 DUP1 LOG4 PUSH1 0x1 ADD PUSH2 0x13B1 JUMP JUMPDEST POP DUP2 PUSH1 0x0 SUB PUSH2 0x1424 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E07630000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1438 DUP3 PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x146E JUMPI PUSH1 0x40 MLOAD PUSH32 0xA14C4B5000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1485 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x14A5 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xCD1 JUMP JUMPDEST DUP1 PUSH2 0x14AF DUP5 PUSH2 0x1685 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14E1 DUP4 PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 DUP1 PUSH2 0x14FF DUP7 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP5 ISZERO PUSH2 0x1558 JUMPI PUSH2 0x1514 DUP2 DUP5 CALLER PUSH2 0x763 JUMP JUMPDEST PUSH2 0x1558 JUMPI PUSH2 0x1522 DUP4 CALLER PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1558 JUMPI PUSH1 0x40 MLOAD PUSH32 0x59C896BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1563 JUMPI PUSH1 0x0 DUP3 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE TIMESTAMP PUSH1 0xA0 SHL OR PUSH29 0x300000000000000000000000000000000000000000000000000000000 OR PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH29 0x200000000000000000000000000000000000000000000000000000000 DUP6 AND SWAP1 SUB PUSH2 0x1630 JUMPI PUSH1 0x1 DUP7 ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SUB PUSH2 0x162E JUMPI PUSH1 0x0 SLOAD DUP2 EQ PUSH2 0x162E JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD DUP7 SWAP1 PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP PUSH1 0x1 DUP1 SLOAD DUP2 ADD SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA0 PUSH1 0x40 MLOAD ADD DUP1 PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 SUB SWAP2 POP POP PUSH1 0x0 DUP2 MSTORE DUP1 DUP3 JUMPDEST PUSH1 0x1 DUP4 SUB SWAP3 POP PUSH1 0xA DUP2 MOD PUSH1 0x30 ADD DUP4 MSTORE8 PUSH1 0xA SWAP1 DIV DUP1 PUSH2 0x169F JUMPI POP DUP2 SWAP1 SUB PUSH1 0x1F NOT SWAP1 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x9B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCD1 DUP2 PUSH2 0x16C9 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x172F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1717 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xB64 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1758 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xCD1 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1740 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x17BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17DD DUP4 PUSH2 0x1798 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1800 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1809 DUP5 PUSH2 0x1798 JUMP JUMPDEST SWAP3 POP PUSH2 0x1817 PUSH1 0x20 DUP6 ADD PUSH2 0x1798 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCD1 DUP3 PUSH2 0x1798 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x185E DUP4 PUSH2 0x1798 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x18D6 JUMPI PUSH2 0x18D6 PUSH2 0x187E JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x18F8 JUMPI PUSH2 0x18F8 PUSH2 0x187E JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x191C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1925 DUP6 PUSH2 0x1798 JUMP JUMPDEST SWAP4 POP PUSH2 0x1933 PUSH1 0x20 DUP7 ADD PUSH2 0x1798 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1956 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x1967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x197A PUSH2 0x1975 DUP3 PUSH2 0x18DE JUMP JUMPDEST PUSH2 0x18AD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x198F 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 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x19C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x19D6 PUSH1 0x20 DUP6 ADD PUSH2 0x1798 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x19F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A1A DUP4 PUSH2 0x1798 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A28 PUSH1 0x20 DUP5 ADD PUSH2 0x1798 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1A45 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xCD8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1AB7 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ACE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1AF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1B04 PUSH2 0x1975 DUP3 PUSH2 0x18DE JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x1B19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B2A DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1714 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1B72 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1740 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCD1 DUP2 PUSH2 0x16C9 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1BAB DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1714 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1BBF DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1714 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D 0xAD REVERT 0xE1 CALLDATALOAD 0x4B NUMBER 0x29 0xFB 0xB4 RETURN 0xF7 RETURNDATACOPY 0xD8 PUSH24 0xF7C2CB3F744BD1963F9F303232D445F44C64736F6C634300 ADDMOD 0xE STOP CALLER ","sourceMap":"424:1015:14:-:0;;;607:40;;;;;;;;;-1:-1:-1;4946:154:50;;;;;;;;;;;;-1:-1:-1;;;4946:154:50;;;;;;;;;;;;;;;;;;;;;5012:13;;4946:154;;;5012:13;;:5;;:13;:::i;:::-;-1:-1:-1;5035:17:50;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;5482:7:50;5062:31;;-1:-1:-1;936:32:0;719:10:9;936:18:0;:32::i;:::-;424:1015:14;;2433:187:0;2525:6;;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;424:1015:14:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;424:1015:14;;;-1:-1:-1;424:1015:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:380:54;93:1;89:12;;;;136;;;157:61;;211:4;203:6;199:17;189:27;;157:61;264:2;256:6;253:14;233:18;230:38;227:161;;310:10;305:3;301:20;298:1;291:31;345:4;342:1;335:15;373:4;370:1;363:15;227:161;;14:380;;;:::o;:::-;424:1015:14;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfers_9528":{"entryPoint":null,"id":9528,"parameterSlots":4,"returnSlots":0},"@_baseURI_8925":{"entryPoint":null,"id":8925,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfers_9515":{"entryPoint":null,"id":9515,"parameterSlots":4,"returnSlots":0},"@_burn_10032":{"entryPoint":5334,"id":10032,"parameterSlots":2,"returnSlots":0},"@_burn_9880":{"entryPoint":4370,"id":9880,"parameterSlots":1,"returnSlots":0},"@_checkContractOnERC721Received_9583":{"entryPoint":4500,"id":9583,"parameterSlots":4,"returnSlots":1},"@_checkOwner_54":{"entryPoint":4241,"id":54,"parameterSlots":0,"returnSlots":0},"@_exists_9267":{"entryPoint":3994,"id":9267,"parameterSlots":1,"returnSlots":1},"@_extraData_10089":{"entryPoint":null,"id":10089,"parameterSlots":3,"returnSlots":1},"@_getApprovedSlotAndAddress_9300":{"entryPoint":null,"id":9300,"parameterSlots":1,"returnSlots":2},"@_isSenderApprovedOrOwner_9281":{"entryPoint":null,"id":9281,"parameterSlots":3,"returnSlots":1},"@_mint_9679":{"entryPoint":4847,"id":9679,"parameterSlots":2,"returnSlots":0},"@_msgSenderERC721A_10132":{"entryPoint":null,"id":10132,"parameterSlots":0,"returnSlots":1},"@_msgSender_2136":{"entryPoint":null,"id":2136,"parameterSlots":0,"returnSlots":1},"@_nextExtraData_10122":{"entryPoint":null,"id":10122,"parameterSlots":3,"returnSlots":1},"@_nextInitializedFlag_9129":{"entryPoint":null,"id":9129,"parameterSlots":1,"returnSlots":1},"@_nextTokenId_8676":{"entryPoint":null,"id":8676,"parameterSlots":0,"returnSlots":1},"@_packOwnershipData_9119":{"entryPoint":null,"id":9119,"parameterSlots":2,"returnSlots":1},"@_packedOwnershipOf_9053":{"entryPoint":4058,"id":9053,"parameterSlots":1,"returnSlots":1},"@_startTokenId_8667":{"entryPoint":null,"id":8667,"parameterSlots":0,"returnSlots":1},"@_toString_10142":{"entryPoint":5765,"id":10142,"parameterSlots":1,"returnSlots":1},"@_transferOwnership_111":{"entryPoint":4381,"id":111,"parameterSlots":1,"returnSlots":0},"@approve_9174":{"entryPoint":1519,"id":9174,"parameterSlots":2,"returnSlots":0},"@balanceOf_8740":{"entryPoint":2494,"id":8740,"parameterSlots":1,"returnSlots":1},"@burn_2532":{"entryPoint":2451,"id":2532,"parameterSlots":1,"returnSlots":0},"@getApproved_9197":{"entryPoint":1413,"id":9197,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_9241":{"entryPoint":null,"id":9241,"parameterSlots":2,"returnSlots":1},"@mint_2511":{"entryPoint":2922,"id":2511,"parameterSlots":3,"returnSlots":1},"@name_8863":{"entryPoint":1267,"id":8863,"parameterSlots":0,"returnSlots":1},"@ownerOf_8945":{"entryPoint":2483,"id":8945,"parameterSlots":1,"returnSlots":1},"@owner_40":{"entryPoint":null,"id":40,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_68":{"entryPoint":2624,"id":68,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_9464":{"entryPoint":2419,"id":9464,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_9502":{"entryPoint":2810,"id":9502,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_9223":{"entryPoint":2659,"id":9223,"parameterSlots":2,"returnSlots":0},"@setUser_10431":{"entryPoint":3294,"id":10431,"parameterSlots":3,"returnSlots":0},"@supportsInterface_10493":{"entryPoint":1174,"id":10493,"parameterSlots":1,"returnSlots":1},"@supportsInterface_8853":{"entryPoint":3769,"id":8853,"parameterSlots":1,"returnSlots":1},"@symbol_8873":{"entryPoint":2644,"id":8873,"parameterSlots":0,"returnSlots":1},"@tokenURI_2573":{"entryPoint":3084,"id":2573,"parameterSlots":1,"returnSlots":1},"@tokenURI_8916":{"entryPoint":5165,"id":8916,"parameterSlots":1,"returnSlots":1},"@totalSupply_8692":{"entryPoint":null,"id":8692,"parameterSlots":0,"returnSlots":1},"@transferFrom_9445":{"entryPoint":1754,"id":9445,"parameterSlots":3,"returnSlots":0},"@transferOwnership_91":{"entryPoint":3584,"id":91,"parameterSlots":1,"returnSlots":0},"@userExpires_10472":{"entryPoint":null,"id":10472,"parameterSlots":1,"returnSlots":1},"@userOf_10456":{"entryPoint":null,"id":10456,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":6040,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":6183,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":6654,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":6123,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":6406,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":6210,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":6081,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":5879,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":7036,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptr_fromMemory":{"entryPoint":6844,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":6015,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_addresst_uint64":{"entryPoint":6577,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_string":{"entryPoint":5952,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":7065,"id":null,"parameterSlots":3,"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_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":6963,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__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":5996,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":6317,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":6366,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":6782,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":5908,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6705,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x41":{"entryPoint":6270,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":5833,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9331:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:133:54","statements":[{"body":{"nodeType":"YulBlock","src":"169:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:54"},"nodeType":"YulFunctionCall","src":"171:12:54"},"nodeType":"YulExpressionStatement","src":"171:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"99:66:54","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:54"},"nodeType":"YulFunctionCall","src":"88:78:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:54"},"nodeType":"YulFunctionCall","src":"78:89:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:54"},"nodeType":"YulFunctionCall","src":"71:97:54"},"nodeType":"YulIf","src":"68:117:54"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:54","type":""}],"src":"14:177:54"},{"body":{"nodeType":"YulBlock","src":"265:176:54","statements":[{"body":{"nodeType":"YulBlock","src":"311:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"320:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"323:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"313:6:54"},"nodeType":"YulFunctionCall","src":"313:12:54"},"nodeType":"YulExpressionStatement","src":"313:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"286:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"295:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"282:3:54"},"nodeType":"YulFunctionCall","src":"282:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"307:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"278:3:54"},"nodeType":"YulFunctionCall","src":"278:32:54"},"nodeType":"YulIf","src":"275:52:54"},{"nodeType":"YulVariableDeclaration","src":"336:36:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"362:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"349:12:54"},"nodeType":"YulFunctionCall","src":"349:23:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"340:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"405:5:54"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"381:23:54"},"nodeType":"YulFunctionCall","src":"381:30:54"},"nodeType":"YulExpressionStatement","src":"381:30:54"},{"nodeType":"YulAssignment","src":"420:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"430:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"420:6:54"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"231:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"242:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"254:6:54","type":""}],"src":"196:245:54"},{"body":{"nodeType":"YulBlock","src":"541:92:54","statements":[{"nodeType":"YulAssignment","src":"551:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"563:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"574:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"559:3:54"},"nodeType":"YulFunctionCall","src":"559:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"551:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"593:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"618:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"611:6:54"},"nodeType":"YulFunctionCall","src":"611:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"604:6:54"},"nodeType":"YulFunctionCall","src":"604:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"586:6:54"},"nodeType":"YulFunctionCall","src":"586:41:54"},"nodeType":"YulExpressionStatement","src":"586:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"510:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"521:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"532:4:54","type":""}],"src":"446:187:54"},{"body":{"nodeType":"YulBlock","src":"691:205:54","statements":[{"nodeType":"YulVariableDeclaration","src":"701:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"710:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"705:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"770:63:54","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"795:3:54"},{"name":"i","nodeType":"YulIdentifier","src":"800:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"791:3:54"},"nodeType":"YulFunctionCall","src":"791:11:54"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"814:3:54"},{"name":"i","nodeType":"YulIdentifier","src":"819:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"810:3:54"},"nodeType":"YulFunctionCall","src":"810:11:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"804:5:54"},"nodeType":"YulFunctionCall","src":"804:18:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"784:6:54"},"nodeType":"YulFunctionCall","src":"784:39:54"},"nodeType":"YulExpressionStatement","src":"784:39:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"731:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"734:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"728:2:54"},"nodeType":"YulFunctionCall","src":"728:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"742:19:54","statements":[{"nodeType":"YulAssignment","src":"744:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"753:1:54"},{"kind":"number","nodeType":"YulLiteral","src":"756:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"749:3:54"},"nodeType":"YulFunctionCall","src":"749:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"744:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"724:3:54","statements":[]},"src":"720:113:54"},{"body":{"nodeType":"YulBlock","src":"859:31:54","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"872:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"877:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"868:3:54"},"nodeType":"YulFunctionCall","src":"868:16:54"},{"kind":"number","nodeType":"YulLiteral","src":"886:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"861:6:54"},"nodeType":"YulFunctionCall","src":"861:27:54"},"nodeType":"YulExpressionStatement","src":"861:27:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"848:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"851:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"845:2:54"},"nodeType":"YulFunctionCall","src":"845:13:54"},"nodeType":"YulIf","src":"842:48:54"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"669:3:54","type":""},{"name":"dst","nodeType":"YulTypedName","src":"674:3:54","type":""},{"name":"length","nodeType":"YulTypedName","src":"679:6:54","type":""}],"src":"638:258:54"},{"body":{"nodeType":"YulBlock","src":"951:267:54","statements":[{"nodeType":"YulVariableDeclaration","src":"961:26:54","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"981:5:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"975:5:54"},"nodeType":"YulFunctionCall","src":"975:12:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"965:6:54","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1003:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"1008:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"996:6:54"},"nodeType":"YulFunctionCall","src":"996:19:54"},"nodeType":"YulExpressionStatement","src":"996:19:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1050:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"1057:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1046:3:54"},"nodeType":"YulFunctionCall","src":"1046:16:54"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1068:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1073:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1064:3:54"},"nodeType":"YulFunctionCall","src":"1064:14:54"},{"name":"length","nodeType":"YulIdentifier","src":"1080:6:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1024:21:54"},"nodeType":"YulFunctionCall","src":"1024:63:54"},"nodeType":"YulExpressionStatement","src":"1024:63:54"},{"nodeType":"YulAssignment","src":"1096:116:54","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1111:3:54"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1124:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1132:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1120:3:54"},"nodeType":"YulFunctionCall","src":"1120:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"1137:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1116:3:54"},"nodeType":"YulFunctionCall","src":"1116:88:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1107:3:54"},"nodeType":"YulFunctionCall","src":"1107:98:54"},{"kind":"number","nodeType":"YulLiteral","src":"1207:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1103:3:54"},"nodeType":"YulFunctionCall","src":"1103:109:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1096:3:54"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"928:5:54","type":""},{"name":"pos","nodeType":"YulTypedName","src":"935:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"943:3:54","type":""}],"src":"901:317:54"},{"body":{"nodeType":"YulBlock","src":"1344:99:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1361:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1372:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1354:6:54"},"nodeType":"YulFunctionCall","src":"1354:21:54"},"nodeType":"YulExpressionStatement","src":"1354:21:54"},{"nodeType":"YulAssignment","src":"1384:53:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1410:6:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1422:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1433:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1418:3:54"},"nodeType":"YulFunctionCall","src":"1418:18:54"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1392:17:54"},"nodeType":"YulFunctionCall","src":"1392:45:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1384:4:54"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1313:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1324:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1335:4:54","type":""}],"src":"1223:220:54"},{"body":{"nodeType":"YulBlock","src":"1518:110:54","statements":[{"body":{"nodeType":"YulBlock","src":"1564:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1573:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1576:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1566:6:54"},"nodeType":"YulFunctionCall","src":"1566:12:54"},"nodeType":"YulExpressionStatement","src":"1566:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1548:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1535:3:54"},"nodeType":"YulFunctionCall","src":"1535:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1560:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1531:3:54"},"nodeType":"YulFunctionCall","src":"1531:32:54"},"nodeType":"YulIf","src":"1528:52:54"},{"nodeType":"YulAssignment","src":"1589:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1612:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1599:12:54"},"nodeType":"YulFunctionCall","src":"1599:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1589:6:54"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1484:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1495:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1507:6:54","type":""}],"src":"1448:180:54"},{"body":{"nodeType":"YulBlock","src":"1734:125:54","statements":[{"nodeType":"YulAssignment","src":"1744:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1756:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1767:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1752:3:54"},"nodeType":"YulFunctionCall","src":"1752:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1744:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1786:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1801:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1809:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1797:3:54"},"nodeType":"YulFunctionCall","src":"1797:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1779:6:54"},"nodeType":"YulFunctionCall","src":"1779:74:54"},"nodeType":"YulExpressionStatement","src":"1779:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1703:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1714:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1725:4:54","type":""}],"src":"1633:226:54"},{"body":{"nodeType":"YulBlock","src":"1913:147:54","statements":[{"nodeType":"YulAssignment","src":"1923:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1945:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1932:12:54"},"nodeType":"YulFunctionCall","src":"1932:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1923:5:54"}]},{"body":{"nodeType":"YulBlock","src":"2038:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2047:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2050:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2040:6:54"},"nodeType":"YulFunctionCall","src":"2040:12:54"},"nodeType":"YulExpressionStatement","src":"2040:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1974:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1985:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"1992:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1981:3:54"},"nodeType":"YulFunctionCall","src":"1981:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1971:2:54"},"nodeType":"YulFunctionCall","src":"1971:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1964:6:54"},"nodeType":"YulFunctionCall","src":"1964:73:54"},"nodeType":"YulIf","src":"1961:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1892:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1903:5:54","type":""}],"src":"1864:196:54"},{"body":{"nodeType":"YulBlock","src":"2152:167:54","statements":[{"body":{"nodeType":"YulBlock","src":"2198:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2207:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2210:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2200:6:54"},"nodeType":"YulFunctionCall","src":"2200:12:54"},"nodeType":"YulExpressionStatement","src":"2200:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2173:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2182:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2169:3:54"},"nodeType":"YulFunctionCall","src":"2169:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2165:3:54"},"nodeType":"YulFunctionCall","src":"2165:32:54"},"nodeType":"YulIf","src":"2162:52:54"},{"nodeType":"YulAssignment","src":"2223:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2252:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2233:18:54"},"nodeType":"YulFunctionCall","src":"2233:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2223:6:54"}]},{"nodeType":"YulAssignment","src":"2271:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2298:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2309:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2294:3:54"},"nodeType":"YulFunctionCall","src":"2294:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2281:12:54"},"nodeType":"YulFunctionCall","src":"2281:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2271:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2110:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2121:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2133:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2141:6:54","type":""}],"src":"2065:254:54"},{"body":{"nodeType":"YulBlock","src":"2425:76:54","statements":[{"nodeType":"YulAssignment","src":"2435:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2447:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2458:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:54"},"nodeType":"YulFunctionCall","src":"2443:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2435:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2477:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"2488:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2470:6:54"},"nodeType":"YulFunctionCall","src":"2470:25:54"},"nodeType":"YulExpressionStatement","src":"2470:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2394:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2405:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2416:4:54","type":""}],"src":"2324:177:54"},{"body":{"nodeType":"YulBlock","src":"2610:224:54","statements":[{"body":{"nodeType":"YulBlock","src":"2656:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2665:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2668:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2658:6:54"},"nodeType":"YulFunctionCall","src":"2658:12:54"},"nodeType":"YulExpressionStatement","src":"2658:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2631:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2640:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2627:3:54"},"nodeType":"YulFunctionCall","src":"2627:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2652:2:54","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2623:3:54"},"nodeType":"YulFunctionCall","src":"2623:32:54"},"nodeType":"YulIf","src":"2620:52:54"},{"nodeType":"YulAssignment","src":"2681:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2710:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2691:18:54"},"nodeType":"YulFunctionCall","src":"2691:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2681:6:54"}]},{"nodeType":"YulAssignment","src":"2729:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2762:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2773:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2758:3:54"},"nodeType":"YulFunctionCall","src":"2758:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2739:18:54"},"nodeType":"YulFunctionCall","src":"2739:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2729:6:54"}]},{"nodeType":"YulAssignment","src":"2786:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2813:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2824:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2809:3:54"},"nodeType":"YulFunctionCall","src":"2809:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2796:12:54"},"nodeType":"YulFunctionCall","src":"2796:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2786:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2560:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2571:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2583:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2591:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2599:6:54","type":""}],"src":"2506:328:54"},{"body":{"nodeType":"YulBlock","src":"2909:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"2955:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2964:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2967:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2957:6:54"},"nodeType":"YulFunctionCall","src":"2957:12:54"},"nodeType":"YulExpressionStatement","src":"2957:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2930:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2939:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2926:3:54"},"nodeType":"YulFunctionCall","src":"2926:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2951:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2922:3:54"},"nodeType":"YulFunctionCall","src":"2922:32:54"},"nodeType":"YulIf","src":"2919:52:54"},{"nodeType":"YulAssignment","src":"2980:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3009:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2990:18:54"},"nodeType":"YulFunctionCall","src":"2990:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2980:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2875:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2886:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2898:6:54","type":""}],"src":"2839:186:54"},{"body":{"nodeType":"YulBlock","src":"3114:263:54","statements":[{"body":{"nodeType":"YulBlock","src":"3160:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3169:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3172:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3162:6:54"},"nodeType":"YulFunctionCall","src":"3162:12:54"},"nodeType":"YulExpressionStatement","src":"3162:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3135:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3144:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3131:3:54"},"nodeType":"YulFunctionCall","src":"3131:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3156:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3127:3:54"},"nodeType":"YulFunctionCall","src":"3127:32:54"},"nodeType":"YulIf","src":"3124:52:54"},{"nodeType":"YulAssignment","src":"3185:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3214:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3195:18:54"},"nodeType":"YulFunctionCall","src":"3195:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3185:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"3233:45:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3263:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3274:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3259:3:54"},"nodeType":"YulFunctionCall","src":"3259:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3246:12:54"},"nodeType":"YulFunctionCall","src":"3246:32:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3237:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3331:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3340:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3343:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3333:6:54"},"nodeType":"YulFunctionCall","src":"3333:12:54"},"nodeType":"YulExpressionStatement","src":"3333:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3300:5:54"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3321:5:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3314:6:54"},"nodeType":"YulFunctionCall","src":"3314:13:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3307:6:54"},"nodeType":"YulFunctionCall","src":"3307:21:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3297:2:54"},"nodeType":"YulFunctionCall","src":"3297:32:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3290:6:54"},"nodeType":"YulFunctionCall","src":"3290:40:54"},"nodeType":"YulIf","src":"3287:60:54"},{"nodeType":"YulAssignment","src":"3356:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"3366:5:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3356:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3072:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3083:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3095:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3103:6:54","type":""}],"src":"3030:347:54"},{"body":{"nodeType":"YulBlock","src":"3414:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3431:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3434:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3424:6:54"},"nodeType":"YulFunctionCall","src":"3424:88:54"},"nodeType":"YulExpressionStatement","src":"3424:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3528:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3531:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3521:6:54"},"nodeType":"YulFunctionCall","src":"3521:15:54"},"nodeType":"YulExpressionStatement","src":"3521:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3552:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3555:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3545:6:54"},"nodeType":"YulFunctionCall","src":"3545:15:54"},"nodeType":"YulExpressionStatement","src":"3545:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3382:184:54"},{"body":{"nodeType":"YulBlock","src":"3616:289:54","statements":[{"nodeType":"YulAssignment","src":"3626:19:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3642:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3636:5:54"},"nodeType":"YulFunctionCall","src":"3636:9:54"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3626:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"3654:117:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3676:6:54"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"3692:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"3698:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3688:3:54"},"nodeType":"YulFunctionCall","src":"3688:13:54"},{"kind":"number","nodeType":"YulLiteral","src":"3703:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3684:3:54"},"nodeType":"YulFunctionCall","src":"3684:86:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3672:3:54"},"nodeType":"YulFunctionCall","src":"3672:99:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3658:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3846:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3848:16:54"},"nodeType":"YulFunctionCall","src":"3848:18:54"},"nodeType":"YulExpressionStatement","src":"3848:18:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3789:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"3801:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3786:2:54"},"nodeType":"YulFunctionCall","src":"3786:34:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3825:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3837:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3822:2:54"},"nodeType":"YulFunctionCall","src":"3822:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3783:2:54"},"nodeType":"YulFunctionCall","src":"3783:62:54"},"nodeType":"YulIf","src":"3780:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3884:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3888:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3877:6:54"},"nodeType":"YulFunctionCall","src":"3877:22:54"},"nodeType":"YulExpressionStatement","src":"3877:22:54"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"3596:4:54","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3605:6:54","type":""}],"src":"3571:334:54"},{"body":{"nodeType":"YulBlock","src":"3967:188:54","statements":[{"body":{"nodeType":"YulBlock","src":"4011:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4013:16:54"},"nodeType":"YulFunctionCall","src":"4013:18:54"},"nodeType":"YulExpressionStatement","src":"4013:18:54"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3983:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"3991:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3980:2:54"},"nodeType":"YulFunctionCall","src":"3980:30:54"},"nodeType":"YulIf","src":"3977:56:54"},{"nodeType":"YulAssignment","src":"4042:107:54","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4062:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"4070:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4058:3:54"},"nodeType":"YulFunctionCall","src":"4058:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"4075:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4054:3:54"},"nodeType":"YulFunctionCall","src":"4054:88:54"},{"kind":"number","nodeType":"YulLiteral","src":"4144:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4050:3:54"},"nodeType":"YulFunctionCall","src":"4050:99:54"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"4042:4:54"}]}]},"name":"array_allocation_size_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"3947:6:54","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"3958:4:54","type":""}],"src":"3910:245:54"},{"body":{"nodeType":"YulBlock","src":"4290:758:54","statements":[{"body":{"nodeType":"YulBlock","src":"4337:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4346:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4349:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4339:6:54"},"nodeType":"YulFunctionCall","src":"4339:12:54"},"nodeType":"YulExpressionStatement","src":"4339:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4311:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4320:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4307:3:54"},"nodeType":"YulFunctionCall","src":"4307:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4332:3:54","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4303:3:54"},"nodeType":"YulFunctionCall","src":"4303:33:54"},"nodeType":"YulIf","src":"4300:53:54"},{"nodeType":"YulAssignment","src":"4362:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4391:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4372:18:54"},"nodeType":"YulFunctionCall","src":"4372:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4362:6:54"}]},{"nodeType":"YulAssignment","src":"4410:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4443:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4454:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:54"},"nodeType":"YulFunctionCall","src":"4439:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4420:18:54"},"nodeType":"YulFunctionCall","src":"4420:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4410:6:54"}]},{"nodeType":"YulAssignment","src":"4467:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4494:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4505:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4490:3:54"},"nodeType":"YulFunctionCall","src":"4490:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4477:12:54"},"nodeType":"YulFunctionCall","src":"4477:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4467:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"4518:46:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4549:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4560:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4545:3:54"},"nodeType":"YulFunctionCall","src":"4545:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4532:12:54"},"nodeType":"YulFunctionCall","src":"4532:32:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4522:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4607:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4616:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4619:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4609:6:54"},"nodeType":"YulFunctionCall","src":"4609:12:54"},"nodeType":"YulExpressionStatement","src":"4609:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4579:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"4587:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4576:2:54"},"nodeType":"YulFunctionCall","src":"4576:30:54"},"nodeType":"YulIf","src":"4573:50:54"},{"nodeType":"YulVariableDeclaration","src":"4632:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4646:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"4657:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4642:3:54"},"nodeType":"YulFunctionCall","src":"4642:22:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4636:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4712:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4721:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4724:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4714:6:54"},"nodeType":"YulFunctionCall","src":"4714:12:54"},"nodeType":"YulExpressionStatement","src":"4714:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4691:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4695:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4687:3:54"},"nodeType":"YulFunctionCall","src":"4687:13:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4702:7:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4683:3:54"},"nodeType":"YulFunctionCall","src":"4683:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4676:6:54"},"nodeType":"YulFunctionCall","src":"4676:35:54"},"nodeType":"YulIf","src":"4673:55:54"},{"nodeType":"YulVariableDeclaration","src":"4737:26:54","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4760:2:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4747:12:54"},"nodeType":"YulFunctionCall","src":"4747:16:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4741:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4772:61:54","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4829:2:54"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"4801:27:54"},"nodeType":"YulFunctionCall","src":"4801:31:54"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"4785:15:54"},"nodeType":"YulFunctionCall","src":"4785:48:54"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"4776:5:54","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"4849:5:54"},{"name":"_2","nodeType":"YulIdentifier","src":"4856:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4842:6:54"},"nodeType":"YulFunctionCall","src":"4842:17:54"},"nodeType":"YulExpressionStatement","src":"4842:17:54"},{"body":{"nodeType":"YulBlock","src":"4905:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4914:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4917:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4907:6:54"},"nodeType":"YulFunctionCall","src":"4907:12:54"},"nodeType":"YulExpressionStatement","src":"4907:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4882:2:54"},{"name":"_2","nodeType":"YulIdentifier","src":"4886:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4878:3:54"},"nodeType":"YulFunctionCall","src":"4878:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"4891:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4874:3:54"},"nodeType":"YulFunctionCall","src":"4874:20:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4896:7:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4871:2:54"},"nodeType":"YulFunctionCall","src":"4871:33:54"},"nodeType":"YulIf","src":"4868:53:54"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"4947:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"4954:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4943:3:54"},"nodeType":"YulFunctionCall","src":"4943:14:54"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4963:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4967:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4959:3:54"},"nodeType":"YulFunctionCall","src":"4959:11:54"},{"name":"_2","nodeType":"YulIdentifier","src":"4972:2:54"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4930:12:54"},"nodeType":"YulFunctionCall","src":"4930:45:54"},"nodeType":"YulExpressionStatement","src":"4930:45:54"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"4999:5:54"},{"name":"_2","nodeType":"YulIdentifier","src":"5006:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4995:3:54"},"nodeType":"YulFunctionCall","src":"4995:14:54"},{"kind":"number","nodeType":"YulLiteral","src":"5011:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4991:3:54"},"nodeType":"YulFunctionCall","src":"4991:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"5016:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4984:6:54"},"nodeType":"YulFunctionCall","src":"4984:34:54"},"nodeType":"YulExpressionStatement","src":"4984:34:54"},{"nodeType":"YulAssignment","src":"5027:15:54","value":{"name":"array","nodeType":"YulIdentifier","src":"5037:5:54"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5027:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4232:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4243:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4255:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4263:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4271:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4279:6:54","type":""}],"src":"4160:888:54"},{"body":{"nodeType":"YulBlock","src":"5156:323:54","statements":[{"body":{"nodeType":"YulBlock","src":"5202:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5211:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5214:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5204:6:54"},"nodeType":"YulFunctionCall","src":"5204:12:54"},"nodeType":"YulExpressionStatement","src":"5204:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5177:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"5186:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5173:3:54"},"nodeType":"YulFunctionCall","src":"5173:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"5198:2:54","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5169:3:54"},"nodeType":"YulFunctionCall","src":"5169:32:54"},"nodeType":"YulIf","src":"5166:52:54"},{"nodeType":"YulAssignment","src":"5227:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5250:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5237:12:54"},"nodeType":"YulFunctionCall","src":"5237:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5227:6:54"}]},{"nodeType":"YulAssignment","src":"5269:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5302:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5313:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5298:3:54"},"nodeType":"YulFunctionCall","src":"5298:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"5279:18:54"},"nodeType":"YulFunctionCall","src":"5279:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5269:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"5326:45:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5356:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5367:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5352:3:54"},"nodeType":"YulFunctionCall","src":"5352:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5339:12:54"},"nodeType":"YulFunctionCall","src":"5339:32:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5330:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"5433:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5442:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5445:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5435:6:54"},"nodeType":"YulFunctionCall","src":"5435:12:54"},"nodeType":"YulExpressionStatement","src":"5435:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5393:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5404:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"5411:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5400:3:54"},"nodeType":"YulFunctionCall","src":"5400:30:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5390:2:54"},"nodeType":"YulFunctionCall","src":"5390:41:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5383:6:54"},"nodeType":"YulFunctionCall","src":"5383:49:54"},"nodeType":"YulIf","src":"5380:69:54"},{"nodeType":"YulAssignment","src":"5458:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"5468:5:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5458:6:54"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5106:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5117:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5129:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5137:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5145:6:54","type":""}],"src":"5053:426:54"},{"body":{"nodeType":"YulBlock","src":"5571:173:54","statements":[{"body":{"nodeType":"YulBlock","src":"5617:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5626:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5629:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5619:6:54"},"nodeType":"YulFunctionCall","src":"5619:12:54"},"nodeType":"YulExpressionStatement","src":"5619:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5592:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"5601:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5588:3:54"},"nodeType":"YulFunctionCall","src":"5588:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"5613:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5584:3:54"},"nodeType":"YulFunctionCall","src":"5584:32:54"},"nodeType":"YulIf","src":"5581:52:54"},{"nodeType":"YulAssignment","src":"5642:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5671:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"5652:18:54"},"nodeType":"YulFunctionCall","src":"5652:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5642:6:54"}]},{"nodeType":"YulAssignment","src":"5690:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5723:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5734:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5719:3:54"},"nodeType":"YulFunctionCall","src":"5719:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"5700:18:54"},"nodeType":"YulFunctionCall","src":"5700:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5690:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5529:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5540:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5552:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5560:6:54","type":""}],"src":"5484:260:54"},{"body":{"nodeType":"YulBlock","src":"5804:382:54","statements":[{"nodeType":"YulAssignment","src":"5814:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5828:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"5831:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5824:3:54"},"nodeType":"YulFunctionCall","src":"5824:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5814:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"5845:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5875:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"5881:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5871:3:54"},"nodeType":"YulFunctionCall","src":"5871:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"5849:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"5922:31:54","statements":[{"nodeType":"YulAssignment","src":"5924:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5938:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5946:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5934:3:54"},"nodeType":"YulFunctionCall","src":"5934:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5924:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5902:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5895:6:54"},"nodeType":"YulFunctionCall","src":"5895:26:54"},"nodeType":"YulIf","src":"5892:61:54"},{"body":{"nodeType":"YulBlock","src":"6012:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6033:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6036:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6026:6:54"},"nodeType":"YulFunctionCall","src":"6026:88:54"},"nodeType":"YulExpressionStatement","src":"6026:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6134:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6137:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6127:6:54"},"nodeType":"YulFunctionCall","src":"6127:15:54"},"nodeType":"YulExpressionStatement","src":"6127:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6162:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6165:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6155:6:54"},"nodeType":"YulFunctionCall","src":"6155:15:54"},"nodeType":"YulExpressionStatement","src":"6155:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5968:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5991:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5999:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5988:2:54"},"nodeType":"YulFunctionCall","src":"5988:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5965:2:54"},"nodeType":"YulFunctionCall","src":"5965:38:54"},"nodeType":"YulIf","src":"5962:218:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"5784:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5793:6:54","type":""}],"src":"5749:437:54"},{"body":{"nodeType":"YulBlock","src":"6240:230:54","statements":[{"body":{"nodeType":"YulBlock","src":"6270:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6291:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6294:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6284:6:54"},"nodeType":"YulFunctionCall","src":"6284:88:54"},"nodeType":"YulExpressionStatement","src":"6284:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6392:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6395:4:54","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6385:6:54"},"nodeType":"YulFunctionCall","src":"6385:15:54"},"nodeType":"YulExpressionStatement","src":"6385:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6420:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6423:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6413:6:54"},"nodeType":"YulFunctionCall","src":"6413:15:54"},"nodeType":"YulExpressionStatement","src":"6413:15:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6256:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"6259:1:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6253:2:54"},"nodeType":"YulFunctionCall","src":"6253:8:54"},"nodeType":"YulIf","src":"6250:188:54"},{"nodeType":"YulAssignment","src":"6447:17:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6459:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"6462:1:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6455:3:54"},"nodeType":"YulFunctionCall","src":"6455:9:54"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"6447:4:54"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"6222:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"6225:1:54","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"6231:4:54","type":""}],"src":"6191:279:54"},{"body":{"nodeType":"YulBlock","src":"6566:544:54","statements":[{"body":{"nodeType":"YulBlock","src":"6612:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6621:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6624:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6614:6:54"},"nodeType":"YulFunctionCall","src":"6614:12:54"},"nodeType":"YulExpressionStatement","src":"6614:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6587:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"6596:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6583:3:54"},"nodeType":"YulFunctionCall","src":"6583:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"6608:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6579:3:54"},"nodeType":"YulFunctionCall","src":"6579:32:54"},"nodeType":"YulIf","src":"6576:52:54"},{"nodeType":"YulVariableDeclaration","src":"6637:30:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6657:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6651:5:54"},"nodeType":"YulFunctionCall","src":"6651:16:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6641:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"6710:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6719:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6722:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6712:6:54"},"nodeType":"YulFunctionCall","src":"6712:12:54"},"nodeType":"YulExpressionStatement","src":"6712:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6682:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"6690:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6679:2:54"},"nodeType":"YulFunctionCall","src":"6679:30:54"},"nodeType":"YulIf","src":"6676:50:54"},{"nodeType":"YulVariableDeclaration","src":"6735:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6749:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"6760:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6745:3:54"},"nodeType":"YulFunctionCall","src":"6745:22:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6739:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"6815:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6824:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6827:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6817:6:54"},"nodeType":"YulFunctionCall","src":"6817:12:54"},"nodeType":"YulExpressionStatement","src":"6817:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6794:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"6798:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6790:3:54"},"nodeType":"YulFunctionCall","src":"6790:13:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6805:7:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6786:3:54"},"nodeType":"YulFunctionCall","src":"6786:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6779:6:54"},"nodeType":"YulFunctionCall","src":"6779:35:54"},"nodeType":"YulIf","src":"6776:55:54"},{"nodeType":"YulVariableDeclaration","src":"6840:19:54","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6856:2:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6850:5:54"},"nodeType":"YulFunctionCall","src":"6850:9:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6844:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6868:61:54","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6925:2:54"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"6897:27:54"},"nodeType":"YulFunctionCall","src":"6897:31:54"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"6881:15:54"},"nodeType":"YulFunctionCall","src":"6881:48:54"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"6872:5:54","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"6945:5:54"},{"name":"_2","nodeType":"YulIdentifier","src":"6952:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6938:6:54"},"nodeType":"YulFunctionCall","src":"6938:17:54"},"nodeType":"YulExpressionStatement","src":"6938:17:54"},{"body":{"nodeType":"YulBlock","src":"7001:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7010:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7013:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7003:6:54"},"nodeType":"YulFunctionCall","src":"7003:12:54"},"nodeType":"YulExpressionStatement","src":"7003:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6978:2:54"},{"name":"_2","nodeType":"YulIdentifier","src":"6982:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6974:3:54"},"nodeType":"YulFunctionCall","src":"6974:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6987:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6970:3:54"},"nodeType":"YulFunctionCall","src":"6970:20:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6992:7:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6967:2:54"},"nodeType":"YulFunctionCall","src":"6967:33:54"},"nodeType":"YulIf","src":"6964:53:54"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7052:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"7056:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7048:3:54"},"nodeType":"YulFunctionCall","src":"7048:11:54"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"7065:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"7072:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7061:3:54"},"nodeType":"YulFunctionCall","src":"7061:14:54"},{"name":"_2","nodeType":"YulIdentifier","src":"7077:2:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"7026:21:54"},"nodeType":"YulFunctionCall","src":"7026:54:54"},"nodeType":"YulExpressionStatement","src":"7026:54:54"},{"nodeType":"YulAssignment","src":"7089:15:54","value":{"name":"array","nodeType":"YulIdentifier","src":"7099:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7089:6:54"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6532:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6543:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6555:6:54","type":""}],"src":"6475:635:54"},{"body":{"nodeType":"YulBlock","src":"7214:101:54","statements":[{"nodeType":"YulAssignment","src":"7224:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7236:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7247:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7232:3:54"},"nodeType":"YulFunctionCall","src":"7232:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7224:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7266:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7281:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"7289:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7277:3:54"},"nodeType":"YulFunctionCall","src":"7277:31:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7259:6:54"},"nodeType":"YulFunctionCall","src":"7259:50:54"},"nodeType":"YulExpressionStatement","src":"7259:50:54"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7183:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7194:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7205:4:54","type":""}],"src":"7115:200:54"},{"body":{"nodeType":"YulBlock","src":"7494:228:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7511:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7522:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7504:6:54"},"nodeType":"YulFunctionCall","src":"7504:21:54"},"nodeType":"YulExpressionStatement","src":"7504:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7545:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7556:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7541:3:54"},"nodeType":"YulFunctionCall","src":"7541:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7561:2:54","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7534:6:54"},"nodeType":"YulFunctionCall","src":"7534:30:54"},"nodeType":"YulExpressionStatement","src":"7534:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7584:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7595:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7580:3:54"},"nodeType":"YulFunctionCall","src":"7580:18:54"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"7600:34:54","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7573:6:54"},"nodeType":"YulFunctionCall","src":"7573:62:54"},"nodeType":"YulExpressionStatement","src":"7573:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7655:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7666:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7651:3:54"},"nodeType":"YulFunctionCall","src":"7651:18:54"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"7671:8:54","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7644:6:54"},"nodeType":"YulFunctionCall","src":"7644:36:54"},"nodeType":"YulExpressionStatement","src":"7644:36:54"},{"nodeType":"YulAssignment","src":"7689:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7701:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7712:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7697:3:54"},"nodeType":"YulFunctionCall","src":"7697:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7689:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7471:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7485:4:54","type":""}],"src":"7320:402:54"},{"body":{"nodeType":"YulBlock","src":"7901:182:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7918:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7929:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7911:6:54"},"nodeType":"YulFunctionCall","src":"7911:21:54"},"nodeType":"YulExpressionStatement","src":"7911:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7952:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7963:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7948:3:54"},"nodeType":"YulFunctionCall","src":"7948:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7968:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7941:6:54"},"nodeType":"YulFunctionCall","src":"7941:30:54"},"nodeType":"YulExpressionStatement","src":"7941:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7991:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8002:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7987:3:54"},"nodeType":"YulFunctionCall","src":"7987:18:54"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"8007:34:54","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7980:6:54"},"nodeType":"YulFunctionCall","src":"7980:62:54"},"nodeType":"YulExpressionStatement","src":"7980:62:54"},{"nodeType":"YulAssignment","src":"8051:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8063:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8074:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8059:3:54"},"nodeType":"YulFunctionCall","src":"8059:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8051:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7878:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7892:4:54","type":""}],"src":"7727:356:54"},{"body":{"nodeType":"YulBlock","src":"8291:309:54","statements":[{"nodeType":"YulVariableDeclaration","src":"8301:52:54","value":{"kind":"number","nodeType":"YulLiteral","src":"8311:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8305:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8369:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8384:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"8392:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8380:3:54"},"nodeType":"YulFunctionCall","src":"8380:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8362:6:54"},"nodeType":"YulFunctionCall","src":"8362:34:54"},"nodeType":"YulExpressionStatement","src":"8362:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8416:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8427:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8412:3:54"},"nodeType":"YulFunctionCall","src":"8412:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8436:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"8444:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8432:3:54"},"nodeType":"YulFunctionCall","src":"8432:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8405:6:54"},"nodeType":"YulFunctionCall","src":"8405:43:54"},"nodeType":"YulExpressionStatement","src":"8405:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8468:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8479:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8464:3:54"},"nodeType":"YulFunctionCall","src":"8464:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"8484:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8457:6:54"},"nodeType":"YulFunctionCall","src":"8457:34:54"},"nodeType":"YulExpressionStatement","src":"8457:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8511:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8522:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8507:3:54"},"nodeType":"YulFunctionCall","src":"8507:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"8527:3:54","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8500:6:54"},"nodeType":"YulFunctionCall","src":"8500:31:54"},"nodeType":"YulExpressionStatement","src":"8500:31:54"},{"nodeType":"YulAssignment","src":"8540:54:54","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"8566:6:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8578:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8589:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8574:3:54"},"nodeType":"YulFunctionCall","src":"8574:19:54"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"8548:17:54"},"nodeType":"YulFunctionCall","src":"8548:46:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8540:4:54"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8236:9:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8247:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8255:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8263:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8271:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8282:4:54","type":""}],"src":"8088:512:54"},{"body":{"nodeType":"YulBlock","src":"8685:169:54","statements":[{"body":{"nodeType":"YulBlock","src":"8731:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8740:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8743:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8733:6:54"},"nodeType":"YulFunctionCall","src":"8733:12:54"},"nodeType":"YulExpressionStatement","src":"8733:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8706:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"8715:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8702:3:54"},"nodeType":"YulFunctionCall","src":"8702:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"8727:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8698:3:54"},"nodeType":"YulFunctionCall","src":"8698:32:54"},"nodeType":"YulIf","src":"8695:52:54"},{"nodeType":"YulVariableDeclaration","src":"8756:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8775:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8769:5:54"},"nodeType":"YulFunctionCall","src":"8769:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8760:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8818:5:54"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"8794:23:54"},"nodeType":"YulFunctionCall","src":"8794:30:54"},"nodeType":"YulExpressionStatement","src":"8794:30:54"},{"nodeType":"YulAssignment","src":"8833:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"8843:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8833:6:54"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8651:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8662:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8674:6:54","type":""}],"src":"8605:249:54"},{"body":{"nodeType":"YulBlock","src":"9046:283:54","statements":[{"nodeType":"YulVariableDeclaration","src":"9056:27:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9076:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9070:5:54"},"nodeType":"YulFunctionCall","src":"9070:13:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9060:6:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9118:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"9126:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9114:3:54"},"nodeType":"YulFunctionCall","src":"9114:17:54"},{"name":"pos","nodeType":"YulIdentifier","src":"9133:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"9138:6:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9092:21:54"},"nodeType":"YulFunctionCall","src":"9092:53:54"},"nodeType":"YulExpressionStatement","src":"9092:53:54"},{"nodeType":"YulVariableDeclaration","src":"9154:29:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9171:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"9176:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9167:3:54"},"nodeType":"YulFunctionCall","src":"9167:16:54"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"9158:5:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9192:29:54","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9214:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9208:5:54"},"nodeType":"YulFunctionCall","src":"9208:13:54"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"9196:8:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9256:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"9264:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9252:3:54"},"nodeType":"YulFunctionCall","src":"9252:17:54"},{"name":"end_1","nodeType":"YulIdentifier","src":"9271:5:54"},{"name":"length_1","nodeType":"YulIdentifier","src":"9278:8:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9230:21:54"},"nodeType":"YulFunctionCall","src":"9230:57:54"},"nodeType":"YulExpressionStatement","src":"9230:57:54"},{"nodeType":"YulAssignment","src":"9296:27:54","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"9307:5:54"},{"name":"length_1","nodeType":"YulIdentifier","src":"9314:8:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9303:3:54"},"nodeType":"YulFunctionCall","src":"9303:20:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9296:3:54"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9014:3:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9019:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9027:6:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9038:3:54","type":""}],"src":"8859:470:54"}]},"contents":"{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\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 copy_memory_to_memory(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        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 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_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { 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        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\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_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\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 _2 := calldataload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, 32), add(_1, 32), _2)\n        mstore(add(add(array, _2), 32), 0)\n        value3 := array\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint64(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n        value2 := value\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        diff := sub(x, y)\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\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 _2 := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\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, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106101755760003560e01c80638da5cb5b116100cb578063c2f1f14a1161007f578063e030565e11610059578063e030565e14610400578063e985e9c514610420578063f2fde38b1461047657600080fd5b8063c2f1f14a1461038c578063c6c3bbe6146103c0578063c87b56dd146103e057600080fd5b806395d89b41116100b057806395d89b4114610344578063a22cb46514610359578063b88d4fde1461037957600080fd5b80638da5cb5b146102e95780638fc88c481461031457600080fd5b806323b872dd1161012d5780636352211e116101075780636352211e1461029457806370a08231146102b4578063715018a6146102d457600080fd5b806323b872dd1461024e57806342842e0e1461026157806342966c681461027457600080fd5b8063081812fc1161015e578063081812fc146101d1578063095ea7b31461021657806318160ddd1461022b57600080fd5b806301ffc9a71461017a57806306fdde03146101af575b600080fd5b34801561018657600080fd5b5061019a6101953660046116f7565b610496565b60405190151581526020015b60405180910390f35b3480156101bb57600080fd5b506101c46104f3565b6040516101a6919061176c565b3480156101dd57600080fd5b506101f16101ec36600461177f565b610585565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b6102296102243660046117c1565b6105ef565b005b34801561023757600080fd5b50600154600054035b6040519081526020016101a6565b61022961025c3660046117eb565b6106da565b61022961026f3660046117eb565b610973565b34801561028057600080fd5b5061022961028f36600461177f565b610993565b3480156102a057600080fd5b506101f16102af36600461177f565b6109b3565b3480156102c057600080fd5b506102406102cf366004611827565b6109be565b3480156102e057600080fd5b50610229610a40565b3480156102f557600080fd5b5060095473ffffffffffffffffffffffffffffffffffffffff166101f1565b34801561032057600080fd5b5061024061032f36600461177f565b60009081526008602052604090205460a01c90565b34801561035057600080fd5b506101c4610a54565b34801561036557600080fd5b50610229610374366004611842565b610a63565b610229610387366004611906565b610afa565b34801561039857600080fd5b506101f16103a736600461177f565b6000908152600860205260409020544260a01b81110290565b3480156103cc57600080fd5b506102406103db3660046117eb565b610b6a565b3480156103ec57600080fd5b506101c46103fb36600461177f565b610c0c565b34801561040c57600080fd5b5061022961041b3660046119b1565b610cde565b34801561042c57600080fd5b5061019a61043b3660046119fe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561048257600080fd5b50610229610491366004611827565b610e00565b60006104a182610eb9565b806104ed57507fad092b5c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461050290611a31565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611a31565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b5050505050905090565b600061059082610f9a565b6105c6576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105fa826109b3565b90503373ffffffffffffffffffffffffffffffffffffffff82161461065957610623813361043b565b610659576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006106e582610fda565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461074c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080546107858187335b73ffffffffffffffffffffffffffffffffffffffff9081169116811491141790565b6107c957610793863361043b565b6107c9576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610816576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561082157600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000841690036109105760018401600081815260046020526040812054900361090e57600054811461090e5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b61098e83838360405180602001604052806000815250610afa565b505050565b61099b611091565b6109a781600080610cde565b6109b081611112565b50565b60006104ed82610fda565b600073ffffffffffffffffffffffffffffffffffffffff8216610a0d576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b610a48611091565b610a52600061111d565b565b60606003805461050290611a31565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610b058484846106da565b73ffffffffffffffffffffffffffffffffffffffff83163b15610b6457610b2e84848484611194565b610b64576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610b74611091565b610b7f8460016112ef565b6001610b8a60005490565b610b949190611a7e565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff958616815260208082019586526000848152600a90915291909120905181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169516949094178455915160019093019290925592915050565b6000818152600a602090815260409182902082518084018452815473ffffffffffffffffffffffffffffffffffffffff1680825260019092015492810183905292517fc87b56dd00000000000000000000000000000000000000000000000000000000815260048101929092526060929163c87b56dd90602401600060405180830381865afa925050508015610cc457506040513d6000823e601f3d908101601f19168201604052610cc19190810190611abc565b60015b610cd157610cd18361142d565b9392505050565b50919050565b6000610ce9846109b3565b90503373ffffffffffffffffffffffffffffffffffffffff821614610d6d57610d12813361043b565b610d6d5733610d2085610585565b73ffffffffffffffffffffffffffffffffffffffff1614610d6d576040517f4f1dd8e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526008602090815260409182902073ffffffffffffffffffffffffffffffffffffffff861660a086901b7bffffffffffffffff0000000000000000000000000000000000000000168117909155915167ffffffffffffffff8516815286917f4e06b4e7000e659094299b3533b47b6aa8ad048e95e872d23d1f4ee55af89cfe910160405180910390a350505050565b610e08611091565b73ffffffffffffffffffffffffffffffffffffffff8116610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109b08161111d565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610f4c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806104ed5750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60008054821080156104ed5750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b60008160005481101561105f57600081815260046020526040812054907c01000000000000000000000000000000000000000000000000000000008216900361105d575b80600003610cd157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160008181526004602052604090205461101e565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095473ffffffffffffffffffffffffffffffffffffffff163314610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ea7565b6109b08160006114d6565b6009805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906111ef903390899088908890600401611b33565b6020604051808303816000875af192505050801561122a575060408051601f3d908101601f1916820190925261122791810190611b7c565b60015b6112a1573d808015611258576040519150601f19603f3d011682016040523d82523d6000602084013e61125d565b606091505b508051600003611299576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b600080549082900361132d576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146113e957808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001016113b1565b5081600003611424576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b606061143882610f9a565b61146e576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061148560408051602081019091526000815290565b905080516000036114a55760405180602001604052806000815250610cd1565b806114af84611685565b6040516020016114c0929190611b99565b6040516020818303038152906040529392505050565b60006114e183610fda565b9050806000806114ff86600090815260066020526040902080549091565b91509150841561155857611514818433610763565b61155857611522833361043b565b611558576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561156357600082555b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b177c0300000000000000000000000000000000000000000000000000000000176000878152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000851690036116305760018601600081815260046020526040812054900361162e57600054811461162e5760008181526004602052604090208590555b505b604051869060009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061169f5750819003601f19909101908152919050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146109b057600080fd5b60006020828403121561170957600080fd5b8135610cd1816116c9565b60005b8381101561172f578181015183820152602001611717565b83811115610b645750506000910152565b60008151808452611758816020860160208601611714565b601f01601f19169290920160200192915050565b602081526000610cd16020830184611740565b60006020828403121561179157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146117bc57600080fd5b919050565b600080604083850312156117d457600080fd5b6117dd83611798565b946020939093013593505050565b60008060006060848603121561180057600080fd5b61180984611798565b925061181760208501611798565b9150604084013590509250925092565b60006020828403121561183957600080fd5b610cd182611798565b6000806040838503121561185557600080fd5b61185e83611798565b91506020830135801515811461187357600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118d6576118d661187e565b604052919050565b600067ffffffffffffffff8211156118f8576118f861187e565b50601f01601f191660200190565b6000806000806080858703121561191c57600080fd5b61192585611798565b935061193360208601611798565b925060408501359150606085013567ffffffffffffffff81111561195657600080fd5b8501601f8101871361196757600080fd5b803561197a611975826118de565b6118ad565b81815288602083850101111561198f57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806000606084860312156119c657600080fd5b833592506119d660208501611798565b9150604084013567ffffffffffffffff811681146119f357600080fd5b809150509250925092565b60008060408385031215611a1157600080fd5b611a1a83611798565b9150611a2860208401611798565b90509250929050565b600181811c90821680611a4557607f821691505b602082108103610cd8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600082821015611ab7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b600060208284031215611ace57600080fd5b815167ffffffffffffffff811115611ae557600080fd5b8201601f81018413611af657600080fd5b8051611b04611975826118de565b818152856020838501011115611b1957600080fd5b611b2a826020830160208601611714565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611b726080830184611740565b9695505050505050565b600060208284031215611b8e57600080fd5b8151610cd1816116c9565b60008351611bab818460208801611714565b835190830190611bbf818360208801611714565b0194935050505056fea26469706673582212202dadfde1354b4329fbb4f3f73ed877f7c2cb3f744bd1963f9f303232d445f44c64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x175 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xC2F1F14A GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE030565E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE030565E EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC2F1F14A EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0xC6C3BBE6 EQ PUSH2 0x3C0 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x8FC88C48 EQ PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x12D JUMPI DUP1 PUSH4 0x6352211E GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x81812FC GT PUSH2 0x15E JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1AF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19A PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x16F7 JUMP JUMPDEST PUSH2 0x496 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 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C4 PUSH2 0x4F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A6 SWAP2 SWAP1 PUSH2 0x176C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F1 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH2 0x585 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A6 JUMP JUMPDEST PUSH2 0x229 PUSH2 0x224 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C1 JUMP JUMPDEST PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH1 0x0 SLOAD SUB JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A6 JUMP JUMPDEST PUSH2 0x229 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x17EB JUMP JUMPDEST PUSH2 0x6DA JUMP JUMPDEST PUSH2 0x229 PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x17EB JUMP JUMPDEST PUSH2 0x973 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0x28F CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH2 0x993 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F1 PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH2 0x9B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x240 PUSH2 0x2CF CALLDATASIZE PUSH1 0x4 PUSH2 0x1827 JUMP JUMPDEST PUSH2 0x9BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0xA40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x240 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xA0 SHR SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C4 PUSH2 0xA54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0x374 CALLDATASIZE PUSH1 0x4 PUSH2 0x1842 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH2 0x229 PUSH2 0x387 CALLDATASIZE PUSH1 0x4 PUSH2 0x1906 JUMP JUMPDEST PUSH2 0xAFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F1 PUSH2 0x3A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP PUSH1 0xA0 SHL DUP2 GT MUL SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x240 PUSH2 0x3DB CALLDATASIZE PUSH1 0x4 PUSH2 0x17EB JUMP JUMPDEST PUSH2 0xB6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C4 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x177F JUMP JUMPDEST PUSH2 0xC0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x19B1 JUMP JUMPDEST PUSH2 0xCDE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19A PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x19FE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x1827 JUMP JUMPDEST PUSH2 0xE00 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A1 DUP3 PUSH2 0xEB9 JUMP JUMPDEST DUP1 PUSH2 0x4ED JUMPI POP PUSH32 0xAD092B5C00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x502 SWAP1 PUSH2 0x1A31 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x52E SWAP1 PUSH2 0x1A31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x57B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x550 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x590 DUP3 PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x5C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCF4700E400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FA DUP3 PUSH2 0x9B3 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x659 JUMPI PUSH2 0x623 DUP2 CALLER PUSH2 0x43B JUMP JUMPDEST PUSH2 0x659 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCFB3B94200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP6 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E5 DUP3 PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x74C JUMPI PUSH1 0x40 MLOAD PUSH32 0xA114810000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x785 DUP2 DUP8 CALLER JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND DUP2 EQ SWAP2 EQ OR SWAP1 JUMP JUMPDEST PUSH2 0x7C9 JUMPI PUSH2 0x793 DUP7 CALLER PUSH2 0x43B JUMP JUMPDEST PUSH2 0x7C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x59C896BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEA553B3400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x821 JUMPI PUSH1 0x0 DUP3 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE TIMESTAMP PUSH1 0xA0 SHL OR PUSH29 0x200000000000000000000000000000000000000000000000000000000 OR PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH29 0x200000000000000000000000000000000000000000000000000000000 DUP5 AND SWAP1 SUB PUSH2 0x910 JUMPI PUSH1 0x1 DUP5 ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SUB PUSH2 0x90E JUMPI PUSH1 0x0 SLOAD DUP2 EQ PUSH2 0x90E JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE JUMPDEST POP JUMPDEST DUP4 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x98E DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xAFA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x99B PUSH2 0x1091 JUMP JUMPDEST PUSH2 0x9A7 DUP2 PUSH1 0x0 DUP1 PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x9B0 DUP2 PUSH2 0x1112 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4ED DUP3 PUSH2 0xFDA JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xA0D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8F4EB60400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xA48 PUSH2 0x1091 JUMP JUMPDEST PUSH2 0xA52 PUSH1 0x0 PUSH2 0x111D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x502 SWAP1 PUSH2 0x1A31 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xB05 DUP5 DUP5 DUP5 PUSH2 0x6DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0xB64 JUMPI PUSH2 0xB2E DUP5 DUP5 DUP5 DUP5 PUSH2 0x1194 JUMP JUMPDEST PUSH2 0xB64 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD1A57ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB74 PUSH2 0x1091 JUMP JUMPDEST PUSH2 0xB7F DUP5 PUSH1 0x1 PUSH2 0x12EF JUMP JUMPDEST PUSH1 0x1 PUSH2 0xB8A PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB94 SWAP2 SWAP1 PUSH2 0x1A7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP6 DUP7 MSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xA SWAP1 SWAP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP6 AND SWAP5 SWAP1 SWAP5 OR DUP5 SSTORE SWAP2 MLOAD PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD SWAP3 DUP2 ADD DUP4 SWAP1 MSTORE SWAP3 MLOAD PUSH32 0xC87B56DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 SWAP2 PUSH4 0xC87B56DD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xCC4 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xCC1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1ABC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xCD1 JUMPI PUSH2 0xCD1 DUP4 PUSH2 0x142D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE9 DUP5 PUSH2 0x9B3 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0xD6D JUMPI PUSH2 0xD12 DUP2 CALLER PUSH2 0x43B JUMP JUMPDEST PUSH2 0xD6D JUMPI CALLER PUSH2 0xD20 DUP6 PUSH2 0x585 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD6D JUMPI PUSH1 0x40 MLOAD PUSH32 0x4F1DD8E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0xA0 DUP7 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND DUP2 MSTORE DUP7 SWAP2 PUSH32 0x4E06B4E7000E659094299B3533B47B6AA8AD048E95E872D23D1F4EE55AF89CFE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0xE08 PUSH2 0x1091 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xEB0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9B0 DUP2 PUSH2 0x111D JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0xF4C JUMPI POP PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST DUP1 PUSH2 0x4ED JUMPI POP POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP3 LT DUP1 ISZERO PUSH2 0x4ED JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SLOAD DUP2 LT ISZERO PUSH2 0x105F JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 SUB PUSH2 0x105D JUMPI JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0xCD1 JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x101E JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDF2D9B4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xA52 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xEA7 JUMP JUMPDEST PUSH2 0x9B0 DUP2 PUSH1 0x0 PUSH2 0x14D6 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x11EF SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B33 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x122A JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1227 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x12A1 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1258 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 0x125D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1299 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD1A57ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 DUP3 SWAP1 SUB PUSH2 0x132D JUMPI PUSH1 0x40 MLOAD PUSH32 0xB562E8DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH9 0x10000000000000001 DUP9 MUL ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 PUSH1 0x1 DUP6 EQ PUSH1 0xE1 SHL TIMESTAMP PUSH1 0xA0 SHL OR DUP4 OR SWAP1 SSTORE DUP3 DUP5 ADD SWAP1 DUP4 SWAP1 DUP4 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 PUSH1 0x1 DUP4 ADD JUMPDEST DUP2 DUP2 EQ PUSH2 0x13E9 JUMPI DUP1 DUP4 PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x0 DUP1 LOG4 PUSH1 0x1 ADD PUSH2 0x13B1 JUMP JUMPDEST POP DUP2 PUSH1 0x0 SUB PUSH2 0x1424 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E07630000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1438 DUP3 PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x146E JUMPI PUSH1 0x40 MLOAD PUSH32 0xA14C4B5000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1485 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x14A5 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xCD1 JUMP JUMPDEST DUP1 PUSH2 0x14AF DUP5 PUSH2 0x1685 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14E1 DUP4 PUSH2 0xFDA JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 DUP1 PUSH2 0x14FF DUP7 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP5 ISZERO PUSH2 0x1558 JUMPI PUSH2 0x1514 DUP2 DUP5 CALLER PUSH2 0x763 JUMP JUMPDEST PUSH2 0x1558 JUMPI PUSH2 0x1522 DUP4 CALLER PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1558 JUMPI PUSH1 0x40 MLOAD PUSH32 0x59C896BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1563 JUMPI PUSH1 0x0 DUP3 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE TIMESTAMP PUSH1 0xA0 SHL OR PUSH29 0x300000000000000000000000000000000000000000000000000000000 OR PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH29 0x200000000000000000000000000000000000000000000000000000000 DUP6 AND SWAP1 SUB PUSH2 0x1630 JUMPI PUSH1 0x1 DUP7 ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SUB PUSH2 0x162E JUMPI PUSH1 0x0 SLOAD DUP2 EQ PUSH2 0x162E JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD DUP7 SWAP1 PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP PUSH1 0x1 DUP1 SLOAD DUP2 ADD SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA0 PUSH1 0x40 MLOAD ADD DUP1 PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 SUB SWAP2 POP POP PUSH1 0x0 DUP2 MSTORE DUP1 DUP3 JUMPDEST PUSH1 0x1 DUP4 SUB SWAP3 POP PUSH1 0xA DUP2 MOD PUSH1 0x30 ADD DUP4 MSTORE8 PUSH1 0xA SWAP1 DIV DUP1 PUSH2 0x169F JUMPI POP DUP2 SWAP1 SUB PUSH1 0x1F NOT SWAP1 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x9B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCD1 DUP2 PUSH2 0x16C9 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x172F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1717 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xB64 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1758 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xCD1 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1740 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x17BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17DD DUP4 PUSH2 0x1798 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1800 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1809 DUP5 PUSH2 0x1798 JUMP JUMPDEST SWAP3 POP PUSH2 0x1817 PUSH1 0x20 DUP6 ADD PUSH2 0x1798 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCD1 DUP3 PUSH2 0x1798 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x185E DUP4 PUSH2 0x1798 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x18D6 JUMPI PUSH2 0x18D6 PUSH2 0x187E JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x18F8 JUMPI PUSH2 0x18F8 PUSH2 0x187E JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x191C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1925 DUP6 PUSH2 0x1798 JUMP JUMPDEST SWAP4 POP PUSH2 0x1933 PUSH1 0x20 DUP7 ADD PUSH2 0x1798 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1956 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x1967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x197A PUSH2 0x1975 DUP3 PUSH2 0x18DE JUMP JUMPDEST PUSH2 0x18AD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x198F 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 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x19C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x19D6 PUSH1 0x20 DUP6 ADD PUSH2 0x1798 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x19F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A1A DUP4 PUSH2 0x1798 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A28 PUSH1 0x20 DUP5 ADD PUSH2 0x1798 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1A45 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xCD8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1AB7 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ACE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1AF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1B04 PUSH2 0x1975 DUP3 PUSH2 0x18DE JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x1B19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B2A DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1714 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1B72 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1740 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCD1 DUP2 PUSH2 0x16C9 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1BAB DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1714 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1BBF DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1714 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D 0xAD REVERT 0xE1 CALLDATALOAD 0x4B NUMBER 0x29 0xFB 0xB4 RETURN 0xF7 RETURNDATACOPY 0xD8 PUSH24 0xF7C2CB3F744BD1963F9F303232D445F44C64736F6C634300 ADDMOD 0xE STOP CALLER ","sourceMap":"424:1015:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2692:333:52;;;;;;;;;;-1:-1:-1;2692:333:52;;;;;:::i;:::-;;:::i;:::-;;;611:14:54;;604:22;586:41;;574:2;559:18;2692:333:52;;;;;;;;10039:98:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16360:214::-;;;;;;;;;;-1:-1:-1;16360:214:50;;;;;:::i;:::-;;:::i;:::-;;;1809:42:54;1797:55;;;1779:74;;1767:2;1752:18;16360:214:50;1633:226:54;15812:398:50;;;;;;:::i;:::-;;:::i;:::-;;5894:317;;;;;;;;;;-1:-1:-1;6164:12:50;;5955:7;6148:13;:28;5894:317;;;2470:25:54;;;2458:2;2443:18;5894:317:50;2324:177:54;19903:2764:50;;;;;;:::i;:::-;;:::i;22758:187::-;;;;;;:::i;:::-;;:::i;917:122:14:-;;;;;;;;;;-1:-1:-1;917:122:14;;;;;:::i;:::-;;:::i;11391:150:50:-;;;;;;;;;;-1:-1:-1;11391:150:50;;;;;:::i;:::-;;:::i;7045:230::-;;;;;;;;;;-1:-1:-1;7045:230:50;;;;;:::i;:::-;;:::i;1831:101:0:-;;;;;;;;;;;;;:::i;1201:85::-;;;;;;;;;;-1:-1:-1;1273:6:0;;;;1201:85;;2465:152:52;;;;;;;;;;-1:-1:-1;2465:152:52;;;;;:::i;:::-;2541:7;2567:24;;;:15;:24;;;;;;562:3;2567:43;;2465:152;10208:102:50;;;;;;;;;;;;;:::i;16901:231::-;;;;;;;;;;-1:-1:-1;16901:231:50;;;;;:::i;:::-;;:::i;23526:396::-;;;;;;:::i;:::-;;:::i;1755:635:52:-;;;;;;;;;;-1:-1:-1;1755:635:52;;;;;:::i;:::-;1826:7;1862:24;;;:15;:24;;;;;;2298:11;2281:15;2277:33;2274:45;-1:-1:-1;2172:161:52;;1755:635;657:254:14;;;;;;;;;;-1:-1:-1;657:254:14;;;;;:::i;:::-;;:::i;1045:392::-;;;;;;;;;;-1:-1:-1;1045:392:14;;;;;:::i;:::-;;:::i;984:614:52:-;;;;;;;;;;-1:-1:-1;984:614:52;;;;;:::i;:::-;;:::i;17282:162:50:-;;;;;;;;;;-1:-1:-1;17282:162:50;;;;;:::i;:::-;17402:25;;;;17379:4;17402:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;17282:162;2081:198:0;;;;;;;;;;-1:-1:-1;2081:198:0;;;;;:::i;:::-;;:::i;2692:333:52:-;2796:4;2953:36;2977:11;2953:23;:36::i;:::-;:65;;;-1:-1:-1;2993:25:52;;;;;2953:65;2946:72;2692:333;-1:-1:-1;;2692:333:52:o;10039:98:50:-;10093:13;10125:5;10118:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10039:98;:::o;16360:214::-;16436:7;16460:16;16468:7;16460;:16::i;:::-;16455:64;;16485:34;;;;;;;;;;;;;;16455:64;-1:-1:-1;16537:24:50;;;;:15;:24;;;;;:30;;;;16360:214::o;15812:398::-;15900:13;15916:16;15924:7;15916;:16::i;:::-;15900:32;-1:-1:-1;39523:10:50;15947:28;;;;15943:172;;15994:44;16011:5;39523:10;17282:162;:::i;15994:44::-;15989:126;;16065:35;;;;;;;;;;;;;;15989:126;16125:24;;;;:15;:24;;;;;;:35;;;;;;;;;;;;;;16175:28;;16125:24;;16175:28;;;;;;;15890:320;15812:398;;:::o;19903:2764::-;20040:27;20070;20089:7;20070:18;:27::i;:::-;20040:57;;20153:4;20112:45;;20128:19;20112:45;;;20108:86;;20166:28;;;;;;;;;;;;;;20108:86;20206:27;19036:24;;;:15;:24;;;;;19260:26;;20394:68;19260:26;20436:4;39523:10;20442:19;18381:16;18524:32;;;18370:28;;18651:20;;18673:30;;18648:56;;18074:646;20394:68;20389:179;;20481:43;20498:4;39523:10;17282:162;:::i;20481:43::-;20476:92;;20533:35;;;;;;;;;;;;;;20476:92;20583:16;;;20579:52;;20608:23;;;;;;;;;;;;;;20579:52;20774:15;20771:157;;;20912:1;20891:19;20884:30;20771:157;21300:24;;;;;;;;:18;:24;;;;;;21298:26;;;;;;21368:22;;;;;;;;;21366:24;;-1:-1:-1;21366:24:50;;;14703:11;14678:23;14674:41;14661:63;2392:8;14661:63;21654:26;;;;:17;:26;;;;;:172;;;;2392:8;21943:47;;:52;;21939:617;;22047:1;22037:11;;22015:19;22168:30;;;:17;:30;;;;;;:35;;22164:378;;22304:13;;22289:11;:28;22285:239;;22449:30;;;;:17;:30;;;;;:52;;;22285:239;21997:559;21939:617;22600:7;22596:2;22581:27;;22590:4;22581:27;;;;;;;;;;;;20030:2637;;;19903:2764;;;:::o;22758:187::-;22899:39;22916:4;22922:2;22926:7;22899:39;;;;;;;;;;;;:16;:39::i;:::-;22758:187;;;:::o;917:122:14:-;1094:13:0;:11;:13::i;:::-;977:31:14::1;985:7;1002:1;1006::::0;977:7:::1;:31::i;:::-;1018:14;1024:7;1018:5;:14::i;:::-;917:122:::0;:::o;11391:150:50:-;11463:7;11505:27;11524:7;11505:18;:27::i;7045:230::-;7117:7;7140:19;;;7136:60;;7168:28;;;;;;;;;;;;;;7136:60;-1:-1:-1;7213:25:50;;;;;;:18;:25;;;;;;1360:13;7213:55;;7045:230::o;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;10208:102:50:-;10264:13;10296:7;10289:14;;;;;:::i;16901:231::-;39523:10;16995:39;;;;:18;:39;;;;;;;;;:49;;;;;;;;;;;;:60;;;;;;;;;;;;;17070:55;;586:41:54;;;16995:49:50;;39523:10;17070:55;;559:18:54;17070:55:50;;;;;;;16901:231;;:::o;23526:396::-;23695:31;23708:4;23714:2;23718:7;23695:12;:31::i;:::-;23740:14;;;;:19;23736:180;;23778:56;23809:4;23815:2;23819:7;23828:5;23778:30;:56::i;:::-;23773:143;;23861:40;;;;;;;;;;;;;;23773:143;23526:396;;;;:::o;657:254:14:-;774:11;1094:13:0;:11;:13::i;:::-;801:12:14::1;807:2;811:1;801:5;:12::i;:::-;846:1;829:14;5645:7:50::0;5671:13;;5590:101;829:14:14::1;:18;;;;:::i;:::-;872:32;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;857:12:14;;;:7:::1;:12:::0;;;;;;;:47;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;857:47:14;;::::1;::::0;;;;:12;823:24;-1:-1:-1;;657:254:14:o;1045:392::-;1191:22;1216:16;;;:7;:16;;;;;;;;;1191:41;;;;;;;;;;;;;;;;;;;;;;;;;1246:59;;;;;;;;2470:25:54;;;;1162:13:14;;1191:41;1246:44;;2443:18:54;;1246:59:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1246:59:14;;;;;;;;;;;;:::i;:::-;;;1242:189;;1397:23;1412:7;1397:14;:23::i;:::-;1390:30;1045:392;-1:-1:-1;;;1045:392:14:o;1242:189::-;1181:256;1045:392;;;:::o;984:614:52:-;1196:13;1212:16;1220:7;1212;:16::i;:::-;1196:32;-1:-1:-1;39523:10:50;1242:28:52;;;;1238:203;;1289:44;1306:5;39523:10:50;17282:162;:::i;1289:44:52:-;1284:157;;39523:10:50;1355:20:52;1367:7;1355:11;:20::i;:::-;:43;;;1351:90;;1407:34;;;;;;;;;;;;;;1351:90;1452:24;;;;:15;:24;;;;;;;;;1519:22;;;562:3;1480:35;;;;;1479:62;;1452:89;;;1557:34;;7289:18:54;7277:31;;7259:50;;1452:24:52;;1557:34;;7232:18:54;1557:34:52;;;;;;;1102:496;984:614;;;:::o;2081:198:0:-;1094:13;:11;:13::i;:::-;2169:22:::1;::::0;::::1;2161:73;;;::::0;::::1;::::0;;7522:2:54;2161:73:0::1;::::0;::::1;7504:21:54::0;7561:2;7541:18;;;7534:30;7600:34;7580:18;;;7573:62;7671:8;7651:18;;;7644:36;7697:19;;2161:73:0::1;;;;;;;;;2244:28;2263:8;2244:18;:28::i;9155:630:50:-:0;9240:4;9558:25;;;;;;:101;;-1:-1:-1;9634:25:50;;;;;9558:101;:177;;;-1:-1:-1;;9710:25:50;;;;;9155:630::o;17693:277::-;17758:4;17845:13;;17835:7;:23;17793:151;;;;-1:-1:-1;;17895:26:50;;;;:17;:26;;;;;;2118:8;17895:44;:49;;17693:277::o;12515:1249::-;12582:7;12616;12714:13;;12707:4;:20;12703:997;;;12751:14;12768:23;;;:17;:23;;;;;;;2118:8;12855:24;;:29;;12851:831;;13510:111;13517:6;13527:1;13517:11;13510:111;;-1:-1:-1;13587:6:50;;13569:25;;;;:17;:25;;;;;;13510:111;;12851:831;12729:971;12703:997;13726:31;;;;;;;;;;;;;;1359:130:0;1273:6;;1422:23;1273:6;39523:10:50;1422:23:0;1414:68;;;;;;;7929:2:54;1414:68:0;;;7911:21:54;;;7948:18;;;7941:30;8007:34;7987:18;;;7980:62;8059:18;;1414:68:0;7727:356:54;33791:87:50;33850:21;33856:7;33865:5;33850;:21::i;2433:187:0:-;2525:6;;;;2541:17;;;;;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;25948:697:50:-;26126:88;;;;;26106:4;;26126:45;;;;;;:88;;39523:10;;26193:4;;26199:7;;26208:5;;26126:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26126:88:50;;;;;;;;-1:-1:-1;;26126:88:50;;;;;;;;;;;;:::i;:::-;;;26122:517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26404:6;:13;26421:1;26404:18;26400:229;;26449:40;;;;;;;;;;;;;;26400:229;26589:6;26583:13;26574:6;26570:2;26566:15;26559:38;26122:517;26282:64;;26292:54;26282:64;;-1:-1:-1;25948:697:50;;;;;;:::o;27091:2902::-;27163:20;27186:13;;;27213;;;27209:44;;27235:18;;;;;;;;;;;;;;27209:44;27728:22;;;;;;;:18;:22;;;;1495:2;27728:22;;;:71;;27766:32;27754:45;;27728:71;;;28035:31;;;:17;:31;;;;;-1:-1:-1;15123:15:50;;15097:24;15093:46;14703:11;14678:23;14674:41;14671:52;14661:63;;28035:170;;28264:23;;;;28035:31;;27728:22;;29016:25;27728:22;;28872:328;29520:1;29506:12;29502:20;29461:339;29560:3;29551:7;29548:16;29461:339;;29774:7;29764:8;29761:1;29734:25;29731:1;29728;29723:59;29612:1;29599:15;29461:339;;;29465:75;29831:8;29843:1;29831:13;29827:45;;29853:19;;;;;;;;;;;;;;29827:45;29887:13;:19;-1:-1:-1;22758:187:50;;;:::o;10411:313::-;10484:13;10514:16;10522:7;10514;:16::i;:::-;10509:59;;10539:29;;;;;;;;;;;;;;10509:59;10579:21;10603:10;11045:9;;;;;;;;;-1:-1:-1;11045:9:50;;;10969:92;10603:10;10579:34;;10636:7;10630:21;10655:1;10630:26;:87;;;;;;;;;;;;;;;;;10683:7;10692:18;10702:7;10692:9;:18::i;:::-;10666:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10623:94;10411:313;-1:-1:-1;;;10411:313:50:o;34095:3015::-;34174:27;34204;34223:7;34204:18;:27::i;:::-;34174:57;-1:-1:-1;34174:57:50;34242:12;;34362:35;34389:7;18927:27;19036:24;;;:15;:24;;;;;19260:26;;19036:24;;18828:474;34362:35;34305:92;;;;34412:13;34408:312;;;34531:68;34556:15;34573:4;39523:10;34579:19;39437:103;34531:68;34526:183;;34622:43;34639:4;39523:10;17282:162;:::i;34622:43::-;34617:92;;34674:35;;;;;;;;;;;;;;34617:92;34870:15;34867:157;;;35008:1;34987:19;34980:30;34867:157;35613:24;;;;;;;:18;:24;;;;;:60;;35641:32;35613:60;;;14703:11;14678:23;14674:41;14661:63;35992:43;14661:63;35904:26;;;;:17;:26;;;;;:202;;;;2392:8;36223:47;;:52;;36219:617;;36327:1;36317:11;;36295:19;36448:30;;;:17;:30;;;;;;:35;;36444:378;;36584:13;;36569:11;:28;36565:239;;36729:30;;;;:17;:30;;;;;:52;;;36565:239;36277:559;36219:617;36861:35;;36888:7;;36884:1;;36861:35;;;;;;36884:1;;36861:35;-1:-1:-1;;37079:12:50;:14;;;;;;-1:-1:-1;;;;34095:3015:50:o;39637:1708::-;39702:17;40130:4;40123;40117:11;40113:22;40220:1;40214:4;40207:15;40293:4;40290:1;40286:12;40279:19;;;40373:1;40368:3;40361:14;40474:3;40708:5;40690:419;40755:1;40750:3;40746:11;40739:18;;40923:2;40917:4;40913:13;40909:2;40905:22;40900:3;40892:36;41015:2;41005:13;;41070:25;40690:419;41070:25;-1:-1:-1;41137:13:50;;;-1:-1:-1;;41250:14:50;;;41310:19;;;41250:14;39637:1708;-1:-1:-1;39637:1708:50:o;14:177:54:-;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:258::-;710:1;720:113;734:6;731:1;728:13;720:113;;;810:11;;;804:18;791:11;;;784:39;756:2;749:10;720:113;;;851:6;848:1;845:13;842:48;;;-1:-1:-1;;886:1:54;868:16;;861:27;638:258::o;901:317::-;943:3;981:5;975:12;1008:6;1003:3;996:19;1024:63;1080:6;1073:4;1068:3;1064:14;1057:4;1050:5;1046:16;1024:63;:::i;:::-;1132:2;1120:15;-1:-1:-1;;1116:88:54;1107:98;;;;1207:4;1103:109;;901:317;-1:-1:-1;;901:317:54:o;1223:220::-;1372:2;1361:9;1354:21;1335:4;1392:45;1433:2;1422:9;1418:18;1410:6;1392:45;:::i;1448:180::-;1507:6;1560:2;1548:9;1539:7;1535:23;1531:32;1528:52;;;1576:1;1573;1566:12;1528:52;-1:-1:-1;1599:23:54;;1448:180;-1:-1:-1;1448:180:54:o;1864:196::-;1932:20;;1992:42;1981:54;;1971:65;;1961:93;;2050:1;2047;2040:12;1961:93;1864:196;;;:::o;2065:254::-;2133:6;2141;2194:2;2182:9;2173:7;2169:23;2165:32;2162:52;;;2210:1;2207;2200:12;2162:52;2233:29;2252:9;2233:29;:::i;:::-;2223:39;2309:2;2294:18;;;;2281:32;;-1:-1:-1;;;2065:254:54:o;2506:328::-;2583:6;2591;2599;2652:2;2640:9;2631:7;2627:23;2623:32;2620:52;;;2668:1;2665;2658:12;2620:52;2691:29;2710:9;2691:29;:::i;:::-;2681:39;;2739:38;2773:2;2762:9;2758:18;2739:38;:::i;:::-;2729:48;;2824:2;2813:9;2809:18;2796:32;2786:42;;2506:328;;;;;:::o;2839:186::-;2898:6;2951:2;2939:9;2930:7;2926:23;2922:32;2919:52;;;2967:1;2964;2957:12;2919:52;2990:29;3009:9;2990:29;:::i;3030:347::-;3095:6;3103;3156:2;3144:9;3135:7;3131:23;3127:32;3124:52;;;3172:1;3169;3162:12;3124:52;3195:29;3214:9;3195:29;:::i;:::-;3185:39;;3274:2;3263:9;3259:18;3246:32;3321:5;3314:13;3307:21;3300:5;3297:32;3287:60;;3343:1;3340;3333:12;3287:60;3366:5;3356:15;;;3030:347;;;;;:::o;3382:184::-;3434:77;3431:1;3424:88;3531:4;3528:1;3521:15;3555:4;3552:1;3545:15;3571:334;3642:2;3636:9;3698:2;3688:13;;-1:-1:-1;;3684:86:54;3672:99;;3801:18;3786:34;;3822:22;;;3783:62;3780:88;;;3848:18;;:::i;:::-;3884:2;3877:22;3571:334;;-1:-1:-1;3571:334:54:o;3910:245::-;3958:4;3991:18;3983:6;3980:30;3977:56;;;4013:18;;:::i;:::-;-1:-1:-1;4070:2:54;4058:15;-1:-1:-1;;4054:88:54;4144:4;4050:99;;3910:245::o;4160:888::-;4255:6;4263;4271;4279;4332:3;4320:9;4311:7;4307:23;4303:33;4300:53;;;4349:1;4346;4339:12;4300:53;4372:29;4391:9;4372:29;:::i;:::-;4362:39;;4420:38;4454:2;4443:9;4439:18;4420:38;:::i;:::-;4410:48;;4505:2;4494:9;4490:18;4477:32;4467:42;;4560:2;4549:9;4545:18;4532:32;4587:18;4579:6;4576:30;4573:50;;;4619:1;4616;4609:12;4573:50;4642:22;;4695:4;4687:13;;4683:27;-1:-1:-1;4673:55:54;;4724:1;4721;4714:12;4673:55;4760:2;4747:16;4785:48;4801:31;4829:2;4801:31;:::i;:::-;4785:48;:::i;:::-;4856:2;4849:5;4842:17;4896:7;4891:2;4886;4882;4878:11;4874:20;4871:33;4868:53;;;4917:1;4914;4907:12;4868:53;4972:2;4967;4963;4959:11;4954:2;4947:5;4943:14;4930:45;5016:1;5011:2;5006;4999:5;4995:14;4991:23;4984:34;5037:5;5027:15;;;;;4160:888;;;;;;;:::o;5053:426::-;5129:6;5137;5145;5198:2;5186:9;5177:7;5173:23;5169:32;5166:52;;;5214:1;5211;5204:12;5166:52;5250:9;5237:23;5227:33;;5279:38;5313:2;5302:9;5298:18;5279:38;:::i;:::-;5269:48;;5367:2;5356:9;5352:18;5339:32;5411:18;5404:5;5400:30;5393:5;5390:41;5380:69;;5445:1;5442;5435:12;5380:69;5468:5;5458:15;;;5053:426;;;;;:::o;5484:260::-;5552:6;5560;5613:2;5601:9;5592:7;5588:23;5584:32;5581:52;;;5629:1;5626;5619:12;5581:52;5652:29;5671:9;5652:29;:::i;:::-;5642:39;;5700:38;5734:2;5723:9;5719:18;5700:38;:::i;:::-;5690:48;;5484:260;;;;;:::o;5749:437::-;5828:1;5824:12;;;;5871;;;5892:61;;5946:4;5938:6;5934:17;5924:27;;5892:61;5999:2;5991:6;5988:14;5968:18;5965:38;5962:218;;6036:77;6033:1;6026:88;6137:4;6134:1;6127:15;6165:4;6162:1;6155:15;6191:279;6231:4;6259:1;6256;6253:8;6250:188;;;6294:77;6291:1;6284:88;6395:4;6392:1;6385:15;6423:4;6420:1;6413:15;6250:188;-1:-1:-1;6455:9:54;;6191:279::o;6475:635::-;6555:6;6608:2;6596:9;6587:7;6583:23;6579:32;6576:52;;;6624:1;6621;6614:12;6576:52;6657:9;6651:16;6690:18;6682:6;6679:30;6676:50;;;6722:1;6719;6712:12;6676:50;6745:22;;6798:4;6790:13;;6786:27;-1:-1:-1;6776:55:54;;6827:1;6824;6817:12;6776:55;6856:2;6850:9;6881:48;6897:31;6925:2;6897:31;:::i;6881:48::-;6952:2;6945:5;6938:17;6992:7;6987:2;6982;6978;6974:11;6970:20;6967:33;6964:53;;;7013:1;7010;7003:12;6964:53;7026:54;7077:2;7072;7065:5;7061:14;7056:2;7052;7048:11;7026:54;:::i;:::-;7099:5;6475:635;-1:-1:-1;;;;;6475:635:54:o;8088:512::-;8282:4;8311:42;8392:2;8384:6;8380:15;8369:9;8362:34;8444:2;8436:6;8432:15;8427:2;8416:9;8412:18;8405:43;;8484:6;8479:2;8468:9;8464:18;8457:34;8527:3;8522:2;8511:9;8507:18;8500:31;8548:46;8589:3;8578:9;8574:19;8566:6;8548:46;:::i;:::-;8540:54;8088:512;-1:-1:-1;;;;;;8088:512:54:o;8605:249::-;8674:6;8727:2;8715:9;8706:7;8702:23;8698:32;8695:52;;;8743:1;8740;8733:12;8695:52;8775:9;8769:16;8794:30;8818:5;8794:30;:::i;8859:470::-;9038:3;9076:6;9070:13;9092:53;9138:6;9133:3;9126:4;9118:6;9114:17;9092:53;:::i;:::-;9208:13;;9167:16;;;;9230:57;9208:13;9167:16;9264:4;9252:17;;9230:57;:::i;:::-;9303:20;;8859:470;-1:-1:-1;;;;8859:470:54:o"},"gasEstimates":{"creation":{"codeDepositCost":"1433200","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2626","burn(uint256)":"infinite","getApproved(uint256)":"6873","isApprovedForAll(address,address)":"infinite","mint(address,address,uint256)":"infinite","name()":"infinite","owner()":"2353","ownerOf(uint256)":"infinite","renounceOwnership()":"infinite","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26625","setUser(uint256,address,uint64)":"infinite","supportsInterface(bytes4)":"544","symbol()":"infinite","tokenURI(uint256)":"infinite","totalSupply()":"4477","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"28361","userExpires(uint256)":"2512","userOf(uint256)":"2511"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint(address,address,uint256)":"c6c3bbe6","name()":"06fdde03","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","renounceOwnership()":"715018a6","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","setUser(uint256,address,uint64)":"e030565e","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","userExpires(uint256)":"8fc88c48","userOf(uint256)":"c2f1f14a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceQueryForZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintERC2309QuantityExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintZeroQuantity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnerQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipNotInitializedForExtraData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SetUserCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromIncorrectOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToNonERC721ReceiverImplementer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"URIQueryForNonexistentToken\",\"type\":\"error\"},{\"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\":\"uint256\",\"name\":\"fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"ConsecutiveTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"UpdateUser\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tid\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"payable\",\"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\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"setUser\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"userExpires\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"userOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"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}.\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\"},\"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 caller. Emits an {ApprovalForAll} event.\"},\"setUser(uint256,address,uint64)\":{\"details\":\"Sets the `user` and `expires` for `tokenId`. The zero address indicates there is no user. Requirements: - The caller must own `tokenId` or be an approved operator.\"},\"supportsInterface(bytes4)\":{\"details\":\"Override of {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"totalSupply()\":{\"details\":\"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` from `from` to `to`. 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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"userExpires(uint256)\":{\"details\":\"Returns the user's expires of `tokenId`.\"},\"userOf(uint256)\":{\"details\":\"Returns the user address for `tokenId`. The zero address indicates that there is no user or if the user is expired.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"ApprovalCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"ApprovalQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"BalanceQueryForZeroAddress()\":[{\"notice\":\"Cannot query the balance for the zero address.\"}],\"MintERC2309QuantityExceedsLimit()\":[{\"notice\":\"The `quantity` minted with ERC2309 exceeds the safety limit.\"}],\"MintToZeroAddress()\":[{\"notice\":\"Cannot mint to the zero address.\"}],\"MintZeroQuantity()\":[{\"notice\":\"The quantity of tokens minted must be more than zero.\"}],\"OwnerQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"OwnershipNotInitializedForExtraData()\":[{\"notice\":\"The `extraData` cannot be set on an unintialized ownership slot.\"}],\"SetUserCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"TransferCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"TransferFromIncorrectOwner()\":[{\"notice\":\"The token must be owned by `from`.\"}],\"TransferToNonERC721ReceiverImplementer()\":[{\"notice\":\"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface.\"}],\"TransferToZeroAddress()\":[{\"notice\":\"Cannot transfer to the zero address.\"}],\"URIQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC4907.sol\":\"ERC4907\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/ERC4907.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { IERC721A } from \\\"erc721a/contracts/IERC721A.sol\\\";\\nimport { ERC721A } from \\\"erc721a/contracts/ERC721A.sol\\\";\\nimport { ERC4907A } from \\\"erc721a/contracts/extensions/ERC4907A.sol\\\";\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ninterface IERC721Metadata {\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\\ncontract ERC4907 is ERC4907A, Ownable {\\n\\n    struct AssetInfo {\\n        address tokenAddress;\\n        uint256 tokenId;\\n    }\\n\\n    mapping(uint256 => AssetInfo) internal _assets;\\n\\n    constructor() ERC721A(\\\"BNPL\\\", \\\"BNPL\\\") {}\\n    \\n    function mint(address to, address tokenAddress, uint256 tokenId)\\n        external\\n        onlyOwner\\n        returns (uint256 tid)\\n    {\\n        _mint(to, 1);\\n        tid = _nextTokenId() - 1;\\n        _assets[tid] = AssetInfo(tokenAddress, tokenId);\\n    }\\n\\n    function burn(uint256 tokenId) external onlyOwner {\\n        setUser(tokenId, address(0), 0);\\n        _burn(tokenId);\\n    }\\n\\n    function tokenURI(uint256 tokenId)\\n        public\\n        view\\n        override (ERC721A, IERC721A)\\n        returns (string memory)\\n    {\\n        AssetInfo memory asset = _assets[tokenId];\\n        try IERC721Metadata(asset.tokenAddress).tokenURI(asset.tokenId) returns (string memory uri) {\\n            return uri;\\n        } catch {\\n            return super.tokenURI(tokenId);\\n        }\\n    }\\n}\",\"keccak256\":\"0xf22f4ea35a6d670442c021be0dc1edce759063757c54f1060527040e2f755362\",\"license\":\"MIT\"},\"erc721a/contracts/ERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport './IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC721 token receiver.\\n */\\ninterface ERC721A__IERC721Receiver {\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\\n/**\\n * @title ERC721A\\n *\\n * @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)\\n * Non-Fungible Token Standard, including the Metadata extension.\\n * Optimized for lower gas during batch mints.\\n *\\n * Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...)\\n * starting from `_startTokenId()`.\\n *\\n * Assumptions:\\n *\\n * - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply.\\n * - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).\\n */\\ncontract ERC721A is IERC721A {\\n    // Bypass for a `--via-ir` bug (https://github.com/chiru-labs/ERC721A/pull/364).\\n    struct TokenApprovalRef {\\n        address value;\\n    }\\n\\n    // =============================================================\\n    //                           CONSTANTS\\n    // =============================================================\\n\\n    // Mask of an entry in packed address data.\\n    uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;\\n\\n    // The bit position of `numberMinted` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_MINTED = 64;\\n\\n    // The bit position of `numberBurned` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_BURNED = 128;\\n\\n    // The bit position of `aux` in packed address data.\\n    uint256 private constant _BITPOS_AUX = 192;\\n\\n    // Mask of all 256 bits in packed address data except the 64 bits for `aux`.\\n    uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;\\n\\n    // The bit position of `startTimestamp` in packed ownership.\\n    uint256 private constant _BITPOS_START_TIMESTAMP = 160;\\n\\n    // The bit mask of the `burned` bit in packed ownership.\\n    uint256 private constant _BITMASK_BURNED = 1 << 224;\\n\\n    // The bit position of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;\\n\\n    // The bit mask of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;\\n\\n    // The bit position of `extraData` in packed ownership.\\n    uint256 private constant _BITPOS_EXTRA_DATA = 232;\\n\\n    // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`.\\n    uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1;\\n\\n    // The mask of the lower 160 bits for addresses.\\n    uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;\\n\\n    // The maximum `quantity` that can be minted with {_mintERC2309}.\\n    // This limit is to prevent overflows on the address data entries.\\n    // For a limit of 5000, a total of 3.689e15 calls to {_mintERC2309}\\n    // is required to cause an overflow, which is unrealistic.\\n    uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000;\\n\\n    // The `Transfer` event signature is given by:\\n    // `keccak256(bytes(\\\"Transfer(address,address,uint256)\\\"))`.\\n    bytes32 private constant _TRANSFER_EVENT_SIGNATURE =\\n        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;\\n\\n    // =============================================================\\n    //                            STORAGE\\n    // =============================================================\\n\\n    // The next token ID to be minted.\\n    uint256 private _currentIndex;\\n\\n    // The number of tokens burned.\\n    uint256 private _burnCounter;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to ownership details\\n    // An empty struct value does not necessarily mean the token is unowned.\\n    // See {_packedOwnershipOf} implementation for details.\\n    //\\n    // Bits Layout:\\n    // - [0..159]   `addr`\\n    // - [160..223] `startTimestamp`\\n    // - [224]      `burned`\\n    // - [225]      `nextInitialized`\\n    // - [232..255] `extraData`\\n    mapping(uint256 => uint256) private _packedOwnerships;\\n\\n    // Mapping owner address to address data.\\n    //\\n    // Bits Layout:\\n    // - [0..63]    `balance`\\n    // - [64..127]  `numberMinted`\\n    // - [128..191] `numberBurned`\\n    // - [192..255] `aux`\\n    mapping(address => uint256) private _packedAddressData;\\n\\n    // Mapping from token ID to approved address.\\n    mapping(uint256 => TokenApprovalRef) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    // =============================================================\\n    //                          CONSTRUCTOR\\n    // =============================================================\\n\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n        _currentIndex = _startTokenId();\\n    }\\n\\n    // =============================================================\\n    //                   TOKEN COUNTING OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the starting token ID.\\n     * To change the starting token ID, please override this function.\\n     */\\n    function _startTokenId() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Returns the next token ID to be minted.\\n     */\\n    function _nextTokenId() internal view virtual returns (uint256) {\\n        return _currentIndex;\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        // Counter underflow is impossible as _burnCounter cannot be incremented\\n        // more than `_currentIndex - _startTokenId()` times.\\n        unchecked {\\n            return _currentIndex - _burnCounter - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total amount of tokens minted in the contract.\\n     */\\n    function _totalMinted() internal view virtual returns (uint256) {\\n        // Counter underflow is impossible as `_currentIndex` does not decrement,\\n        // and it is initialized to `_startTokenId()`.\\n        unchecked {\\n            return _currentIndex - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens burned.\\n     */\\n    function _totalBurned() internal view virtual returns (uint256) {\\n        return _burnCounter;\\n    }\\n\\n    // =============================================================\\n    //                    ADDRESS DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the number of tokens in `owner`'s account.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        if (owner == address(0)) revert BalanceQueryForZeroAddress();\\n        return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens minted by `owner`.\\n     */\\n    function _numberMinted(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens burned by or on behalf of `owner`.\\n     */\\n    function _numberBurned(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     */\\n    function _getAux(address owner) internal view returns (uint64) {\\n        return uint64(_packedAddressData[owner] >> _BITPOS_AUX);\\n    }\\n\\n    /**\\n     * Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     * If there are multiple variables, please pack them into a uint64.\\n     */\\n    function _setAux(address owner, uint64 aux) internal virtual {\\n        uint256 packed = _packedAddressData[owner];\\n        uint256 auxCasted;\\n        // Cast `aux` with assembly to avoid redundant masking.\\n        assembly {\\n            auxCasted := aux\\n        }\\n        packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX);\\n        _packedAddressData[owner] = packed;\\n    }\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        // The interface IDs are constants representing the first 4 bytes\\n        // of the XOR of all function selectors in the interface.\\n        // See: [ERC165](https://eips.ethereum.org/EIPS/eip-165)\\n        // (e.g. `bytes4(i.functionA.selector ^ i.functionB.selector ^ ...)`)\\n        return\\n            interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165.\\n            interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721.\\n            interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata.\\n    }\\n\\n    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, it can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return '';\\n    }\\n\\n    // =============================================================\\n    //                     OWNERSHIPS OPERATIONS\\n    // =============================================================\\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) public view virtual override returns (address) {\\n        return address(uint160(_packedOwnershipOf(tokenId)));\\n    }\\n\\n    /**\\n     * @dev Gas spent here starts off proportional to the maximum mint batch size.\\n     * It gradually moves to O(1) as tokens get transferred around over time.\\n     */\\n    function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnershipOf(tokenId));\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct at `index`.\\n     */\\n    function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnerships[index]);\\n    }\\n\\n    /**\\n     * @dev Initializes the ownership slot minted at `index` for efficiency purposes.\\n     */\\n    function _initializeOwnershipAt(uint256 index) internal virtual {\\n        if (_packedOwnerships[index] == 0) {\\n            _packedOwnerships[index] = _packedOwnershipOf(index);\\n        }\\n    }\\n\\n    /**\\n     * Returns the packed ownership data of `tokenId`.\\n     */\\n    function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {\\n        uint256 curr = tokenId;\\n\\n        unchecked {\\n            if (_startTokenId() <= curr)\\n                if (curr < _currentIndex) {\\n                    uint256 packed = _packedOwnerships[curr];\\n                    // If not burned.\\n                    if (packed & _BITMASK_BURNED == 0) {\\n                        // Invariant:\\n                        // There will always be an initialized ownership slot\\n                        // (i.e. `ownership.addr != address(0) && ownership.burned == false`)\\n                        // before an unintialized ownership slot\\n                        // (i.e. `ownership.addr == address(0) && ownership.burned == false`)\\n                        // Hence, `curr` will not underflow.\\n                        //\\n                        // We can directly compare the packed value.\\n                        // If the address is zero, packed will be zero.\\n                        while (packed == 0) {\\n                            packed = _packedOwnerships[--curr];\\n                        }\\n                        return packed;\\n                    }\\n                }\\n        }\\n        revert OwnerQueryForNonexistentToken();\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct from `packed`.\\n     */\\n    function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {\\n        ownership.addr = address(uint160(packed));\\n        ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP);\\n        ownership.burned = packed & _BITMASK_BURNED != 0;\\n        ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA);\\n    }\\n\\n    /**\\n     * @dev Packs ownership data into a single uint256.\\n     */\\n    function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // `owner | (block.timestamp << _BITPOS_START_TIMESTAMP) | flags`.\\n            result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the `nextInitialized` flag set if `quantity` equals 1.\\n     */\\n    function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) {\\n        // For branchless setting of the `nextInitialized` flag.\\n        assembly {\\n            // `(quantity == 1) << _BITPOS_NEXT_INITIALIZED`.\\n            result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1))\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      APPROVAL OPERATIONS\\n    // =============================================================\\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\\n     * 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) public payable virtual override {\\n        address owner = ownerOf(tokenId);\\n\\n        if (_msgSenderERC721A() != owner)\\n            if (!isApprovedForAll(owner, _msgSenderERC721A())) {\\n                revert ApprovalCallerNotOwnerNorApproved();\\n            }\\n\\n        _tokenApprovals[tokenId].value = to;\\n        emit Approval(owner, to, tokenId);\\n    }\\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) public view virtual override returns (address) {\\n        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();\\n\\n        return _tokenApprovals[tokenId].value;\\n    }\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _operatorApprovals[_msgSenderERC721A()][operator] = approved;\\n        emit ApprovalForAll(_msgSenderERC721A(), operator, approved);\\n    }\\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) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted. See {_mint}.\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return\\n            _startTokenId() <= tokenId &&\\n            tokenId < _currentIndex && // If within bounds,\\n            _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.\\n    }\\n\\n    /**\\n     * @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.\\n     */\\n    function _isSenderApprovedOrOwner(\\n        address approvedAddress,\\n        address owner,\\n        address msgSender\\n    ) private pure returns (bool result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            msgSender := and(msgSender, _BITMASK_ADDRESS)\\n            // `msgSender == owner || msgSender == approvedAddress`.\\n            result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the storage slot and value for the approved address of `tokenId`.\\n     */\\n    function _getApprovedSlotAndAddress(uint256 tokenId)\\n        private\\n        view\\n        returns (uint256 approvedAddressSlot, address approvedAddress)\\n    {\\n        TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId];\\n        // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId].value`.\\n        assembly {\\n            approvedAddressSlot := tokenApproval.slot\\n            approvedAddress := sload(approvedAddressSlot)\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      TRANSFER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Transfers `tokenId` 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 be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner();\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        // The nested ifs save around 20+ gas over a compound boolean condition.\\n        if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n            if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n\\n        if (to == address(0)) revert TransferToZeroAddress();\\n\\n        _beforeTokenTransfers(from, to, tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // We can directly increment and decrement the balances.\\n            --_packedAddressData[from]; // Updates: `balance -= 1`.\\n            ++_packedAddressData[to]; // Updates: `balance += 1`.\\n\\n            // Updates:\\n            // - `address` to the next owner.\\n            // - `startTimestamp` to the timestamp of transfering.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                to,\\n                _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, to, tokenId);\\n        _afterTokenTransfers(from, to, tokenId, 1);\\n    }\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        safeTransferFrom(from, to, tokenId, '');\\n    }\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) public payable virtual override {\\n        transferFrom(from, to, tokenId);\\n        if (to.code.length != 0)\\n            if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before a set of serially-ordered token IDs\\n     * are about to be transferred. This includes minting.\\n     * And also called before burning one token.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _beforeTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after a set of serially-ordered token IDs\\n     * have been transferred. This includes minting.\\n     * And also called after one token has been burned.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` has been minted for `to`.\\n     * - When `to` is zero, `tokenId` has been burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _afterTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract.\\n     *\\n     * `from` - Previous owner of the given token ID.\\n     * `to` - Target address that will receive the token.\\n     * `tokenId` - Token ID to be transferred.\\n     * `_data` - Optional data to send along with the call.\\n     *\\n     * Returns whether the call correctly returned the expected magic value.\\n     */\\n    function _checkContractOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) private returns (bool) {\\n        try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (\\n            bytes4 retval\\n        ) {\\n            return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;\\n        } catch (bytes memory reason) {\\n            if (reason.length == 0) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            } else {\\n                assembly {\\n                    revert(add(32, reason), mload(reason))\\n                }\\n            }\\n        }\\n    }\\n\\n    // =============================================================\\n    //                        MINT OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _mint(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (quantity == 0) revert MintZeroQuantity();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are incredibly unrealistic.\\n        // `balance` and `numberMinted` have a maximum limit of 2**64.\\n        // `tokenId` has a maximum limit of 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            uint256 toMasked;\\n            uint256 end = startTokenId + quantity;\\n\\n            // Use assembly to loop and emit the `Transfer` event for gas savings.\\n            // The duplicated `log4` removes an extra check and reduces stack juggling.\\n            // The assembly, together with the surrounding Solidity code, have been\\n            // delicately arranged to nudge the compiler into producing optimized opcodes.\\n            assembly {\\n                // Mask `to` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n                toMasked := and(to, _BITMASK_ADDRESS)\\n                // Emit the `Transfer` event.\\n                log4(\\n                    0, // Start of data (0, since no data).\\n                    0, // End of data (0, since no data).\\n                    _TRANSFER_EVENT_SIGNATURE, // Signature.\\n                    0, // `address(0)`.\\n                    toMasked, // `to`.\\n                    startTokenId // `tokenId`.\\n                )\\n\\n                // The `iszero(eq(,))` check ensures that large values of `quantity`\\n                // that overflows uint256 will make the loop run out of gas.\\n                // The compiler will optimize the `iszero` away for performance.\\n                for {\\n                    let tokenId := add(startTokenId, 1)\\n                } iszero(eq(tokenId, end)) {\\n                    tokenId := add(tokenId, 1)\\n                } {\\n                    // Emit the `Transfer` event. Similar to above.\\n                    log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)\\n                }\\n            }\\n            if (toMasked == 0) revert MintToZeroAddress();\\n\\n            _currentIndex = end;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * This function is intended for efficient minting only during contract creation.\\n     *\\n     * It emits only one {ConsecutiveTransfer} as defined in\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309),\\n     * instead of a sequence of {Transfer} event(s).\\n     *\\n     * Calling this function outside of contract creation WILL make your contract\\n     * non-compliant with the ERC721 standard.\\n     * For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309\\n     * {ConsecutiveTransfer} event is only permissible during contract creation.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {ConsecutiveTransfer} event.\\n     */\\n    function _mintERC2309(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (to == address(0)) revert MintToZeroAddress();\\n        if (quantity == 0) revert MintZeroQuantity();\\n        if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are unrealistic due to the above check for `quantity` to be below the limit.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to);\\n\\n            _currentIndex = startTokenId + quantity;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Safely mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called for each safe transfer.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * See {_mint}.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 quantity,\\n        bytes memory _data\\n    ) internal virtual {\\n        _mint(to, quantity);\\n\\n        unchecked {\\n            if (to.code.length != 0) {\\n                uint256 end = _currentIndex;\\n                uint256 index = end - quantity;\\n                do {\\n                    if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {\\n                        revert TransferToNonERC721ReceiverImplementer();\\n                    }\\n                } while (index < end);\\n                // Reentrancy protection.\\n                if (_currentIndex != end) revert();\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Equivalent to `_safeMint(to, quantity, '')`.\\n     */\\n    function _safeMint(address to, uint256 quantity) internal virtual {\\n        _safeMint(to, quantity, '');\\n    }\\n\\n    // =============================================================\\n    //                        BURN OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Equivalent to `_burn(tokenId, false)`.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        _burn(tokenId, false);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId, bool approvalCheck) internal virtual {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        address from = address(uint160(prevOwnershipPacked));\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        if (approvalCheck) {\\n            // The nested ifs save around 20+ gas over a compound boolean condition.\\n            if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n                if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n        }\\n\\n        _beforeTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance -= 1`.\\n            // - `numberBurned += 1`.\\n            //\\n            // We can directly decrement the balance, and increment the number burned.\\n            // This is equivalent to `packed -= 1; packed += 1 << _BITPOS_NUMBER_BURNED;`.\\n            _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1;\\n\\n            // Updates:\\n            // - `address` to the last owner.\\n            // - `startTimestamp` to the timestamp of burning.\\n            // - `burned` to `true`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                from,\\n                (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, address(0), tokenId);\\n        _afterTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times.\\n        unchecked {\\n            _burnCounter++;\\n        }\\n    }\\n\\n    // =============================================================\\n    //                     EXTRA DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Directly sets the extra data for the ownership data `index`.\\n     */\\n    function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual {\\n        uint256 packed = _packedOwnerships[index];\\n        if (packed == 0) revert OwnershipNotInitializedForExtraData();\\n        uint256 extraDataCasted;\\n        // Cast `extraData` with assembly to avoid redundant masking.\\n        assembly {\\n            extraDataCasted := extraData\\n        }\\n        packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA);\\n        _packedOwnerships[index] = packed;\\n    }\\n\\n    /**\\n     * @dev Called during each token transfer to set the 24bit `extraData` field.\\n     * Intended to be overridden by the cosumer contract.\\n     *\\n     * `previousExtraData` - the value of `extraData` before transfer.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _extraData(\\n        address from,\\n        address to,\\n        uint24 previousExtraData\\n    ) internal view virtual returns (uint24) {}\\n\\n    /**\\n     * @dev Returns the next extra data for the packed ownership data.\\n     * The returned result is shifted into position.\\n     */\\n    function _nextExtraData(\\n        address from,\\n        address to,\\n        uint256 prevOwnershipPacked\\n    ) private view returns (uint256) {\\n        uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA);\\n        return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA;\\n    }\\n\\n    // =============================================================\\n    //                       OTHER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the message sender (defaults to `msg.sender`).\\n     *\\n     * If you are writing GSN compatible contracts, you need to override this function.\\n     */\\n    function _msgSenderERC721A() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    /**\\n     * @dev Converts a uint256 to its ASCII string decimal representation.\\n     */\\n    function _toString(uint256 value) internal pure virtual returns (string memory str) {\\n        assembly {\\n            // The maximum value of a uint256 contains 78 digits (1 byte per digit), but\\n            // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.\\n            // We will need 1 word for the trailing zeros padding, 1 word for the length,\\n            // and 3 words for a maximum of 78 digits. Total: 5 * 0x20 = 0xa0.\\n            let m := add(mload(0x40), 0xa0)\\n            // Update the free memory pointer to allocate.\\n            mstore(0x40, m)\\n            // Assign the `str` to the end.\\n            str := sub(m, 0x20)\\n            // Zeroize the slot after the string.\\n            mstore(str, 0)\\n\\n            // Cache the end of the memory to calculate the length later.\\n            let end := str\\n\\n            // We write the string from rightmost digit to leftmost digit.\\n            // The following is essentially a do-while loop that also handles the zero case.\\n            // prettier-ignore\\n            for { let temp := value } 1 {} {\\n                str := sub(str, 1)\\n                // Write the character to the pointer.\\n                // The ASCII index of the '0' character is 48.\\n                mstore8(str, add(48, mod(temp, 10)))\\n                // Keep dividing `temp` until zero.\\n                temp := div(temp, 10)\\n                // prettier-ignore\\n                if iszero(temp) { break }\\n            }\\n\\n            let length := sub(end, str)\\n            // Move the pointer 32 bytes leftwards to make room for the length.\\n            str := sub(str, 0x20)\\n            // Store the length.\\n            mstore(str, length)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x23116c16976b7d8c0c714ba1b38ae6b16c16fc90ec69b568fb1ebf1bc063e01c\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/ERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport './IERC4907A.sol';\\nimport '../ERC721A.sol';\\n\\n/**\\n * @title ERC4907A\\n *\\n * @dev [ERC4907](https://eips.ethereum.org/EIPS/eip-4907) compliant\\n * extension of ERC721A, which allows owners and authorized addresses\\n * to add a time-limited role with restricted permissions to ERC721 tokens.\\n */\\nabstract contract ERC4907A is ERC721A, IERC4907A {\\n    // The bit position of `expires` in packed user info.\\n    uint256 private constant _BITPOS_EXPIRES = 160;\\n\\n    // Mapping from token ID to user info.\\n    //\\n    // Bits Layout:\\n    // - [0..159]   `user`\\n    // - [160..223] `expires`\\n    mapping(uint256 => uint256) private _packedUserInfo;\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) public virtual override {\\n        // Require the caller to be either the token owner or an approved operator.\\n        address owner = ownerOf(tokenId);\\n        if (_msgSenderERC721A() != owner)\\n            if (!isApprovedForAll(owner, _msgSenderERC721A()))\\n                if (getApproved(tokenId) != _msgSenderERC721A()) revert SetUserCallerNotOwnerNorApproved();\\n\\n        _packedUserInfo[tokenId] = (uint256(expires) << _BITPOS_EXPIRES) | uint256(uint160(user));\\n\\n        emit UpdateUser(tokenId, user, expires);\\n    }\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) public view virtual override returns (address) {\\n        uint256 packed = _packedUserInfo[tokenId];\\n        assembly {\\n            // Branchless `packed *= (block.timestamp <= expires ? 1 : 0)`.\\n            // If the `block.timestamp == expires`, the `lt` clause will be true\\n            // if there is a non-zero user address in the lower 160 bits of `packed`.\\n            packed := mul(\\n                packed,\\n                // `block.timestamp <= expires ? 1 : 0`.\\n                lt(shl(_BITPOS_EXPIRES, timestamp()), packed)\\n            )\\n        }\\n        return address(uint160(packed));\\n    }\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) public view virtual override returns (uint256) {\\n        return _packedUserInfo[tokenId] >> _BITPOS_EXPIRES;\\n    }\\n\\n    /**\\n     * @dev Override of {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721A, IERC721A) returns (bool) {\\n        // The interface ID for ERC4907 is `0xad092b5c`,\\n        // as defined in [ERC4907](https://eips.ethereum.org/EIPS/eip-4907).\\n        return super.supportsInterface(interfaceId) || interfaceId == 0xad092b5c;\\n    }\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`, ignoring the expiry status.\\n     */\\n    function _explicitUserOf(uint256 tokenId) internal view virtual returns (address) {\\n        return address(uint160(_packedUserInfo[tokenId]));\\n    }\\n}\\n\",\"keccak256\":\"0x9b52ce07effe73a2afe354b4266529eac74ff967a0342d8279e715f90f972726\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":8612,"contract":"contracts/ERC4907.sol:ERC4907","label":"_currentIndex","offset":0,"slot":"0","type":"t_uint256"},{"astId":8614,"contract":"contracts/ERC4907.sol:ERC4907","label":"_burnCounter","offset":0,"slot":"1","type":"t_uint256"},{"astId":8616,"contract":"contracts/ERC4907.sol:ERC4907","label":"_name","offset":0,"slot":"2","type":"t_string_storage"},{"astId":8618,"contract":"contracts/ERC4907.sol:ERC4907","label":"_symbol","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8622,"contract":"contracts/ERC4907.sol:ERC4907","label":"_packedOwnerships","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_uint256)"},{"astId":8626,"contract":"contracts/ERC4907.sol:ERC4907","label":"_packedAddressData","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint256)"},{"astId":8631,"contract":"contracts/ERC4907.sol:ERC4907","label":"_tokenApprovals","offset":0,"slot":"6","type":"t_mapping(t_uint256,t_struct(TokenApprovalRef)8544_storage)"},{"astId":8637,"contract":"contracts/ERC4907.sol:ERC4907","label":"_operatorApprovals","offset":0,"slot":"7","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":10365,"contract":"contracts/ERC4907.sol:ERC4907","label":"_packedUserInfo","offset":0,"slot":"8","type":"t_mapping(t_uint256,t_uint256)"},{"astId":7,"contract":"contracts/ERC4907.sol:ERC4907","label":"_owner","offset":0,"slot":"9","type":"t_address"},{"astId":2468,"contract":"contracts/ERC4907.sol:ERC4907","label":"_assets","offset":0,"slot":"10","type":"t_mapping(t_uint256,t_struct(AssetInfo)2463_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"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_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"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(AssetInfo)2463_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct ERC4907.AssetInfo)","numberOfBytes":"32","value":"t_struct(AssetInfo)2463_storage"},"t_mapping(t_uint256,t_struct(TokenApprovalRef)8544_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct ERC721A.TokenApprovalRef)","numberOfBytes":"32","value":"t_struct(TokenApprovalRef)8544_storage"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(AssetInfo)2463_storage":{"encoding":"inplace","label":"struct ERC4907.AssetInfo","members":[{"astId":2460,"contract":"contracts/ERC4907.sol:ERC4907","label":"tokenAddress","offset":0,"slot":"0","type":"t_address"},{"astId":2462,"contract":"contracts/ERC4907.sol:ERC4907","label":"tokenId","offset":0,"slot":"1","type":"t_uint256"}],"numberOfBytes":"64"},"t_struct(TokenApprovalRef)8544_storage":{"encoding":"inplace","label":"struct ERC721A.TokenApprovalRef","members":[{"astId":8543,"contract":"contracts/ERC4907.sol:ERC4907","label":"value","offset":0,"slot":"0","type":"t_address"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"errors":{"ApprovalCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"ApprovalQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"BalanceQueryForZeroAddress()":[{"notice":"Cannot query the balance for the zero address."}],"MintERC2309QuantityExceedsLimit()":[{"notice":"The `quantity` minted with ERC2309 exceeds the safety limit."}],"MintToZeroAddress()":[{"notice":"Cannot mint to the zero address."}],"MintZeroQuantity()":[{"notice":"The quantity of tokens minted must be more than zero."}],"OwnerQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"OwnershipNotInitializedForExtraData()":[{"notice":"The `extraData` cannot be set on an unintialized ownership slot."}],"SetUserCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"TransferCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"TransferFromIncorrectOwner()":[{"notice":"The token must be owned by `from`."}],"TransferToNonERC721ReceiverImplementer()":[{"notice":"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface."}],"TransferToZeroAddress()":[{"notice":"Cannot transfer to the zero address."}],"URIQueryForNonexistentToken()":[{"notice":"The token does not exist."}]},"kind":"user","methods":{},"version":1}},"IERC721Metadata":{"abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"tokenURI(uint256)":"c87b56dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC4907.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/ERC4907.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { IERC721A } from \\\"erc721a/contracts/IERC721A.sol\\\";\\nimport { ERC721A } from \\\"erc721a/contracts/ERC721A.sol\\\";\\nimport { ERC4907A } from \\\"erc721a/contracts/extensions/ERC4907A.sol\\\";\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ninterface IERC721Metadata {\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\\ncontract ERC4907 is ERC4907A, Ownable {\\n\\n    struct AssetInfo {\\n        address tokenAddress;\\n        uint256 tokenId;\\n    }\\n\\n    mapping(uint256 => AssetInfo) internal _assets;\\n\\n    constructor() ERC721A(\\\"BNPL\\\", \\\"BNPL\\\") {}\\n    \\n    function mint(address to, address tokenAddress, uint256 tokenId)\\n        external\\n        onlyOwner\\n        returns (uint256 tid)\\n    {\\n        _mint(to, 1);\\n        tid = _nextTokenId() - 1;\\n        _assets[tid] = AssetInfo(tokenAddress, tokenId);\\n    }\\n\\n    function burn(uint256 tokenId) external onlyOwner {\\n        setUser(tokenId, address(0), 0);\\n        _burn(tokenId);\\n    }\\n\\n    function tokenURI(uint256 tokenId)\\n        public\\n        view\\n        override (ERC721A, IERC721A)\\n        returns (string memory)\\n    {\\n        AssetInfo memory asset = _assets[tokenId];\\n        try IERC721Metadata(asset.tokenAddress).tokenURI(asset.tokenId) returns (string memory uri) {\\n            return uri;\\n        } catch {\\n            return super.tokenURI(tokenId);\\n        }\\n    }\\n}\",\"keccak256\":\"0xf22f4ea35a6d670442c021be0dc1edce759063757c54f1060527040e2f755362\",\"license\":\"MIT\"},\"erc721a/contracts/ERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport './IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC721 token receiver.\\n */\\ninterface ERC721A__IERC721Receiver {\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\\n/**\\n * @title ERC721A\\n *\\n * @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)\\n * Non-Fungible Token Standard, including the Metadata extension.\\n * Optimized for lower gas during batch mints.\\n *\\n * Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...)\\n * starting from `_startTokenId()`.\\n *\\n * Assumptions:\\n *\\n * - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply.\\n * - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).\\n */\\ncontract ERC721A is IERC721A {\\n    // Bypass for a `--via-ir` bug (https://github.com/chiru-labs/ERC721A/pull/364).\\n    struct TokenApprovalRef {\\n        address value;\\n    }\\n\\n    // =============================================================\\n    //                           CONSTANTS\\n    // =============================================================\\n\\n    // Mask of an entry in packed address data.\\n    uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;\\n\\n    // The bit position of `numberMinted` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_MINTED = 64;\\n\\n    // The bit position of `numberBurned` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_BURNED = 128;\\n\\n    // The bit position of `aux` in packed address data.\\n    uint256 private constant _BITPOS_AUX = 192;\\n\\n    // Mask of all 256 bits in packed address data except the 64 bits for `aux`.\\n    uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;\\n\\n    // The bit position of `startTimestamp` in packed ownership.\\n    uint256 private constant _BITPOS_START_TIMESTAMP = 160;\\n\\n    // The bit mask of the `burned` bit in packed ownership.\\n    uint256 private constant _BITMASK_BURNED = 1 << 224;\\n\\n    // The bit position of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;\\n\\n    // The bit mask of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;\\n\\n    // The bit position of `extraData` in packed ownership.\\n    uint256 private constant _BITPOS_EXTRA_DATA = 232;\\n\\n    // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`.\\n    uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1;\\n\\n    // The mask of the lower 160 bits for addresses.\\n    uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;\\n\\n    // The maximum `quantity` that can be minted with {_mintERC2309}.\\n    // This limit is to prevent overflows on the address data entries.\\n    // For a limit of 5000, a total of 3.689e15 calls to {_mintERC2309}\\n    // is required to cause an overflow, which is unrealistic.\\n    uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000;\\n\\n    // The `Transfer` event signature is given by:\\n    // `keccak256(bytes(\\\"Transfer(address,address,uint256)\\\"))`.\\n    bytes32 private constant _TRANSFER_EVENT_SIGNATURE =\\n        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;\\n\\n    // =============================================================\\n    //                            STORAGE\\n    // =============================================================\\n\\n    // The next token ID to be minted.\\n    uint256 private _currentIndex;\\n\\n    // The number of tokens burned.\\n    uint256 private _burnCounter;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to ownership details\\n    // An empty struct value does not necessarily mean the token is unowned.\\n    // See {_packedOwnershipOf} implementation for details.\\n    //\\n    // Bits Layout:\\n    // - [0..159]   `addr`\\n    // - [160..223] `startTimestamp`\\n    // - [224]      `burned`\\n    // - [225]      `nextInitialized`\\n    // - [232..255] `extraData`\\n    mapping(uint256 => uint256) private _packedOwnerships;\\n\\n    // Mapping owner address to address data.\\n    //\\n    // Bits Layout:\\n    // - [0..63]    `balance`\\n    // - [64..127]  `numberMinted`\\n    // - [128..191] `numberBurned`\\n    // - [192..255] `aux`\\n    mapping(address => uint256) private _packedAddressData;\\n\\n    // Mapping from token ID to approved address.\\n    mapping(uint256 => TokenApprovalRef) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    // =============================================================\\n    //                          CONSTRUCTOR\\n    // =============================================================\\n\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n        _currentIndex = _startTokenId();\\n    }\\n\\n    // =============================================================\\n    //                   TOKEN COUNTING OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the starting token ID.\\n     * To change the starting token ID, please override this function.\\n     */\\n    function _startTokenId() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Returns the next token ID to be minted.\\n     */\\n    function _nextTokenId() internal view virtual returns (uint256) {\\n        return _currentIndex;\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        // Counter underflow is impossible as _burnCounter cannot be incremented\\n        // more than `_currentIndex - _startTokenId()` times.\\n        unchecked {\\n            return _currentIndex - _burnCounter - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total amount of tokens minted in the contract.\\n     */\\n    function _totalMinted() internal view virtual returns (uint256) {\\n        // Counter underflow is impossible as `_currentIndex` does not decrement,\\n        // and it is initialized to `_startTokenId()`.\\n        unchecked {\\n            return _currentIndex - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens burned.\\n     */\\n    function _totalBurned() internal view virtual returns (uint256) {\\n        return _burnCounter;\\n    }\\n\\n    // =============================================================\\n    //                    ADDRESS DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the number of tokens in `owner`'s account.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        if (owner == address(0)) revert BalanceQueryForZeroAddress();\\n        return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens minted by `owner`.\\n     */\\n    function _numberMinted(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens burned by or on behalf of `owner`.\\n     */\\n    function _numberBurned(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     */\\n    function _getAux(address owner) internal view returns (uint64) {\\n        return uint64(_packedAddressData[owner] >> _BITPOS_AUX);\\n    }\\n\\n    /**\\n     * Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     * If there are multiple variables, please pack them into a uint64.\\n     */\\n    function _setAux(address owner, uint64 aux) internal virtual {\\n        uint256 packed = _packedAddressData[owner];\\n        uint256 auxCasted;\\n        // Cast `aux` with assembly to avoid redundant masking.\\n        assembly {\\n            auxCasted := aux\\n        }\\n        packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX);\\n        _packedAddressData[owner] = packed;\\n    }\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        // The interface IDs are constants representing the first 4 bytes\\n        // of the XOR of all function selectors in the interface.\\n        // See: [ERC165](https://eips.ethereum.org/EIPS/eip-165)\\n        // (e.g. `bytes4(i.functionA.selector ^ i.functionB.selector ^ ...)`)\\n        return\\n            interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165.\\n            interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721.\\n            interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata.\\n    }\\n\\n    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, it can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return '';\\n    }\\n\\n    // =============================================================\\n    //                     OWNERSHIPS OPERATIONS\\n    // =============================================================\\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) public view virtual override returns (address) {\\n        return address(uint160(_packedOwnershipOf(tokenId)));\\n    }\\n\\n    /**\\n     * @dev Gas spent here starts off proportional to the maximum mint batch size.\\n     * It gradually moves to O(1) as tokens get transferred around over time.\\n     */\\n    function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnershipOf(tokenId));\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct at `index`.\\n     */\\n    function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnerships[index]);\\n    }\\n\\n    /**\\n     * @dev Initializes the ownership slot minted at `index` for efficiency purposes.\\n     */\\n    function _initializeOwnershipAt(uint256 index) internal virtual {\\n        if (_packedOwnerships[index] == 0) {\\n            _packedOwnerships[index] = _packedOwnershipOf(index);\\n        }\\n    }\\n\\n    /**\\n     * Returns the packed ownership data of `tokenId`.\\n     */\\n    function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {\\n        uint256 curr = tokenId;\\n\\n        unchecked {\\n            if (_startTokenId() <= curr)\\n                if (curr < _currentIndex) {\\n                    uint256 packed = _packedOwnerships[curr];\\n                    // If not burned.\\n                    if (packed & _BITMASK_BURNED == 0) {\\n                        // Invariant:\\n                        // There will always be an initialized ownership slot\\n                        // (i.e. `ownership.addr != address(0) && ownership.burned == false`)\\n                        // before an unintialized ownership slot\\n                        // (i.e. `ownership.addr == address(0) && ownership.burned == false`)\\n                        // Hence, `curr` will not underflow.\\n                        //\\n                        // We can directly compare the packed value.\\n                        // If the address is zero, packed will be zero.\\n                        while (packed == 0) {\\n                            packed = _packedOwnerships[--curr];\\n                        }\\n                        return packed;\\n                    }\\n                }\\n        }\\n        revert OwnerQueryForNonexistentToken();\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct from `packed`.\\n     */\\n    function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {\\n        ownership.addr = address(uint160(packed));\\n        ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP);\\n        ownership.burned = packed & _BITMASK_BURNED != 0;\\n        ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA);\\n    }\\n\\n    /**\\n     * @dev Packs ownership data into a single uint256.\\n     */\\n    function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // `owner | (block.timestamp << _BITPOS_START_TIMESTAMP) | flags`.\\n            result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the `nextInitialized` flag set if `quantity` equals 1.\\n     */\\n    function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) {\\n        // For branchless setting of the `nextInitialized` flag.\\n        assembly {\\n            // `(quantity == 1) << _BITPOS_NEXT_INITIALIZED`.\\n            result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1))\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      APPROVAL OPERATIONS\\n    // =============================================================\\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\\n     * 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) public payable virtual override {\\n        address owner = ownerOf(tokenId);\\n\\n        if (_msgSenderERC721A() != owner)\\n            if (!isApprovedForAll(owner, _msgSenderERC721A())) {\\n                revert ApprovalCallerNotOwnerNorApproved();\\n            }\\n\\n        _tokenApprovals[tokenId].value = to;\\n        emit Approval(owner, to, tokenId);\\n    }\\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) public view virtual override returns (address) {\\n        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();\\n\\n        return _tokenApprovals[tokenId].value;\\n    }\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _operatorApprovals[_msgSenderERC721A()][operator] = approved;\\n        emit ApprovalForAll(_msgSenderERC721A(), operator, approved);\\n    }\\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) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted. See {_mint}.\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return\\n            _startTokenId() <= tokenId &&\\n            tokenId < _currentIndex && // If within bounds,\\n            _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.\\n    }\\n\\n    /**\\n     * @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.\\n     */\\n    function _isSenderApprovedOrOwner(\\n        address approvedAddress,\\n        address owner,\\n        address msgSender\\n    ) private pure returns (bool result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            msgSender := and(msgSender, _BITMASK_ADDRESS)\\n            // `msgSender == owner || msgSender == approvedAddress`.\\n            result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the storage slot and value for the approved address of `tokenId`.\\n     */\\n    function _getApprovedSlotAndAddress(uint256 tokenId)\\n        private\\n        view\\n        returns (uint256 approvedAddressSlot, address approvedAddress)\\n    {\\n        TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId];\\n        // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId].value`.\\n        assembly {\\n            approvedAddressSlot := tokenApproval.slot\\n            approvedAddress := sload(approvedAddressSlot)\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      TRANSFER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Transfers `tokenId` 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 be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner();\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        // The nested ifs save around 20+ gas over a compound boolean condition.\\n        if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n            if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n\\n        if (to == address(0)) revert TransferToZeroAddress();\\n\\n        _beforeTokenTransfers(from, to, tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // We can directly increment and decrement the balances.\\n            --_packedAddressData[from]; // Updates: `balance -= 1`.\\n            ++_packedAddressData[to]; // Updates: `balance += 1`.\\n\\n            // Updates:\\n            // - `address` to the next owner.\\n            // - `startTimestamp` to the timestamp of transfering.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                to,\\n                _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, to, tokenId);\\n        _afterTokenTransfers(from, to, tokenId, 1);\\n    }\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        safeTransferFrom(from, to, tokenId, '');\\n    }\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) public payable virtual override {\\n        transferFrom(from, to, tokenId);\\n        if (to.code.length != 0)\\n            if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before a set of serially-ordered token IDs\\n     * are about to be transferred. This includes minting.\\n     * And also called before burning one token.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _beforeTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after a set of serially-ordered token IDs\\n     * have been transferred. This includes minting.\\n     * And also called after one token has been burned.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` has been minted for `to`.\\n     * - When `to` is zero, `tokenId` has been burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _afterTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract.\\n     *\\n     * `from` - Previous owner of the given token ID.\\n     * `to` - Target address that will receive the token.\\n     * `tokenId` - Token ID to be transferred.\\n     * `_data` - Optional data to send along with the call.\\n     *\\n     * Returns whether the call correctly returned the expected magic value.\\n     */\\n    function _checkContractOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) private returns (bool) {\\n        try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (\\n            bytes4 retval\\n        ) {\\n            return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;\\n        } catch (bytes memory reason) {\\n            if (reason.length == 0) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            } else {\\n                assembly {\\n                    revert(add(32, reason), mload(reason))\\n                }\\n            }\\n        }\\n    }\\n\\n    // =============================================================\\n    //                        MINT OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _mint(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (quantity == 0) revert MintZeroQuantity();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are incredibly unrealistic.\\n        // `balance` and `numberMinted` have a maximum limit of 2**64.\\n        // `tokenId` has a maximum limit of 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            uint256 toMasked;\\n            uint256 end = startTokenId + quantity;\\n\\n            // Use assembly to loop and emit the `Transfer` event for gas savings.\\n            // The duplicated `log4` removes an extra check and reduces stack juggling.\\n            // The assembly, together with the surrounding Solidity code, have been\\n            // delicately arranged to nudge the compiler into producing optimized opcodes.\\n            assembly {\\n                // Mask `to` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n                toMasked := and(to, _BITMASK_ADDRESS)\\n                // Emit the `Transfer` event.\\n                log4(\\n                    0, // Start of data (0, since no data).\\n                    0, // End of data (0, since no data).\\n                    _TRANSFER_EVENT_SIGNATURE, // Signature.\\n                    0, // `address(0)`.\\n                    toMasked, // `to`.\\n                    startTokenId // `tokenId`.\\n                )\\n\\n                // The `iszero(eq(,))` check ensures that large values of `quantity`\\n                // that overflows uint256 will make the loop run out of gas.\\n                // The compiler will optimize the `iszero` away for performance.\\n                for {\\n                    let tokenId := add(startTokenId, 1)\\n                } iszero(eq(tokenId, end)) {\\n                    tokenId := add(tokenId, 1)\\n                } {\\n                    // Emit the `Transfer` event. Similar to above.\\n                    log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)\\n                }\\n            }\\n            if (toMasked == 0) revert MintToZeroAddress();\\n\\n            _currentIndex = end;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * This function is intended for efficient minting only during contract creation.\\n     *\\n     * It emits only one {ConsecutiveTransfer} as defined in\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309),\\n     * instead of a sequence of {Transfer} event(s).\\n     *\\n     * Calling this function outside of contract creation WILL make your contract\\n     * non-compliant with the ERC721 standard.\\n     * For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309\\n     * {ConsecutiveTransfer} event is only permissible during contract creation.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {ConsecutiveTransfer} event.\\n     */\\n    function _mintERC2309(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (to == address(0)) revert MintToZeroAddress();\\n        if (quantity == 0) revert MintZeroQuantity();\\n        if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are unrealistic due to the above check for `quantity` to be below the limit.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to);\\n\\n            _currentIndex = startTokenId + quantity;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Safely mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called for each safe transfer.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * See {_mint}.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 quantity,\\n        bytes memory _data\\n    ) internal virtual {\\n        _mint(to, quantity);\\n\\n        unchecked {\\n            if (to.code.length != 0) {\\n                uint256 end = _currentIndex;\\n                uint256 index = end - quantity;\\n                do {\\n                    if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {\\n                        revert TransferToNonERC721ReceiverImplementer();\\n                    }\\n                } while (index < end);\\n                // Reentrancy protection.\\n                if (_currentIndex != end) revert();\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Equivalent to `_safeMint(to, quantity, '')`.\\n     */\\n    function _safeMint(address to, uint256 quantity) internal virtual {\\n        _safeMint(to, quantity, '');\\n    }\\n\\n    // =============================================================\\n    //                        BURN OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Equivalent to `_burn(tokenId, false)`.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        _burn(tokenId, false);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId, bool approvalCheck) internal virtual {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        address from = address(uint160(prevOwnershipPacked));\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        if (approvalCheck) {\\n            // The nested ifs save around 20+ gas over a compound boolean condition.\\n            if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n                if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n        }\\n\\n        _beforeTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance -= 1`.\\n            // - `numberBurned += 1`.\\n            //\\n            // We can directly decrement the balance, and increment the number burned.\\n            // This is equivalent to `packed -= 1; packed += 1 << _BITPOS_NUMBER_BURNED;`.\\n            _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1;\\n\\n            // Updates:\\n            // - `address` to the last owner.\\n            // - `startTimestamp` to the timestamp of burning.\\n            // - `burned` to `true`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                from,\\n                (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, address(0), tokenId);\\n        _afterTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times.\\n        unchecked {\\n            _burnCounter++;\\n        }\\n    }\\n\\n    // =============================================================\\n    //                     EXTRA DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Directly sets the extra data for the ownership data `index`.\\n     */\\n    function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual {\\n        uint256 packed = _packedOwnerships[index];\\n        if (packed == 0) revert OwnershipNotInitializedForExtraData();\\n        uint256 extraDataCasted;\\n        // Cast `extraData` with assembly to avoid redundant masking.\\n        assembly {\\n            extraDataCasted := extraData\\n        }\\n        packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA);\\n        _packedOwnerships[index] = packed;\\n    }\\n\\n    /**\\n     * @dev Called during each token transfer to set the 24bit `extraData` field.\\n     * Intended to be overridden by the cosumer contract.\\n     *\\n     * `previousExtraData` - the value of `extraData` before transfer.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _extraData(\\n        address from,\\n        address to,\\n        uint24 previousExtraData\\n    ) internal view virtual returns (uint24) {}\\n\\n    /**\\n     * @dev Returns the next extra data for the packed ownership data.\\n     * The returned result is shifted into position.\\n     */\\n    function _nextExtraData(\\n        address from,\\n        address to,\\n        uint256 prevOwnershipPacked\\n    ) private view returns (uint256) {\\n        uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA);\\n        return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA;\\n    }\\n\\n    // =============================================================\\n    //                       OTHER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the message sender (defaults to `msg.sender`).\\n     *\\n     * If you are writing GSN compatible contracts, you need to override this function.\\n     */\\n    function _msgSenderERC721A() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    /**\\n     * @dev Converts a uint256 to its ASCII string decimal representation.\\n     */\\n    function _toString(uint256 value) internal pure virtual returns (string memory str) {\\n        assembly {\\n            // The maximum value of a uint256 contains 78 digits (1 byte per digit), but\\n            // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.\\n            // We will need 1 word for the trailing zeros padding, 1 word for the length,\\n            // and 3 words for a maximum of 78 digits. Total: 5 * 0x20 = 0xa0.\\n            let m := add(mload(0x40), 0xa0)\\n            // Update the free memory pointer to allocate.\\n            mstore(0x40, m)\\n            // Assign the `str` to the end.\\n            str := sub(m, 0x20)\\n            // Zeroize the slot after the string.\\n            mstore(str, 0)\\n\\n            // Cache the end of the memory to calculate the length later.\\n            let end := str\\n\\n            // We write the string from rightmost digit to leftmost digit.\\n            // The following is essentially a do-while loop that also handles the zero case.\\n            // prettier-ignore\\n            for { let temp := value } 1 {} {\\n                str := sub(str, 1)\\n                // Write the character to the pointer.\\n                // The ASCII index of the '0' character is 48.\\n                mstore8(str, add(48, mod(temp, 10)))\\n                // Keep dividing `temp` until zero.\\n                temp := div(temp, 10)\\n                // prettier-ignore\\n                if iszero(temp) { break }\\n            }\\n\\n            let length := sub(end, str)\\n            // Move the pointer 32 bytes leftwards to make room for the length.\\n            str := sub(str, 0x20)\\n            // Store the length.\\n            mstore(str, length)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x23116c16976b7d8c0c714ba1b38ae6b16c16fc90ec69b568fb1ebf1bc063e01c\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/ERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport './IERC4907A.sol';\\nimport '../ERC721A.sol';\\n\\n/**\\n * @title ERC4907A\\n *\\n * @dev [ERC4907](https://eips.ethereum.org/EIPS/eip-4907) compliant\\n * extension of ERC721A, which allows owners and authorized addresses\\n * to add a time-limited role with restricted permissions to ERC721 tokens.\\n */\\nabstract contract ERC4907A is ERC721A, IERC4907A {\\n    // The bit position of `expires` in packed user info.\\n    uint256 private constant _BITPOS_EXPIRES = 160;\\n\\n    // Mapping from token ID to user info.\\n    //\\n    // Bits Layout:\\n    // - [0..159]   `user`\\n    // - [160..223] `expires`\\n    mapping(uint256 => uint256) private _packedUserInfo;\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) public virtual override {\\n        // Require the caller to be either the token owner or an approved operator.\\n        address owner = ownerOf(tokenId);\\n        if (_msgSenderERC721A() != owner)\\n            if (!isApprovedForAll(owner, _msgSenderERC721A()))\\n                if (getApproved(tokenId) != _msgSenderERC721A()) revert SetUserCallerNotOwnerNorApproved();\\n\\n        _packedUserInfo[tokenId] = (uint256(expires) << _BITPOS_EXPIRES) | uint256(uint160(user));\\n\\n        emit UpdateUser(tokenId, user, expires);\\n    }\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) public view virtual override returns (address) {\\n        uint256 packed = _packedUserInfo[tokenId];\\n        assembly {\\n            // Branchless `packed *= (block.timestamp <= expires ? 1 : 0)`.\\n            // If the `block.timestamp == expires`, the `lt` clause will be true\\n            // if there is a non-zero user address in the lower 160 bits of `packed`.\\n            packed := mul(\\n                packed,\\n                // `block.timestamp <= expires ? 1 : 0`.\\n                lt(shl(_BITPOS_EXPIRES, timestamp()), packed)\\n            )\\n        }\\n        return address(uint160(packed));\\n    }\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) public view virtual override returns (uint256) {\\n        return _packedUserInfo[tokenId] >> _BITPOS_EXPIRES;\\n    }\\n\\n    /**\\n     * @dev Override of {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721A, IERC721A) returns (bool) {\\n        // The interface ID for ERC4907 is `0xad092b5c`,\\n        // as defined in [ERC4907](https://eips.ethereum.org/EIPS/eip-4907).\\n        return super.supportsInterface(interfaceId) || interfaceId == 0xad092b5c;\\n    }\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`, ignoring the expiry status.\\n     */\\n    function _explicitUserOf(uint256 tokenId) internal view virtual returns (address) {\\n        return address(uint160(_packedUserInfo[tokenId]));\\n    }\\n}\\n\",\"keccak256\":\"0x9b52ce07effe73a2afe354b4266529eac74ff967a0342d8279e715f90f972726\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/conduit/Conduit.sol":{"Conduit":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"address","name":"channel","type":"address"}],"name":"ChannelClosed","type":"error"},{"inputs":[{"internalType":"address","name":"channel","type":"address"},{"internalType":"bool","name":"isOpen","type":"bool"}],"name":"ChannelStatusAlreadySet","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidController","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[],"name":"InvalidItemType","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"channel","type":"address"},{"indexed":false,"internalType":"bool","name":"open","type":"bool"}],"name":"ChannelUpdated","type":"event"},{"inputs":[{"components":[{"internalType":"enum ConduitItemType","name":"itemType","type":"uint8"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ConduitTransfer[]","name":"transfers","type":"tuple[]"}],"name":"execute","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"internalType":"struct ConduitBatch1155Transfer[]","name":"batchTransfers","type":"tuple[]"}],"name":"executeBatch1155","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ConduitItemType","name":"itemType","type":"uint8"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ConduitTransfer[]","name":"standardTransfers","type":"tuple[]"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"internalType":"struct ConduitBatch1155Transfer[]","name":"batchTransfers","type":"tuple[]"}],"name":"executeWithBatch1155","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"channel","type":"address"},{"internalType":"bool","name":"isOpen","type":"bool"}],"name":"updateChannel","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"0age","errors":{"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"ChannelClosed(address)":[{"details":"Revert with an error when attempting to execute transfers using a      caller that does not have an open channel."}],"ChannelStatusAlreadySet(address,bool)":[{"details":"Revert with an error when attempting to update a channel to the      current status of that channel."}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidController()":[{"details":"Revert with an error when attempting to update the status of a      channel from a caller that is not the conduit controller."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"InvalidItemType()":[{"details":"Revert with an error when attempting to execute a transfer for an      item that does not have an ERC20/721/1155 item type."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{"execute((uint8,address,address,address,uint256,uint256)[])":{"params":{"transfers":"The ERC20/721/1155 transfers to perform."},"returns":{"magicValue":"A magic value indicating that the transfers were                    performed successfully."}},"executeBatch1155((address,address,address,uint256[],uint256[])[])":{"params":{"batchTransfers":"The 1155 batch item transfers to perform."},"returns":{"magicValue":"A magic value indicating that the item transfers were                    performed successfully."}},"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])":{"params":{"batchTransfers":"The 1155 batch item transfers to perform.","standardTransfers":"The ERC20/721/1155 item transfers to perform."},"returns":{"magicValue":"A magic value indicating that the item transfers were                    performed successfully."}},"updateChannel(address,bool)":{"params":{"channel":"The channel to open or close.","isOpen":"The status of the channel (either open or closed)."}}},"title":"Conduit","version":1},"evm":{"bytecode":{"functionDebugData":{"@_2613":{"entryPoint":null,"id":2613,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5033608052608051610db461003060003960006102a40152610db46000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100995780638df25d92146100ac578063c4e8fcb5146100bf575b600080fd5b61006461005f366004610b4f565b6100d4565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b6100646100a7366004610bd6565b610175565b6100646100ba366004610c42565b610217565b6100d26100cd366004610ca1565b61028c565b005b6000336000526000602052604060002054610117577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8160005b8181101561014b5761014385858381811061013857610138610cdd565b905060c0020161040e565b60010161011b565b507f4ce34aa200000000000000000000000000000000000000000000000000000000949350505050565b60003360005260006020526040600020546101b8577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8360005b818110156101e1576101d987878381811061013857610138610cdd565b6001016101bc565b506101ec84846105ac565b507f899e104c0000000000000000000000000000000000000000000000000000000095945050505050565b600033600052600060205260406000205461025a577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b61026483836105ac565b507f8df25d920000000000000000000000000000000000000000000000000000000092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102fb576040517f6d5769be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481151560ff909116151503610386576040517f924e341e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152811515602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a25050565b600161041d6020830183610d3b565b600381111561042e5761042e610d0c565b03610473576104706104466040830160208401610d63565b6104566060840160408501610d63565b6104666080850160608601610d63565b8460a00135610755565b50565b60026104826020830183610d3b565b600381111561049357610493610d0c565b03610513578060a001356001146104d6576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104706104e96040830160208401610d63565b6104f96060840160408501610d63565b6105096080850160608601610d63565b84608001356108c2565b60036105226020830183610d3b565b600381111561053357610533610d0c565b0361057a5761047061054b6040830160208401610d63565b61055b6060840160408501610d63565b61056b6080850160608601610d63565b84608001358560a001356109d1565b6040517f7932f1fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082807f2eb2c2d60000000000000000000000000000000000000000000000000000000060205260005b8381101561074857823582018035803b610618577f5f15d672000000000000000000000000000000000000000000000000000000006000528060045260246000fd5b60a08201356020810260c0018060808501351460a06060860135141681850135831416159050801561066e577feba2084c0000000000000000000000000000000000000000000000000000000060005260046000fd5b506020860195506080602084016024376040810260400190508060a00160a45260008160c401528060c4018160a0850160c4376000808260206000875af1935083610739573d156106fe576020601f3d010491506020810482600302818411156106e657818403600302610200838002868002030401015b5a6020820110156106fb573d6000803e3d6000fd5b50505b7fafc445e2000000000000000000000000000000000000000000000000000000006000528260045260c0606452608451602001608452806000fd5b505050506001810190506105d6565b5050505060806040525050565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d151581166108b25780873b1515166108b25780610884578161084a573d1561080b576020601f3d01046020840481600302818311156107f257818303600302610200838002858002030401015b5a602082011015610807573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b833b6108f6577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af1806109c2573d15610983576020601f3d010460208304816003028183111561096a57818303600302610200838002858002030401015b5a60208201101561097f573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b610a05577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af180610ae7573d15610aa9576020601f3d0104602086048160030281831115610a9057818303600302610200838002858002030401015b5a602082011015610aa5573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f840112610b1557600080fd5b50813567ffffffffffffffff811115610b2d57600080fd5b60208301915083602060c083028501011115610b4857600080fd5b9250929050565b60008060208385031215610b6257600080fd5b823567ffffffffffffffff811115610b7957600080fd5b610b8585828601610b03565b90969095509350505050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b6020830191508360208260051b8501011115610b4857600080fd5b60008060008060408587031215610bec57600080fd5b843567ffffffffffffffff80821115610c0457600080fd5b610c1088838901610b03565b90965094506020870135915080821115610c2957600080fd5b50610c3687828801610b91565b95989497509550505050565b60008060208385031215610c5557600080fd5b823567ffffffffffffffff811115610c6c57600080fd5b610b8585828601610b91565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c9c57600080fd5b919050565b60008060408385031215610cb457600080fd5b610cbd83610c78565b915060208301358015158114610cd257600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215610d4d57600080fd5b813560048110610d5c57600080fd5b9392505050565b600060208284031215610d7557600080fd5b610d5c82610c7856fea26469706673582212209cadd638170dc51bd1bcdf7a749c70a4b43d82a57f073a9e1a087a48e2f0ad0164736f6c634300080e0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0xDB4 PUSH2 0x30 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x2A4 ADD MSTORE PUSH2 0xDB4 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0xB4F JUMP JUMPDEST PUSH2 0xD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xBA CALLDATASIZE PUSH1 0x4 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH2 0xD2 PUSH2 0xCD CALLDATASIZE PUSH1 0x4 PUSH2 0xCA1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x117 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14B JUMPI PUSH2 0x143 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11B JUMP JUMPDEST POP PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1B8 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH2 0x1D9 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BC JUMP JUMPDEST POP PUSH2 0x1EC DUP5 DUP5 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x899E104C00000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x25A JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x264 DUP4 DUP4 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x8DF25D9200000000000000000000000000000000000000000000000000000000 SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x2FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x6D5769BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 ISZERO ISZERO PUSH1 0xFF SWAP1 SWAP2 AND ISZERO ISZERO SUB PUSH2 0x386 JUMPI PUSH1 0x40 MLOAD PUSH32 0x924E341E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP2 ISZERO ISZERO PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x41D PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42E JUMPI PUSH2 0x42E PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x473 JUMPI PUSH2 0x470 PUSH2 0x446 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x456 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x466 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x755 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x482 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x493 JUMPI PUSH2 0x493 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x513 JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x4D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x470 PUSH2 0x4E9 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x4F9 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x509 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x8C2 JUMP JUMPDEST PUSH1 0x3 PUSH2 0x522 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x533 JUMPI PUSH2 0x533 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x57A JUMPI PUSH2 0x470 PUSH2 0x54B PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x55B PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x56B PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7932F1FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x748 JUMPI DUP3 CALLDATALOAD DUP3 ADD DUP1 CALLDATALOAD DUP1 EXTCODESIZE PUSH2 0x618 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP2 MUL PUSH1 0xC0 ADD DUP1 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP2 DUP6 ADD CALLDATALOAD DUP4 EQ AND ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x66E JUMPI PUSH32 0xEBA2084C00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x20 DUP7 ADD SWAP6 POP PUSH1 0x80 PUSH1 0x20 DUP5 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD SWAP1 POP DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH1 0xC4 ADD MSTORE DUP1 PUSH1 0xC4 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP8 GAS CALL SWAP4 POP DUP4 PUSH2 0x739 JUMPI RETURNDATASIZE ISZERO PUSH2 0x6FE JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x6E6 JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH32 0xAFC445E200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP3 PUSH1 0x4 MSTORE PUSH1 0xC0 PUSH1 0x64 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE DUP1 PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x8B2 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x8B2 JUMPI DUP1 PUSH2 0x884 JUMPI DUP2 PUSH2 0x84A JUMPI RETURNDATASIZE ISZERO PUSH2 0x80B JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7F2 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x807 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x8F6 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x9C2 JUMPI RETURNDATASIZE ISZERO PUSH2 0x983 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x96A JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x97F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0xA05 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0xAE7 JUMPI RETURNDATASIZE ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0xA90 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0xAA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xB15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC10 DUP9 DUP4 DUP10 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC36 DUP8 DUP3 DUP9 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB91 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCBD DUP4 PUSH2 0xC78 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xD5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5C DUP3 PUSH2 0xC78 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 0xAD 0xD6 CODESIZE OR 0xD 0xC5 SHL 0xD1 0xBC 0xDF PUSH27 0x749C70A4B43D82A57F073A9E1A087A48E2F0AD0164736F6C634300 ADDMOD 0xE STOP CALLER ","sourceMap":"1058:9135:15:-:0;;;2731:102;;;;;;;;;-1:-1:-1;2816:10:15;2802:24;;1058:9135;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_performERC1155BatchTransfers_7994":{"entryPoint":1452,"id":7994,"parameterSlots":2,"returnSlots":0},"@_performERC1155Transfer_7984":{"entryPoint":2513,"id":7984,"parameterSlots":5,"returnSlots":0},"@_performERC20Transfer_7943":{"entryPoint":1877,"id":7943,"parameterSlots":4,"returnSlots":0},"@_performERC721Transfer_7968":{"entryPoint":2242,"id":7968,"parameterSlots":4,"returnSlots":0},"@_transfer_2852":{"entryPoint":1038,"id":2852,"parameterSlots":1,"returnSlots":0},"@executeBatch1155_2681":{"entryPoint":535,"id":2681,"parameterSlots":2,"returnSlots":1},"@executeWithBatch1155_2733":{"entryPoint":373,"id":2733,"parameterSlots":4,"returnSlots":1},"@execute_2657":{"entryPoint":212,"id":2657,"parameterSlots":2,"returnSlots":1},"@updateChannel_2775":{"entryPoint":652,"id":2775,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":3192,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata":{"entryPoint":2961,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata":{"entryPoint":2819,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3427,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3233,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":3138,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":2895,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":3030,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_enum$_ConduitItemType_$3642":{"entryPoint":3387,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed":{"entryPoint":null,"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_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x21":{"entryPoint":3340,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3293,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4909:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"122:286:54","statements":[{"body":{"nodeType":"YulBlock","src":"171:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:54"},"nodeType":"YulFunctionCall","src":"173:12:54"},"nodeType":"YulExpressionStatement","src":"173:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"150:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"158:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"146:3:54"},"nodeType":"YulFunctionCall","src":"146:17:54"},{"name":"end","nodeType":"YulIdentifier","src":"165:3:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"142:3:54"},"nodeType":"YulFunctionCall","src":"142:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"135:6:54"},"nodeType":"YulFunctionCall","src":"135:35:54"},"nodeType":"YulIf","src":"132:55:54"},{"nodeType":"YulAssignment","src":"196:30:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"219:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"206:12:54"},"nodeType":"YulFunctionCall","src":"206:20:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"196:6:54"}]},{"body":{"nodeType":"YulBlock","src":"269:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"278:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"281:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"271:6:54"},"nodeType":"YulFunctionCall","src":"271:12:54"},"nodeType":"YulExpressionStatement","src":"271:12:54"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"241:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"249:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"238:2:54"},"nodeType":"YulFunctionCall","src":"238:30:54"},"nodeType":"YulIf","src":"235:50:54"},{"nodeType":"YulAssignment","src":"294:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"310:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"318:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"306:3:54"},"nodeType":"YulFunctionCall","src":"306:17:54"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"294:8:54"}]},{"body":{"nodeType":"YulBlock","src":"386:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"395:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"398:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"388:6:54"},"nodeType":"YulFunctionCall","src":"388:12:54"},"nodeType":"YulExpressionStatement","src":"388:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"346:6:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"358:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"366:4:54","type":"","value":"0xc0"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"354:3:54"},"nodeType":"YulFunctionCall","src":"354:17:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"342:3:54"},"nodeType":"YulFunctionCall","src":"342:30:54"},{"kind":"number","nodeType":"YulLiteral","src":"374:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"338:3:54"},"nodeType":"YulFunctionCall","src":"338:41:54"},{"name":"end","nodeType":"YulIdentifier","src":"381:3:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"335:2:54"},"nodeType":"YulFunctionCall","src":"335:50:54"},"nodeType":"YulIf","src":"332:70:54"}]},"name":"abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"85:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"93:3:54","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"101:8:54","type":""},{"name":"length","nodeType":"YulTypedName","src":"111:6:54","type":""}],"src":"14:394:54"},{"body":{"nodeType":"YulBlock","src":"553:356:54","statements":[{"body":{"nodeType":"YulBlock","src":"599:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"608:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"611:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"601:6:54"},"nodeType":"YulFunctionCall","src":"601:12:54"},"nodeType":"YulExpressionStatement","src":"601:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"574:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"583:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"570:3:54"},"nodeType":"YulFunctionCall","src":"570:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"595:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"566:3:54"},"nodeType":"YulFunctionCall","src":"566:32:54"},"nodeType":"YulIf","src":"563:52:54"},{"nodeType":"YulVariableDeclaration","src":"624:37:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"651:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"638:12:54"},"nodeType":"YulFunctionCall","src":"638:23:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"628:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"704:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"713:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"716:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"706:6:54"},"nodeType":"YulFunctionCall","src":"706:12:54"},"nodeType":"YulExpressionStatement","src":"706:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"676:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"684:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"673:2:54"},"nodeType":"YulFunctionCall","src":"673:30:54"},"nodeType":"YulIf","src":"670:50:54"},{"nodeType":"YulVariableDeclaration","src":"729:120:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"821:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"832:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"817:3:54"},"nodeType":"YulFunctionCall","src":"817:22:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"841:7:54"}],"functionName":{"name":"abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata","nodeType":"YulIdentifier","src":"755:61:54"},"nodeType":"YulFunctionCall","src":"755:94:54"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"733:8:54","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"743:8:54","type":""}]},{"nodeType":"YulAssignment","src":"858:18:54","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"868:8:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"858:6:54"}]},{"nodeType":"YulAssignment","src":"885:18:54","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"895:8:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"885:6:54"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"511:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"522:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"534:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"542:6:54","type":""}],"src":"413:496:54"},{"body":{"nodeType":"YulBlock","src":"1013:149:54","statements":[{"nodeType":"YulAssignment","src":"1023:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1035:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1046:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1031:3:54"},"nodeType":"YulFunctionCall","src":"1031:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1023:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1065:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1080:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1088:66:54","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1076:3:54"},"nodeType":"YulFunctionCall","src":"1076:79:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1058:6:54"},"nodeType":"YulFunctionCall","src":"1058:98:54"},"nodeType":"YulExpressionStatement","src":"1058:98:54"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"982:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"993:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1004:4:54","type":""}],"src":"914:248:54"},{"body":{"nodeType":"YulBlock","src":"1284:283:54","statements":[{"body":{"nodeType":"YulBlock","src":"1333:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1342:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1345:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1335:6:54"},"nodeType":"YulFunctionCall","src":"1335:12:54"},"nodeType":"YulExpressionStatement","src":"1335:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1312:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1320:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1308:3:54"},"nodeType":"YulFunctionCall","src":"1308:17:54"},{"name":"end","nodeType":"YulIdentifier","src":"1327:3:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1304:3:54"},"nodeType":"YulFunctionCall","src":"1304:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1297:6:54"},"nodeType":"YulFunctionCall","src":"1297:35:54"},"nodeType":"YulIf","src":"1294:55:54"},{"nodeType":"YulAssignment","src":"1358:30:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1381:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1368:12:54"},"nodeType":"YulFunctionCall","src":"1368:20:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1358:6:54"}]},{"body":{"nodeType":"YulBlock","src":"1431:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1440:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1443:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1433:6:54"},"nodeType":"YulFunctionCall","src":"1433:12:54"},"nodeType":"YulExpressionStatement","src":"1433:12:54"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1403:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1411:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1400:2:54"},"nodeType":"YulFunctionCall","src":"1400:30:54"},"nodeType":"YulIf","src":"1397:50:54"},{"nodeType":"YulAssignment","src":"1456:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1472:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1480:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1468:3:54"},"nodeType":"YulFunctionCall","src":"1468:17:54"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"1456:8:54"}]},{"body":{"nodeType":"YulBlock","src":"1545:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1554:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1557:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1547:6:54"},"nodeType":"YulFunctionCall","src":"1547:12:54"},"nodeType":"YulExpressionStatement","src":"1547:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1508:6:54"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1520:1:54","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"1523:6:54"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1516:3:54"},"nodeType":"YulFunctionCall","src":"1516:14:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1504:3:54"},"nodeType":"YulFunctionCall","src":"1504:27:54"},{"kind":"number","nodeType":"YulLiteral","src":"1533:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1500:3:54"},"nodeType":"YulFunctionCall","src":"1500:38:54"},{"name":"end","nodeType":"YulIdentifier","src":"1540:3:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1497:2:54"},"nodeType":"YulFunctionCall","src":"1497:47:54"},"nodeType":"YulIf","src":"1494:67:54"}]},"name":"abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1247:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"1255:3:54","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"1263:8:54","type":""},{"name":"length","nodeType":"YulTypedName","src":"1273:6:54","type":""}],"src":"1167:400:54"},{"body":{"nodeType":"YulBlock","src":"1808:673:54","statements":[{"body":{"nodeType":"YulBlock","src":"1854:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1863:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1866:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1856:6:54"},"nodeType":"YulFunctionCall","src":"1856:12:54"},"nodeType":"YulExpressionStatement","src":"1856:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1829:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1838:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1825:3:54"},"nodeType":"YulFunctionCall","src":"1825:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1850:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1821:3:54"},"nodeType":"YulFunctionCall","src":"1821:32:54"},"nodeType":"YulIf","src":"1818:52:54"},{"nodeType":"YulVariableDeclaration","src":"1879:37:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1906:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1893:12:54"},"nodeType":"YulFunctionCall","src":"1893:23:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1883:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1925:28:54","value":{"kind":"number","nodeType":"YulLiteral","src":"1935:18:54","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1929:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1980:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1989:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1992:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1982:6:54"},"nodeType":"YulFunctionCall","src":"1982:12:54"},"nodeType":"YulExpressionStatement","src":"1982:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1968:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"1976:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1965:2:54"},"nodeType":"YulFunctionCall","src":"1965:14:54"},"nodeType":"YulIf","src":"1962:34:54"},{"nodeType":"YulVariableDeclaration","src":"2005:120:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2097:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"2108:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2093:3:54"},"nodeType":"YulFunctionCall","src":"2093:22:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2117:7:54"}],"functionName":{"name":"abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata","nodeType":"YulIdentifier","src":"2031:61:54"},"nodeType":"YulFunctionCall","src":"2031:94:54"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"2009:8:54","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"2019:8:54","type":""}]},{"nodeType":"YulAssignment","src":"2134:18:54","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"2144:8:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2134:6:54"}]},{"nodeType":"YulAssignment","src":"2161:18:54","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"2171:8:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2161:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"2188:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2221:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2232:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2217:3:54"},"nodeType":"YulFunctionCall","src":"2217:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2204:12:54"},"nodeType":"YulFunctionCall","src":"2204:32:54"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"2192:8:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2265:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2274:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2277:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2267:6:54"},"nodeType":"YulFunctionCall","src":"2267:12:54"},"nodeType":"YulExpressionStatement","src":"2267:12:54"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"2251:8:54"},{"name":"_1","nodeType":"YulIdentifier","src":"2261:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2248:2:54"},"nodeType":"YulFunctionCall","src":"2248:16:54"},"nodeType":"YulIf","src":"2245:36:54"},{"nodeType":"YulVariableDeclaration","src":"2290:131:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2391:9:54"},{"name":"offset_1","nodeType":"YulIdentifier","src":"2402:8:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2387:3:54"},"nodeType":"YulFunctionCall","src":"2387:24:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2413:7:54"}],"functionName":{"name":"abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata","nodeType":"YulIdentifier","src":"2316:70:54"},"nodeType":"YulFunctionCall","src":"2316:105:54"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"2294:8:54","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"2304:8:54","type":""}]},{"nodeType":"YulAssignment","src":"2430:18:54","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"2440:8:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2430:6:54"}]},{"nodeType":"YulAssignment","src":"2457:18:54","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"2467:8:54"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2457:6:54"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1750:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1761:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1773:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1781:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1789:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1797:6:54","type":""}],"src":"1572:909:54"},{"body":{"nodeType":"YulBlock","src":"2635:365:54","statements":[{"body":{"nodeType":"YulBlock","src":"2681:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2690:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2693:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2683:6:54"},"nodeType":"YulFunctionCall","src":"2683:12:54"},"nodeType":"YulExpressionStatement","src":"2683:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2656:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2665:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2652:3:54"},"nodeType":"YulFunctionCall","src":"2652:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2677:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2648:3:54"},"nodeType":"YulFunctionCall","src":"2648:32:54"},"nodeType":"YulIf","src":"2645:52:54"},{"nodeType":"YulVariableDeclaration","src":"2706:37:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2733:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2720:12:54"},"nodeType":"YulFunctionCall","src":"2720:23:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2710:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2786:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2795:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2798:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2788:6:54"},"nodeType":"YulFunctionCall","src":"2788:12:54"},"nodeType":"YulExpressionStatement","src":"2788:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2758:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2766:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2755:2:54"},"nodeType":"YulFunctionCall","src":"2755:30:54"},"nodeType":"YulIf","src":"2752:50:54"},{"nodeType":"YulVariableDeclaration","src":"2811:129:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2912:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"2923:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2908:3:54"},"nodeType":"YulFunctionCall","src":"2908:22:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2932:7:54"}],"functionName":{"name":"abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata","nodeType":"YulIdentifier","src":"2837:70:54"},"nodeType":"YulFunctionCall","src":"2837:103:54"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"2815:8:54","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"2825:8:54","type":""}]},{"nodeType":"YulAssignment","src":"2949:18:54","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"2959:8:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2949:6:54"}]},{"nodeType":"YulAssignment","src":"2976:18:54","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"2986:8:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2976:6:54"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2593:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2604:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2616:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2624:6:54","type":""}],"src":"2486:514:54"},{"body":{"nodeType":"YulBlock","src":"3054:147:54","statements":[{"nodeType":"YulAssignment","src":"3064:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3086:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3073:12:54"},"nodeType":"YulFunctionCall","src":"3073:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3064:5:54"}]},{"body":{"nodeType":"YulBlock","src":"3179:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3188:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3191:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3181:6:54"},"nodeType":"YulFunctionCall","src":"3181:12:54"},"nodeType":"YulExpressionStatement","src":"3181:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3115:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3126:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"3133:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3122:3:54"},"nodeType":"YulFunctionCall","src":"3122:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3112:2:54"},"nodeType":"YulFunctionCall","src":"3112:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3105:6:54"},"nodeType":"YulFunctionCall","src":"3105:73:54"},"nodeType":"YulIf","src":"3102:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3033:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3044:5:54","type":""}],"src":"3005:196:54"},{"body":{"nodeType":"YulBlock","src":"3290:263:54","statements":[{"body":{"nodeType":"YulBlock","src":"3336:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3345:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3348:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3338:6:54"},"nodeType":"YulFunctionCall","src":"3338:12:54"},"nodeType":"YulExpressionStatement","src":"3338:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3311:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3320:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3307:3:54"},"nodeType":"YulFunctionCall","src":"3307:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3332:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3303:3:54"},"nodeType":"YulFunctionCall","src":"3303:32:54"},"nodeType":"YulIf","src":"3300:52:54"},{"nodeType":"YulAssignment","src":"3361:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3390:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3371:18:54"},"nodeType":"YulFunctionCall","src":"3371:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3361:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"3409:45:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3439:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3450:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3435:3:54"},"nodeType":"YulFunctionCall","src":"3435:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3422:12:54"},"nodeType":"YulFunctionCall","src":"3422:32:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3413:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3507:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3516:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3519:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3509:6:54"},"nodeType":"YulFunctionCall","src":"3509:12:54"},"nodeType":"YulExpressionStatement","src":"3509:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3476:5:54"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3497:5:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3490:6:54"},"nodeType":"YulFunctionCall","src":"3490:13:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3483:6:54"},"nodeType":"YulFunctionCall","src":"3483:21:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3473:2:54"},"nodeType":"YulFunctionCall","src":"3473:32:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3466:6:54"},"nodeType":"YulFunctionCall","src":"3466:40:54"},"nodeType":"YulIf","src":"3463:60:54"},{"nodeType":"YulAssignment","src":"3532:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"3542:5:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3532:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3248:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3259:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3271:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3279:6:54","type":""}],"src":"3206:347:54"},{"body":{"nodeType":"YulBlock","src":"3590:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3607:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3610:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3600:6:54"},"nodeType":"YulFunctionCall","src":"3600:88:54"},"nodeType":"YulExpressionStatement","src":"3600:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3704:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3707:4:54","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3697:6:54"},"nodeType":"YulFunctionCall","src":"3697:15:54"},"nodeType":"YulExpressionStatement","src":"3697:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3728:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3731:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3721:6:54"},"nodeType":"YulFunctionCall","src":"3721:15:54"},"nodeType":"YulExpressionStatement","src":"3721:15:54"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"3558:184:54"},{"body":{"nodeType":"YulBlock","src":"3870:184:54","statements":[{"nodeType":"YulAssignment","src":"3880:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3892:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3903:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3888:3:54"},"nodeType":"YulFunctionCall","src":"3888:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3880:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3922:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3937:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"3945:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3933:3:54"},"nodeType":"YulFunctionCall","src":"3933:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3915:6:54"},"nodeType":"YulFunctionCall","src":"3915:74:54"},"nodeType":"YulExpressionStatement","src":"3915:74:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4009:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4020:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4005:3:54"},"nodeType":"YulFunctionCall","src":"4005:18:54"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"4039:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4032:6:54"},"nodeType":"YulFunctionCall","src":"4032:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4025:6:54"},"nodeType":"YulFunctionCall","src":"4025:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3998:6:54"},"nodeType":"YulFunctionCall","src":"3998:50:54"},"nodeType":"YulExpressionStatement","src":"3998:50:54"}]},"name":"abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3831:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3842:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3850:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3861:4:54","type":""}],"src":"3747:307:54"},{"body":{"nodeType":"YulBlock","src":"4154:92:54","statements":[{"nodeType":"YulAssignment","src":"4164:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4176:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4187:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4172:3:54"},"nodeType":"YulFunctionCall","src":"4172:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4164:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4206:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4231:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4224:6:54"},"nodeType":"YulFunctionCall","src":"4224:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4217:6:54"},"nodeType":"YulFunctionCall","src":"4217:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4199:6:54"},"nodeType":"YulFunctionCall","src":"4199:41:54"},"nodeType":"YulExpressionStatement","src":"4199:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4123:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4134:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4145:4:54","type":""}],"src":"4059:187:54"},{"body":{"nodeType":"YulBlock","src":"4283:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4300:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4303:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4293:6:54"},"nodeType":"YulFunctionCall","src":"4293:88:54"},"nodeType":"YulExpressionStatement","src":"4293:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4397:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4400:4:54","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4390:6:54"},"nodeType":"YulFunctionCall","src":"4390:15:54"},"nodeType":"YulExpressionStatement","src":"4390:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4421:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4424:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4414:6:54"},"nodeType":"YulFunctionCall","src":"4414:15:54"},"nodeType":"YulExpressionStatement","src":"4414:15:54"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"4251:184:54"},{"body":{"nodeType":"YulBlock","src":"4530:186:54","statements":[{"body":{"nodeType":"YulBlock","src":"4576:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4585:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4588:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4578:6:54"},"nodeType":"YulFunctionCall","src":"4578:12:54"},"nodeType":"YulExpressionStatement","src":"4578:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4551:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4560:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4547:3:54"},"nodeType":"YulFunctionCall","src":"4547:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4572:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4543:3:54"},"nodeType":"YulFunctionCall","src":"4543:32:54"},"nodeType":"YulIf","src":"4540:52:54"},{"nodeType":"YulVariableDeclaration","src":"4601:36:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4627:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4614:12:54"},"nodeType":"YulFunctionCall","src":"4614:23:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4605:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4670:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4679:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4682:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4672:6:54"},"nodeType":"YulFunctionCall","src":"4672:12:54"},"nodeType":"YulExpressionStatement","src":"4672:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4659:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"4666:1:54","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4656:2:54"},"nodeType":"YulFunctionCall","src":"4656:12:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4649:6:54"},"nodeType":"YulFunctionCall","src":"4649:20:54"},"nodeType":"YulIf","src":"4646:40:54"},{"nodeType":"YulAssignment","src":"4695:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"4705:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4695:6:54"}]}]},"name":"abi_decode_tuple_t_enum$_ConduitItemType_$3642","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4496:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4507:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4519:6:54","type":""}],"src":"4440:276:54"},{"body":{"nodeType":"YulBlock","src":"4791:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"4837:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4846:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4849:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4839:6:54"},"nodeType":"YulFunctionCall","src":"4839:12:54"},"nodeType":"YulExpressionStatement","src":"4839:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4812:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4821:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4808:3:54"},"nodeType":"YulFunctionCall","src":"4808:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4833:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4804:3:54"},"nodeType":"YulFunctionCall","src":"4804:32:54"},"nodeType":"YulIf","src":"4801:52:54"},{"nodeType":"YulAssignment","src":"4862:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4891:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4872:18:54"},"nodeType":"YulFunctionCall","src":"4872:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4862:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4757:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4768:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4780:6:54","type":""}],"src":"4721:186:54"}]},"contents":"{\n    { }\n    function abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, mul(length, 0xc0)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\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        let value0_1, value1_1 := abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$3660_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_ConduitBatch1155Transfer_$3673_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\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        let value0_1, value1_1 := abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\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_0x21()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_enum$_ConduitItemType_$3642(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(lt(value, 4)) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2593":[{"length":32,"start":676}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100995780638df25d92146100ac578063c4e8fcb5146100bf575b600080fd5b61006461005f366004610b4f565b6100d4565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b6100646100a7366004610bd6565b610175565b6100646100ba366004610c42565b610217565b6100d26100cd366004610ca1565b61028c565b005b6000336000526000602052604060002054610117577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8160005b8181101561014b5761014385858381811061013857610138610cdd565b905060c0020161040e565b60010161011b565b507f4ce34aa200000000000000000000000000000000000000000000000000000000949350505050565b60003360005260006020526040600020546101b8577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8360005b818110156101e1576101d987878381811061013857610138610cdd565b6001016101bc565b506101ec84846105ac565b507f899e104c0000000000000000000000000000000000000000000000000000000095945050505050565b600033600052600060205260406000205461025a577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b61026483836105ac565b507f8df25d920000000000000000000000000000000000000000000000000000000092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102fb576040517f6d5769be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481151560ff909116151503610386576040517f924e341e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152811515602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a25050565b600161041d6020830183610d3b565b600381111561042e5761042e610d0c565b03610473576104706104466040830160208401610d63565b6104566060840160408501610d63565b6104666080850160608601610d63565b8460a00135610755565b50565b60026104826020830183610d3b565b600381111561049357610493610d0c565b03610513578060a001356001146104d6576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104706104e96040830160208401610d63565b6104f96060840160408501610d63565b6105096080850160608601610d63565b84608001356108c2565b60036105226020830183610d3b565b600381111561053357610533610d0c565b0361057a5761047061054b6040830160208401610d63565b61055b6060840160408501610d63565b61056b6080850160608601610d63565b84608001358560a001356109d1565b6040517f7932f1fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082807f2eb2c2d60000000000000000000000000000000000000000000000000000000060205260005b8381101561074857823582018035803b610618577f5f15d672000000000000000000000000000000000000000000000000000000006000528060045260246000fd5b60a08201356020810260c0018060808501351460a06060860135141681850135831416159050801561066e577feba2084c0000000000000000000000000000000000000000000000000000000060005260046000fd5b506020860195506080602084016024376040810260400190508060a00160a45260008160c401528060c4018160a0850160c4376000808260206000875af1935083610739573d156106fe576020601f3d010491506020810482600302818411156106e657818403600302610200838002868002030401015b5a6020820110156106fb573d6000803e3d6000fd5b50505b7fafc445e2000000000000000000000000000000000000000000000000000000006000528260045260c0606452608451602001608452806000fd5b505050506001810190506105d6565b5050505060806040525050565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d151581166108b25780873b1515166108b25780610884578161084a573d1561080b576020601f3d01046020840481600302818311156107f257818303600302610200838002858002030401015b5a602082011015610807573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b833b6108f6577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af1806109c2573d15610983576020601f3d010460208304816003028183111561096a57818303600302610200838002858002030401015b5a60208201101561097f573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b610a05577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af180610ae7573d15610aa9576020601f3d0104602086048160030281831115610a9057818303600302610200838002858002030401015b5a602082011015610aa5573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f840112610b1557600080fd5b50813567ffffffffffffffff811115610b2d57600080fd5b60208301915083602060c083028501011115610b4857600080fd5b9250929050565b60008060208385031215610b6257600080fd5b823567ffffffffffffffff811115610b7957600080fd5b610b8585828601610b03565b90969095509350505050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b6020830191508360208260051b8501011115610b4857600080fd5b60008060008060408587031215610bec57600080fd5b843567ffffffffffffffff80821115610c0457600080fd5b610c1088838901610b03565b90965094506020870135915080821115610c2957600080fd5b50610c3687828801610b91565b95989497509550505050565b60008060208385031215610c5557600080fd5b823567ffffffffffffffff811115610c6c57600080fd5b610b8585828601610b91565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c9c57600080fd5b919050565b60008060408385031215610cb457600080fd5b610cbd83610c78565b915060208301358015158114610cd257600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215610d4d57600080fd5b813560048110610d5c57600080fd5b9392505050565b600060208284031215610d7557600080fd5b610d5c82610c7856fea26469706673582212209cadd638170dc51bd1bcdf7a749c70a4b43d82a57f073a9e1a087a48e2f0ad0164736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0xB4F JUMP JUMPDEST PUSH2 0xD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xBA CALLDATASIZE PUSH1 0x4 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH2 0xD2 PUSH2 0xCD CALLDATASIZE PUSH1 0x4 PUSH2 0xCA1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x117 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14B JUMPI PUSH2 0x143 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11B JUMP JUMPDEST POP PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1B8 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH2 0x1D9 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BC JUMP JUMPDEST POP PUSH2 0x1EC DUP5 DUP5 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x899E104C00000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x25A JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x264 DUP4 DUP4 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x8DF25D9200000000000000000000000000000000000000000000000000000000 SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x2FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x6D5769BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 ISZERO ISZERO PUSH1 0xFF SWAP1 SWAP2 AND ISZERO ISZERO SUB PUSH2 0x386 JUMPI PUSH1 0x40 MLOAD PUSH32 0x924E341E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP2 ISZERO ISZERO PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x41D PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42E JUMPI PUSH2 0x42E PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x473 JUMPI PUSH2 0x470 PUSH2 0x446 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x456 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x466 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x755 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x482 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x493 JUMPI PUSH2 0x493 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x513 JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x4D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x470 PUSH2 0x4E9 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x4F9 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x509 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x8C2 JUMP JUMPDEST PUSH1 0x3 PUSH2 0x522 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x533 JUMPI PUSH2 0x533 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x57A JUMPI PUSH2 0x470 PUSH2 0x54B PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x55B PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x56B PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7932F1FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x748 JUMPI DUP3 CALLDATALOAD DUP3 ADD DUP1 CALLDATALOAD DUP1 EXTCODESIZE PUSH2 0x618 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP2 MUL PUSH1 0xC0 ADD DUP1 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP2 DUP6 ADD CALLDATALOAD DUP4 EQ AND ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x66E JUMPI PUSH32 0xEBA2084C00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x20 DUP7 ADD SWAP6 POP PUSH1 0x80 PUSH1 0x20 DUP5 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD SWAP1 POP DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH1 0xC4 ADD MSTORE DUP1 PUSH1 0xC4 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP8 GAS CALL SWAP4 POP DUP4 PUSH2 0x739 JUMPI RETURNDATASIZE ISZERO PUSH2 0x6FE JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x6E6 JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH32 0xAFC445E200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP3 PUSH1 0x4 MSTORE PUSH1 0xC0 PUSH1 0x64 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE DUP1 PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x8B2 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x8B2 JUMPI DUP1 PUSH2 0x884 JUMPI DUP2 PUSH2 0x84A JUMPI RETURNDATASIZE ISZERO PUSH2 0x80B JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7F2 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x807 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x8F6 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x9C2 JUMPI RETURNDATASIZE ISZERO PUSH2 0x983 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x96A JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x97F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0xA05 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0xAE7 JUMPI RETURNDATASIZE ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0xA90 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0xAA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xB15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC10 DUP9 DUP4 DUP10 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC36 DUP8 DUP3 DUP9 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB91 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCBD DUP4 PUSH2 0xC78 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xD5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5C DUP3 PUSH2 0xC78 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 0xAD 0xD6 CODESIZE OR 0xD 0xC5 SHL 0xD1 0xBC 0xDF PUSH27 0x749C70A4B43D82A57F073A9E1A087A48E2F0AD0164736F6C634300 ADDMOD 0xE STOP CALLER ","sourceMap":"1058:9135:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3582:774;;;;;;:::i;:::-;;:::i;:::-;;;1088:66:54;1076:79;;;1058:98;;1046:2;1031:18;3582:774:15;;;;;;;6520:1132;;;;;;:::i;:::-;;:::i;5117:482::-;;;;;;:::i;:::-;;:::i;7885:603::-;;;;;;:::i;:::-;;:::i;:::-;;3582:774;3712:17;1675:8;1651:22;1644:40;1796:14;1775:19;1768:43;2017:17;1993:22;1983:52;1977:59;1950:615;;2247:29;2222:23;2215:62;2386:8;2359:25;2352:43;2524:26;2499:23;2492:59;1950:615;3852:9;3819:30:::1;3918:309;3942:22;3938:1;:26;3918:309;;;4057:23;4067:9;;4077:1;4067:12;;;;;;;:::i;:::-;;;;;;4057:9;:23::i;:::-;4199:3;;3918:309;;;-1:-1:-1::0;4328:21:15;;3582:774;-1:-1:-1;;;;3582:774:15:o;6520:1132::-;6713:17;1675:8;1651:22;1644:40;1796:14;1775:19;1768:43;2017:17;1993:22;1983:52;1977:59;1950:615;;2247:29;2222:23;2215:62;2386:8;2359:25;2352:43;2524:26;2499:23;2492:59;1950:615;6849:17;6816:30:::1;6932:317;6956:22;6952:1;:26;6932:317;;;7071:31;7081:17;;7099:1;7081:20;;;;;;;:::i;7071:31::-;7221:3;;6932:317;;;;7464:45;7494:14;;7464:29;:45::i;:::-;-1:-1:-1::0;7611:34:15;;6520:1132;-1:-1:-1;;;;;6520:1132:15:o;5117:482::-;5252:17;1675:8;1651:22;1644:40;1796:14;1775:19;1768:43;2017:17;1993:22;1983:52;1977:59;1950:615;;2247:29;2222:23;2215:62;2386:8;2359:25;2352:43;2524:26;2499:23;2492:59;1950:615;5415:45:::1;5445:14;;5415:29;:45::i;:::-;-1:-1:-1::0;5562:30:15;;5117:482;-1:-1:-1;;5117:482:15:o;7885:603::-;8040:10;:25;8054:11;8040:25;;8036:82;;8088:19;;;;;;;;;;;;;;8036:82;8211:18;;;:9;:18;;;;;;;;;;;:28;;;:18;;;;:28;;;8207:106;;8262:40;;;;;3945:42:54;3933:55;;8262:40:15;;;3915:74:54;4032:14;;4025:22;4005:18;;;3998:50;3888:18;;8262:40:15;;;;;;;8207:106;8368:18;;;:9;:18;;;;;;;;;;;;:27;;;;;;;;;;;;;8450:31;;4199:41:54;;;8450:31:15;;4172:18:54;8450:31:15;;;;;;;7885:603;;:::o;8794:1397::-;8960:21;8943:13;;;;:4;:13;:::i;:::-;:38;;;;;;;;:::i;:::-;;8939:1246;;9284:66;9306:10;;;;;;;;:::i;:::-;9318:9;;;;;;;;:::i;:::-;9329:7;;;;;;;;:::i;:::-;9338:4;:11;;;9284:21;:66::i;:::-;8794:1397;:::o;8939:1246::-;9388:22;9371:13;;;;:4;:13;:::i;:::-;:39;;;;;;;;:::i;:::-;;9367:818;;9500:4;:11;;;9515:1;9500:16;9496:91;;9543:29;;;;;;;;;;;;;;9496:91;9639:149;9679:10;;;;;;;;:::i;:::-;9707:9;;;;;;;;:::i;:::-;9734:7;;;;;;;;:::i;:::-;9759:4;:15;;;9639:22;:149::i;9367:818::-;9826:23;9809:13;;;;:4;:13;:::i;:::-;:40;;;;;;;;:::i;:::-;;9805:380;;9904:179;9945:10;;;;;;;;:::i;:::-;9973:9;;;;;;;;:::i;:::-;10000:7;;;;;;;;:::i;:::-;10025:4;:15;;;10058:4;:11;;;9904:23;:179::i;9805:380::-;10157:17;;;;;;;;;;;;;;33212:11483:45;33441:21;33728;34008:18;34278:39;34224:36;34200:131;34425:1;34394:9896;34447:3;34444:1;34441:10;34394:9896;;;34826:18;34813:32;34779:12;34754:109;34960:10;34947:24;35064:5;35052:18;35042:270;;35127:26;35101:24;35094:60;35210:5;35182:26;35175:41;35270:23;35244:24;35237:57;35042:270;35454:42;35442:10;35438:59;35404:111;35746:7;35735:9;35731:23;35659:50;35634:138;37059:21;36913:40;36861:10;36816:175;36766:259;36730:380;36558:42;36412:40;36360:10;36315:175;36265:259;36229:401;36146:990;36071:21;36059:10;36055:38;36042:52;36003:9;35971:149;35886:1272;35858:1318;35835:1341;;37267:15;37264:392;;;37399:41;37337:36;37305:157;37577:39;37515:36;37483:155;37264:392;;37784:7;37764:18;37760:32;37738:54;;38047:41;37988:36;37976:10;37972:53;37923:27;37889:217;38335:8;38324:9;38320:24;38310:8;38306:39;38281:64;;38613:17;38546:41;38517:135;38458:37;38430:240;38946:1;38885:17;38816:43;38787:137;38759:206;39174:17;39111:41;39086:123;39481:17;39416:42;39404:10;39400:59;39340:38;39306:210;39894:1;39871;39794:16;39713:36;39690:1;39663:5;39636;39610:303;39595:318;;39986:7;39976:4300;;40149:16;40146:2996;;;40621:7;40577:13;40559:16;40555:36;40522:132;40499:155;;41315:7;41297:16;41293:30;41451:15;41438:11;41434:33;41588:10;41571:15;41568:31;41565:979;;;41799:32;;;41873:11;41754:168;42390:26;42279:27;;;42054:179;;;42005:343;41960:494;41713:775;41638:880;41565:979;42804:5;42787:14;42781:4;42777:25;42774:36;42771:349;;;42940:16;42937:1;42934;42919:38;43077:16;43074:1;43067:27;42771:349;;;40146:2996;43271:50;43244:1;43212:131;43458:5;43412:44;43405:59;43637:45;43575:36;43543:161;43961:40;43955:47;43918:7;43885:143;43819:40;43787:263;44241:16;44238:1;44231:27;39976:4300;;;;;34482:1;34479;34475:9;34470:14;;34394:9896;;;34398:42;;;;44654:24;44631:21;44624:55;33212:11483;;:::o;1325:9615::-;1751:21;1745:28;1899;1871:26;1864:64;1977:4;1948:27;1941:41;2029:2;2002:25;1995:37;2083:6;2052:29;2045:45;2777:7;2758:1;2715:25;2671:26;2652:1;2629:5;2606;2584:214;3275:10;3222:16;3215:24;3189:2;3171:16;3168:24;3164:1;3160;3154:8;3151:15;3147:46;3123:134;2907:392;3660:16;3653:24;3646:32;3637:7;3633:46;3623:7110;;3981:7;3971:5;3959:18;3952:26;3945:34;3941:48;3931:6582;;4070:7;4060:6132;;4169:10;4159:4759;;4359:16;4356:3322;;;4926:7;4874:13;4856:16;4852:36;4811:156;5332:7;5320:10;5316:24;5484:15;5471:11;5467:33;5637:10;5620:15;5617:31;5614:1293;;;5888:186;;;6124:11;5835:346;6721:26;6594:27;;;6337:203;;;6280:391;6227:566;5786:1049;5695:1178;5614:1293;7199:5;7182:14;7176:4;7172:25;7169:36;7166:482;;;7397:16;7394:1;7391;7376:38;7597:16;7594:1;7587:27;7166:482;;;;4356:3322;7901:43;7826:41;7786:188;8120:5;8043:43;8003:152;8300:4;8224:42;8184:150;8412:2;8370:40;8363:52;8493:1;8451:40;8444:51;8642:6;8564:44;8524:154;8822:40;8747:41;8707:185;4159:4759;9207:49;9130:47;9094:188;9422:5;9343:49;9307:146;9592:4;9514:48;9478:144;9759:2;9683:46;9647:140;9928:6;9848:50;9812:148;10098:46;10021:47;9985:185;4060:6132;10328:26;10302:24;10295:60;10411:5;10383:26;10376:41;10471:23;10445:24;10438:57;3931:6582;-1:-1:-1;;10811:21:45;10804:41;-1:-1:-1;;10922:1:45;10912:8;10905:19;-1:-1:-1;;1325:9615:45:o;21079:4914::-;21398:5;21386:18;21376:254;;21457:26;21431:24;21424:60;21536:5;21508:26;21501:41;21592:23;21566:24;21559:57;21376:254;21828:21;21822:28;21974:29;21945:27;21938:66;22054:4;22024:28;22017:42;22107:2;22079:26;22072:38;22158:10;22130:26;22123:46;22448:1;22429;22385:26;22340:27;22321:1;22298:5;22275;22253:210;22528:7;22518:3268;;22679:16;22676:2328;;;23121:7;23081:13;23063:16;23059:36;23030:120;23432:7;23420:10;23416:24;23560:15;23547:11;23543:33;23689:10;23672:15;23669:31;23666:769;;;23880:32;;;23950:11;23839:156;24297:26;24194:27;;;24115:37;;;24070:189;24029:328;23802:585;23735:678;23666:769;24679:5;24662:14;24656:4;24652:25;24649:36;24646:340;;;24814:16;24811:1;24808;24793:38;24947:16;24944:1;24937:27;24646:340;;;;22676:2328;25179:43;25116:41;25088:152;25309:5;25264:43;25257:58;25383:4;25339:42;25332:56;25454:2;25412:40;25405:52;25523:10;25481:40;25474:60;25604:1;25558:44;25551:55;25714:40;25651:41;25623:149;22518:3268;-1:-1:-1;25864:21:45;25857:41;-1:-1:-1;;25975:1:45;25965:8;25958:19;-1:-1:-1;;21079:4914:45:o;26641:5620::-;26986:5;26974:18;26964:254;;27045:26;27019:24;27012:60;27124:5;27096:26;27089:41;27180:23;27154:24;27147:57;26964:254;27410:21;27404:28;27467:8;27461:15;27511:8;27505:15;27555:8;27549:15;27730:34;27680:32;27656:122;27833:4;27798:33;27791:47;27891:2;27858:31;27851:43;27947:10;27914:31;27907:51;28015:6;27978:35;27971:51;28117:43;28059:40;28035:139;28236:1;28194:40;28187:51;28527:1;28508;28459:31;28409:32;28390:1;28367:5;28344;28322:220;28607:7;28597:3273;;28758:16;28755:2328;;;29200:7;29160:13;29142:16;29138:36;29109:120;29511:7;29499:10;29495:24;29639:15;29626:11;29622:33;29768:10;29751:15;29748:31;29745:769;;;29959:32;;;30029:11;29918:156;30376:26;30273:27;;;30194:37;;;30149:189;30108:328;29881:585;29814:678;29745:769;30758:5;30741:14;30735:4;30731:25;30728:36;30725:340;;;30893:16;30890:1;30887;30872:38;31026:16;31023:1;31016:27;30725:340;;;;28755:2328;31258:43;31195:41;31167:152;31388:5;31343:43;31336:58;31462:4;31418:42;31411:56;31533:2;31491:40;31484:52;31602:10;31560:40;31553:60;31683:6;31637:44;31630:60;31798:40;31735:41;31707:149;28597:3273;-1:-1:-1;31891:8:45;31884:26;;;;31952:8;31945:26;32013:8;32006:26;32132:21;32125:41;-1:-1:-1;;32243:1:45;-1:-1:-1;32226:19:45;-1:-1:-1;;;26641:5620:45:o;14:394:54:-;101:8;111:6;165:3;158:4;150:6;146:17;142:27;132:55;;183:1;180;173:12;132:55;-1:-1:-1;206:20:54;;249:18;238:30;;235:50;;;281:1;278;271:12;235:50;318:4;310:6;306:17;294:29;;381:3;374:4;366;358:6;354:17;346:6;342:30;338:41;335:50;332:70;;;398:1;395;388:12;332:70;14:394;;;;;:::o;413:496::-;534:6;542;595:2;583:9;574:7;570:23;566:32;563:52;;;611:1;608;601:12;563:52;651:9;638:23;684:18;676:6;673:30;670:50;;;716:1;713;706:12;670:50;755:94;841:7;832:6;821:9;817:22;755:94;:::i;:::-;868:8;;729:120;;-1:-1:-1;413:496:54;-1:-1:-1;;;;413:496:54:o;1167:400::-;1263:8;1273:6;1327:3;1320:4;1312:6;1308:17;1304:27;1294:55;;1345:1;1342;1335:12;1294:55;-1:-1:-1;1368:20:54;;1411:18;1400:30;;1397:50;;;1443:1;1440;1433:12;1397:50;1480:4;1472:6;1468:17;1456:29;;1540:3;1533:4;1523:6;1520:1;1516:14;1508:6;1504:27;1500:38;1497:47;1494:67;;;1557:1;1554;1547:12;1572:909;1773:6;1781;1789;1797;1850:2;1838:9;1829:7;1825:23;1821:32;1818:52;;;1866:1;1863;1856:12;1818:52;1906:9;1893:23;1935:18;1976:2;1968:6;1965:14;1962:34;;;1992:1;1989;1982:12;1962:34;2031:94;2117:7;2108:6;2097:9;2093:22;2031:94;:::i;:::-;2144:8;;-1:-1:-1;2005:120:54;-1:-1:-1;2232:2:54;2217:18;;2204:32;;-1:-1:-1;2248:16:54;;;2245:36;;;2277:1;2274;2267:12;2245:36;;2316:105;2413:7;2402:8;2391:9;2387:24;2316:105;:::i;:::-;1572:909;;;;-1:-1:-1;2440:8:54;-1:-1:-1;;;;1572:909:54:o;2486:514::-;2616:6;2624;2677:2;2665:9;2656:7;2652:23;2648:32;2645:52;;;2693:1;2690;2683:12;2645:52;2733:9;2720:23;2766:18;2758:6;2755:30;2752:50;;;2798:1;2795;2788:12;2752:50;2837:103;2932:7;2923:6;2912:9;2908:22;2837:103;:::i;3005:196::-;3073:20;;3133:42;3122:54;;3112:65;;3102:93;;3191:1;3188;3181:12;3102:93;3005:196;;;:::o;3206:347::-;3271:6;3279;3332:2;3320:9;3311:7;3307:23;3303:32;3300:52;;;3348:1;3345;3338:12;3300:52;3371:29;3390:9;3371:29;:::i;:::-;3361:39;;3450:2;3439:9;3435:18;3422:32;3497:5;3490:13;3483:21;3476:5;3473:32;3463:60;;3519:1;3516;3509:12;3463:60;3542:5;3532:15;;;3206:347;;;;;:::o;3558:184::-;3610:77;3607:1;3600:88;3707:4;3704:1;3697:15;3731:4;3728:1;3721:15;4251:184;4303:77;4300:1;4293:88;4400:4;4397:1;4390:15;4424:4;4421:1;4414:15;4440:276;4519:6;4572:2;4560:9;4551:7;4547:23;4543:32;4540:52;;;4588:1;4585;4578:12;4540:52;4627:9;4614:23;4666:1;4659:5;4656:12;4646:40;;4682:1;4679;4672:12;4646:40;4705:5;4440:276;-1:-1:-1;;;4440:276:54:o;4721:186::-;4780:6;4833:2;4821:9;4812:7;4808:23;4804:32;4801:52;;;4849:1;4846;4839:12;4801:52;4872:29;4891:9;4872:29;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"701600","executionCost":"infinite","totalCost":"infinite"},"external":{"execute((uint8,address,address,address,uint256,uint256)[])":"infinite","executeBatch1155((address,address,address,uint256[],uint256[])[])":"infinite","executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])":"infinite","updateChannel(address,bool)":"infinite"},"internal":{"_transfer(struct ConduitTransfer calldata)":"infinite"}},"methodIdentifiers":{"execute((uint8,address,address,address,uint256,uint256)[])":"4ce34aa2","executeBatch1155((address,address,address,uint256[],uint256[])[])":"8df25d92","executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])":"899e104c","updateChannel(address,bool)":"c4e8fcb5"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"name\":\"ChannelClosed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"ChannelStatusAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidController\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidItemType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"}],\"name\":\"ChannelUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ConduitItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ConduitTransfer[]\",\"name\":\"transfers\",\"type\":\"tuple[]\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ConduitBatch1155Transfer[]\",\"name\":\"batchTransfers\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch1155\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ConduitItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ConduitTransfer[]\",\"name\":\"standardTransfers\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ConduitBatch1155Transfer[]\",\"name\":\"batchTransfers\",\"type\":\"tuple[]\"}],\"name\":\"executeWithBatch1155\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"updateChannel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"ChannelClosed(address)\":[{\"details\":\"Revert with an error when attempting to execute transfers using a      caller that does not have an open channel.\"}],\"ChannelStatusAlreadySet(address,bool)\":[{\"details\":\"Revert with an error when attempting to update a channel to the      current status of that channel.\"}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidController()\":[{\"details\":\"Revert with an error when attempting to update the status of a      channel from a caller that is not the conduit controller.\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidItemType()\":[{\"details\":\"Revert with an error when attempting to execute a transfer for an      item that does not have an ERC20/721/1155 item type.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{\"execute((uint8,address,address,address,uint256,uint256)[])\":{\"params\":{\"transfers\":\"The ERC20/721/1155 transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"executeBatch1155((address,address,address,uint256[],uint256[])[])\":{\"params\":{\"batchTransfers\":\"The 1155 batch item transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the item transfers were                    performed successfully.\"}},\"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])\":{\"params\":{\"batchTransfers\":\"The 1155 batch item transfers to perform.\",\"standardTransfers\":\"The ERC20/721/1155 item transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the item transfers were                    performed successfully.\"}},\"updateChannel(address,bool)\":{\"params\":{\"channel\":\"The channel to open or close.\",\"isOpen\":\"The status of the channel (either open or closed).\"}}},\"title\":\"Conduit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"In the constructor, set the deployer as the controller.\"},\"execute((uint8,address,address,address,uint256,uint256)[])\":{\"notice\":\"Execute a sequence of ERC20/721/1155 transfers. Only a caller         with an open channel can call this function. Note that channels         are expected to implement reentrancy protection if desired, and         that cross-channel reentrancy may be possible if the conduit has         multiple open channels at once. Also note that channels are         expected to implement checks against transferring any zero-amount         items if that constraint is desired.\"},\"executeBatch1155((address,address,address,uint256[],uint256[])[])\":{\"notice\":\"Execute a sequence of batch 1155 item transfers. Only a caller         with an open channel can call this function. Note that channels         are expected to implement reentrancy protection if desired, and         that cross-channel reentrancy may be possible if the conduit has         multiple open channels at once. Also note that channels are         expected to implement checks against transferring any zero-amount         items if that constraint is desired.\"},\"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])\":{\"notice\":\"Execute a sequence of transfers, both single ERC20/721/1155 item         transfers as well as batch 1155 item transfers. Only a caller         with an open channel can call this function. Note that channels         are expected to implement reentrancy protection if desired, and         that cross-channel reentrancy may be possible if the conduit has         multiple open channels at once. Also note that channels are         expected to implement checks against transferring any zero-amount         items if that constraint is desired.\"},\"updateChannel(address,bool)\":{\"notice\":\"Open or close a given channel. Only callable by the controller.\"}},\"notice\":\"This contract serves as an originator for \\\"proxied\\\" transfers. Each         conduit is deployed and controlled by a \\\"conduit controller\\\" that can         add and remove \\\"channels\\\" or contracts that can instruct the conduit         to transfer approved ERC20/721/1155 tokens. *IMPORTANT NOTE: each         conduit has an owner that can arbitrarily add or remove channels, and         a malicious or negligent owner can add a channel that allows for any         approved ERC20/721/1155 tokens to be taken immediately \\u2014 be extremely         cautious with what conduits you give token approvals to!*\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/conduit/Conduit.sol\":\"Conduit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/conduit/Conduit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport { ConduitItemType } from \\\"./lib/ConduitEnums.sol\\\";\\n\\nimport { TokenTransferrer } from \\\"../lib/TokenTransferrer.sol\\\";\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"./lib/ConduitStructs.sol\\\";\\n\\nimport \\\"./lib/ConduitConstants.sol\\\";\\n\\n/**\\n * @title Conduit\\n * @author 0age\\n * @notice This contract serves as an originator for \\\"proxied\\\" transfers. Each\\n *         conduit is deployed and controlled by a \\\"conduit controller\\\" that can\\n *         add and remove \\\"channels\\\" or contracts that can instruct the conduit\\n *         to transfer approved ERC20/721/1155 tokens. *IMPORTANT NOTE: each\\n *         conduit has an owner that can arbitrarily add or remove channels, and\\n *         a malicious or negligent owner can add a channel that allows for any\\n *         approved ERC20/721/1155 tokens to be taken immediately \\u2014 be extremely\\n *         cautious with what conduits you give token approvals to!*\\n */\\ncontract Conduit is ConduitInterface, TokenTransferrer {\\n    // Set deployer as an immutable controller that can update channel statuses.\\n    address private immutable _controller;\\n\\n    // Track the status of each channel.\\n    mapping(address => bool) private _channels;\\n\\n    /**\\n     * @notice Ensure that the caller is currently registered as an open channel\\n     *         on the conduit.\\n     */\\n    modifier onlyOpenChannel() {\\n        // Utilize assembly to access channel storage mapping directly.\\n        assembly {\\n            // Write the caller to scratch space.\\n            mstore(ChannelKey_channel_ptr, caller())\\n\\n            // Write the storage slot for _channels to scratch space.\\n            mstore(ChannelKey_slot_ptr, _channels.slot)\\n\\n            // Derive the position in storage of _channels[msg.sender]\\n            // and check if the stored value is zero.\\n            if iszero(\\n                sload(keccak256(ChannelKey_channel_ptr, ChannelKey_length))\\n            ) {\\n                // The caller is not an open channel; revert with\\n                // ChannelClosed(caller). First, set error signature in memory.\\n                mstore(ChannelClosed_error_ptr, ChannelClosed_error_signature)\\n\\n                // Next, set the caller as the argument.\\n                mstore(ChannelClosed_channel_ptr, caller())\\n\\n                // Finally, revert, returning full custom error with argument.\\n                revert(ChannelClosed_error_ptr, ChannelClosed_error_length)\\n            }\\n        }\\n\\n        // Continue with function execution.\\n        _;\\n    }\\n\\n    /**\\n     * @notice In the constructor, set the deployer as the controller.\\n     */\\n    constructor() {\\n        // Set the deployer as the controller.\\n        _controller = msg.sender;\\n    }\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function. Note that channels\\n     *         are expected to implement reentrancy protection if desired, and\\n     *         that cross-channel reentrancy may be possible if the conduit has\\n     *         multiple open channels at once. Also note that channels are\\n     *         expected to implement checks against transferring any zero-amount\\n     *         items if that constraint is desired.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        override\\n        onlyOpenChannel\\n        returns (bytes4 magicValue)\\n    {\\n        // Retrieve the total number of transfers and place on the stack.\\n        uint256 totalStandardTransfers = transfers.length;\\n\\n        // Iterate over each transfer.\\n        for (uint256 i = 0; i < totalStandardTransfers; ) {\\n            // Retrieve the transfer in question and perform the transfer.\\n            _transfer(transfers[i]);\\n\\n            // Skip overflow check as for loop is indexed starting at zero.\\n            unchecked {\\n                ++i;\\n            }\\n        }\\n\\n        // Return a magic value indicating that the transfers were performed.\\n        magicValue = this.execute.selector;\\n    }\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 item transfers. Only a caller\\n     *         with an open channel can call this function. Note that channels\\n     *         are expected to implement reentrancy protection if desired, and\\n     *         that cross-channel reentrancy may be possible if the conduit has\\n     *         multiple open channels at once. Also note that channels are\\n     *         expected to implement checks against transferring any zero-amount\\n     *         items if that constraint is desired.\\n     *\\n     * @param batchTransfers The 1155 batch item transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the item transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) external override onlyOpenChannel returns (bytes4 magicValue) {\\n        // Perform 1155 batch transfers. Note that memory should be considered\\n        // entirely corrupted from this point forward.\\n        _performERC1155BatchTransfers(batchTransfers);\\n\\n        // Return a magic value indicating that the transfers were performed.\\n        magicValue = this.executeBatch1155.selector;\\n    }\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single ERC20/721/1155 item\\n     *         transfers as well as batch 1155 item transfers. Only a caller\\n     *         with an open channel can call this function. Note that channels\\n     *         are expected to implement reentrancy protection if desired, and\\n     *         that cross-channel reentrancy may be possible if the conduit has\\n     *         multiple open channels at once. Also note that channels are\\n     *         expected to implement checks against transferring any zero-amount\\n     *         items if that constraint is desired.\\n     *\\n     * @param standardTransfers The ERC20/721/1155 item transfers to perform.\\n     * @param batchTransfers    The 1155 batch item transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the item transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) external override onlyOpenChannel returns (bytes4 magicValue) {\\n        // Retrieve the total number of transfers and place on the stack.\\n        uint256 totalStandardTransfers = standardTransfers.length;\\n\\n        // Iterate over each standard transfer.\\n        for (uint256 i = 0; i < totalStandardTransfers; ) {\\n            // Retrieve the transfer in question and perform the transfer.\\n            _transfer(standardTransfers[i]);\\n\\n            // Skip overflow check as for loop is indexed starting at zero.\\n            unchecked {\\n                ++i;\\n            }\\n        }\\n\\n        // Perform 1155 batch transfers. Note that memory should be considered\\n        // entirely corrupted from this point forward aside from the free memory\\n        // pointer having the default value.\\n        _performERC1155BatchTransfers(batchTransfers);\\n\\n        // Return a magic value indicating that the transfers were performed.\\n        magicValue = this.executeWithBatch1155.selector;\\n    }\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external override {\\n        // Ensure that the caller is the controller of this contract.\\n        if (msg.sender != _controller) {\\n            revert InvalidController();\\n        }\\n\\n        // Ensure that the channel does not already have the indicated status.\\n        if (_channels[channel] == isOpen) {\\n            revert ChannelStatusAlreadySet(channel, isOpen);\\n        }\\n\\n        // Update the status of the channel.\\n        _channels[channel] = isOpen;\\n\\n        // Emit a corresponding event.\\n        emit ChannelUpdated(channel, isOpen);\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer a given ERC20/721/1155 item. Note that\\n     *      channels are expected to implement checks against transferring any\\n     *      zero-amount items if that constraint is desired.\\n     *\\n     * @param item The ERC20/721/1155 item to transfer.\\n     */\\n    function _transfer(ConduitTransfer calldata item) internal {\\n        // Determine the transfer method based on the respective item type.\\n        if (item.itemType == ConduitItemType.ERC20) {\\n            // Transfer ERC20 token. Note that item.identifier is ignored and\\n            // therefore ERC20 transfer items are potentially malleable \\u2014 this\\n            // check should be performed by the calling channel if a constraint\\n            // on item malleability is desired.\\n            _performERC20Transfer(item.token, item.from, item.to, item.amount);\\n        } else if (item.itemType == ConduitItemType.ERC721) {\\n            // Ensure that exactly one 721 item is being transferred.\\n            if (item.amount != 1) {\\n                revert InvalidERC721TransferAmount();\\n            }\\n\\n            // Transfer ERC721 token.\\n            _performERC721Transfer(\\n                item.token,\\n                item.from,\\n                item.to,\\n                item.identifier\\n            );\\n        } else if (item.itemType == ConduitItemType.ERC1155) {\\n            // Transfer ERC1155 token.\\n            _performERC1155Transfer(\\n                item.token,\\n                item.from,\\n                item.to,\\n                item.identifier,\\n                item.amount\\n            );\\n        } else {\\n            // Throw with an error.\\n            revert InvalidItemType();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x180267c5f93666446ffc93c9798dc52339e94d101b2e67a3eab229d366c873d6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n// error ChannelClosed(address channel)\\nuint256 constant ChannelClosed_error_signature = (\\n    0x93daadf200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ChannelClosed_error_ptr = 0x00;\\nuint256 constant ChannelClosed_channel_ptr = 0x4;\\nuint256 constant ChannelClosed_error_length = 0x24;\\n\\n// For the mapping:\\n// mapping(address => bool) channels\\n// The position in storage for a particular account is:\\n// keccak256(abi.encode(account, channels.slot))\\nuint256 constant ChannelKey_channel_ptr = 0x00;\\nuint256 constant ChannelKey_slot_ptr = 0x20;\\nuint256 constant ChannelKey_length = 0x40;\\n\",\"keccak256\":\"0x16760358c7ae3cb1604e2ed4bd45ecb083b7b150ee914bc6d6204aefcb8c8d9e\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ConduitItemType {\\n    NATIVE, // unused\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\\n\",\"keccak256\":\"0x1a84850bbff4b820573334c70ee0797462f20fd8c9b86fdebeacc85ecb1963a6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitItemType } from \\\"./ConduitEnums.sol\\\";\\n\\nstruct ConduitTransfer {\\n    ConduitItemType itemType;\\n    address token;\\n    address from;\\n    address to;\\n    uint256 identifier;\\n    uint256 amount;\\n}\\n\\nstruct ConduitBatch1155Transfer {\\n    address token;\\n    address from;\\n    address to;\\n    uint256[] ids;\\n    uint256[] amounts;\\n}\\n\",\"keccak256\":\"0xe3e87c74dd79c59293e49b7236cc7befdc19886bb79af5fe53208b1772fd24f9\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title ConduitInterface\\n * @author 0age\\n * @notice ConduitInterface contains all external function interfaces, events,\\n *         and errors for conduit contracts.\\n */\\ninterface ConduitInterface {\\n    /**\\n     * @dev Revert with an error when attempting to execute transfers using a\\n     *      caller that does not have an open channel.\\n     */\\n    error ChannelClosed(address channel);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update a channel to the\\n     *      current status of that channel.\\n     */\\n    error ChannelStatusAlreadySet(address channel, bool isOpen);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute a transfer for an\\n     *      item that does not have an ERC20/721/1155 item type.\\n     */\\n    error InvalidItemType();\\n\\n    /**\\n     * @dev Revert with an error when attempting to update the status of a\\n     *      channel from a caller that is not the conduit controller.\\n     */\\n    error InvalidController();\\n\\n    /**\\n     * @dev Emit an event whenever a channel is opened or closed.\\n     *\\n     * @param channel The channel that has been updated.\\n     * @param open    A boolean indicating whether the conduit is open or not.\\n     */\\n    event ChannelUpdated(address indexed channel, bool open);\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\\n     *         open channel can call this function.\\n     *\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\\n     *         a caller with an open channel can call this function.\\n     *\\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external;\\n}\\n\",\"keccak256\":\"0x628e23ec7e820e8ac59c0999211bb022bb5c5581a5bc6bd39465d6419d7d85b5\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport \\\"./TokenTransferrerConstants.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { ConduitBatch1155Transfer } from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title TokenTransferrer\\n * @author 0age\\n * @custom:coauthor d1ll0n\\n * @custom:coauthor transmissions11\\n * @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\\n *         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\\n *         by conduits deployed by the ConduitController. Use great caution when\\n *         considering these functions for use in other codebases, as there are\\n *         significant side effects and edge cases that need to be thoroughly\\n *         understood and carefully addressed.\\n */\\ncontract TokenTransferrer is TokenTransferrerErrors {\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set on the\\n     *      contract performing the transfer.\\n     *\\n     * @param token      The ERC20 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC20Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\\n            mstore(ERC20_transferFrom_from_ptr, from)\\n            mstore(ERC20_transferFrom_to_ptr, to)\\n            mstore(ERC20_transferFrom_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transferFrom_sig_ptr,\\n                ERC20_transferFrom_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                from\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            from\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    function _performSelfERC20Transfer(\\n        address token,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transfer_sig_ptr, ERC20_transfer_signature)\\n            mstore(ERC20_transfer_to_ptr, to)\\n            mstore(ERC20_transfer_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transfer_sig_ptr,\\n                ERC20_transfer_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                address()\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            address()\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer an ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer. Note that this function does\\n     *      not check whether the receiver can accept the ERC721 token (i.e. it\\n     *      does not use `safeTransferFrom`).\\n     *\\n     * @param token      The ERC721 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     */\\n    function _performERC721Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC721 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data to memory starting with function selector.\\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\\n            mstore(ERC721_transferFrom_from_ptr, from)\\n            mstore(ERC721_transferFrom_to_ptr, to)\\n            mstore(ERC721_transferFrom_id_ptr, identifier)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC721_transferFrom_sig_ptr,\\n                ERC721_transferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer.\\n     *\\n     * @param token      The ERC1155 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The id to transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC1155Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The following memory slots will be used when populating call data\\n            // for the transfer; read the values and restore them later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n            let slot0x80 := mload(Slot0x80)\\n            let slot0xA0 := mload(Slot0xA0)\\n            let slot0xC0 := mload(Slot0xC0)\\n\\n            // Write call data into memory, beginning with function selector.\\n            mstore(\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_signature\\n            )\\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\\n            mstore(\\n                ERC1155_safeTransferFrom_data_offset_ptr,\\n                ERC1155_safeTransferFrom_data_length_offset\\n            )\\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer. NOTE: this function is not\\n     *      memory-safe; it will overwrite existing memory, restore the free\\n     *      memory pointer to the default value, and overwrite the zero slot.\\n     *      This function should only be called once memory is no longer\\n     *      required and when uninitialized arrays are not utilized, and memory\\n     *      should be considered fully corrupted (aside from the existence of a\\n     *      default-value free memory pointer) after calling this function.\\n     *\\n     * @param batchTransfers The group of 1155 batch transfers to perform.\\n     */\\n    function _performERC1155BatchTransfers(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) internal {\\n        // Utilize assembly to perform optimized batch 1155 transfers.\\n        assembly {\\n            let len := batchTransfers.length\\n            // Pointer to first head in the array, which is offset to the struct\\n            // at each index. This gets incremented after each loop to avoid\\n            // multiplying by 32 to get the offset for each element.\\n            let nextElementHeadPtr := batchTransfers.offset\\n\\n            // Pointer to beginning of the head of the array. This is the\\n            // reference position each offset references. It's held static to\\n            // let each loop calculate the data position for an element.\\n            let arrayHeadPtr := nextElementHeadPtr\\n\\n            // Write the function selector, which will be reused for each call:\\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\n            mstore(\\n                ConduitBatch1155Transfer_from_offset,\\n                ERC1155_safeBatchTransferFrom_signature\\n            )\\n\\n            // Iterate over each batch transfer.\\n            for {\\n                let i := 0\\n            } lt(i, len) {\\n                i := add(i, 1)\\n            } {\\n                // Read the offset to the beginning of the element and add\\n                // it to pointer to the beginning of the array head to get\\n                // the absolute position of the element in calldata.\\n                let elementPtr := add(\\n                    arrayHeadPtr,\\n                    calldataload(nextElementHeadPtr)\\n                )\\n\\n                // Retrieve the token from calldata.\\n                let token := calldataload(elementPtr)\\n\\n                // If the token has no code, revert.\\n                if iszero(extcodesize(token)) {\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Get the total number of supplied ids.\\n                let idsLength := calldataload(\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\\n                )\\n\\n                // Determine the expected offset for the amounts array.\\n                let expectedAmountsOffset := add(\\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\\n                    mul(idsLength, OneWord)\\n                )\\n\\n                // Validate struct encoding.\\n                let invalidEncoding := iszero(\\n                    and(\\n                        // ids.length == amounts.length\\n                        eq(\\n                            idsLength,\\n                            calldataload(add(elementPtr, expectedAmountsOffset))\\n                        ),\\n                        and(\\n                            // ids_offset == 0xa0\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatch1155Transfer_ids_head_offset\\n                                    )\\n                                ),\\n                                ConduitBatch1155Transfer_ids_length_offset\\n                            ),\\n                            // amounts_offset == 0xc0 + ids.length*32\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatchTransfer_amounts_head_offset\\n                                    )\\n                                ),\\n                                expectedAmountsOffset\\n                            )\\n                        )\\n                    )\\n                )\\n\\n                // Revert with an error if the encoding is not valid.\\n                if invalidEncoding {\\n                    mstore(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_selector\\n                    )\\n                    revert(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_length\\n                    )\\n                }\\n\\n                // Update the offset position for the next loop\\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\\n\\n                // Copy the first section of calldata (before dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\\n                    ConduitBatch1155Transfer_usable_head_size\\n                )\\n\\n                // Determine size of calldata required for ids and amounts. Note\\n                // that the size includes both lengths as well as the data.\\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\\n\\n                // Update the offset for the data array in memory.\\n                mstore(\\n                    BatchTransfer1155Params_data_head_ptr,\\n                    add(\\n                        BatchTransfer1155Params_ids_length_offset,\\n                        idsAndAmountsSize\\n                    )\\n                )\\n\\n                // Set the length of the data array in memory to zero.\\n                mstore(\\n                    add(\\n                        BatchTransfer1155Params_data_length_basePtr,\\n                        idsAndAmountsSize\\n                    ),\\n                    0\\n                )\\n\\n                // Determine the total calldata size for the call to transfer.\\n                let transferDataSize := add(\\n                    BatchTransfer1155Params_calldata_baseSize,\\n                    idsAndAmountsSize\\n                )\\n\\n                // Copy second section of calldata (including dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ids_length_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\\n                    idsAndAmountsSize\\n                )\\n\\n                // Perform the call to transfer 1155 tokens.\\n                let success := call(\\n                    gas(),\\n                    token,\\n                    0,\\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\\n                    transferDataSize, // Location of the length of callData.\\n                    0,\\n                    0\\n                )\\n\\n                // If the transfer reverted:\\n                if iszero(success) {\\n                    // If it returned a message, bubble it up as long as\\n                    // sufficient gas remains to do so:\\n                    if returndatasize() {\\n                        // Ensure that sufficient gas is available to copy\\n                        // returndata while expanding memory where necessary.\\n                        // Start by computing word size of returndata and\\n                        // allocated memory. Round up to the nearest full word.\\n                        let returnDataWords := div(\\n                            add(returndatasize(), AlmostOneWord),\\n                            OneWord\\n                        )\\n\\n                        // Note: use transferDataSize in place of msize() to\\n                        // work around a Yul warning that prevents accessing\\n                        // msize directly when the IR pipeline is activated.\\n                        // The free memory pointer is not used here because\\n                        // this function does almost all memory management\\n                        // manually and does not update it, and transferDataSize\\n                        // should be the largest memory value used (unless a\\n                        // previous batch was larger).\\n                        let msizeWords := div(transferDataSize, OneWord)\\n\\n                        // Next, compute the cost of the returndatacopy.\\n                        let cost := mul(CostPerWord, returnDataWords)\\n\\n                        // Then, compute cost of new memory allocation.\\n                        if gt(returnDataWords, msizeWords) {\\n                            cost := add(\\n                                cost,\\n                                add(\\n                                    mul(\\n                                        sub(returnDataWords, msizeWords),\\n                                        CostPerWord\\n                                    ),\\n                                    div(\\n                                        sub(\\n                                            mul(\\n                                                returnDataWords,\\n                                                returnDataWords\\n                                            ),\\n                                            mul(msizeWords, msizeWords)\\n                                        ),\\n                                        MemoryExpansionCoefficient\\n                                    )\\n                                )\\n                            )\\n                        }\\n\\n                        // Finally, add a small constant and compare to gas\\n                        // remaining; bubble up the revert data if enough gas is\\n                        // still available.\\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\\n                            // Copy returndata to memory; overwrite existing.\\n                            returndatacopy(0, 0, returndatasize())\\n\\n                            // Revert with memory region containing returndata.\\n                            revert(0, returndatasize())\\n                        }\\n                    }\\n\\n                    // Set the error signature.\\n                    mstore(\\n                        0,\\n                        ERC1155BatchTransferGenericFailure_error_signature\\n                    )\\n\\n                    // Write the token.\\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\\n\\n                    // Increase the offset to ids by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_ids_head_ptr,\\n                        ERC1155BatchTransferGenericFailure_ids_offset\\n                    )\\n\\n                    // Increase the offset to amounts by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_amounts_head_ptr,\\n                        add(\\n                            OneWord,\\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\\n                        )\\n                    )\\n\\n                    // Return modified region. The total size stays the same as\\n                    // `token` uses the same number of bytes as `data.length`.\\n                    revert(0, transferDataSize)\\n                }\\n            }\\n\\n            // Reset the free memory pointer to the default value; memory must\\n            // be assumed to be dirtied and not reused from this point forward.\\n            // Also note that the zero slot is not reset to zero, meaning empty\\n            // arrays cannot be safely created or utilized until it is restored.\\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9be626e5928b95748e08259c63a6168d3e0b3e490f2f340491b8afd546cbbcd1\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrerConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\nuint256 constant Slot0xC0 = 0xc0;\\n\\n// abi.encodeWithSignature(\\\"transferFrom(address,address,uint256)\\\")\\nuint256 constant ERC20_transferFrom_signature = (\\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"transfer(address,uint256)\\\")\\nuint256 constant ERC20_transfer_signature = (\\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transfer_sig_ptr = 0x0;\\nuint256 constant ERC20_transfer_to_ptr = 0x04;\\nuint256 constant ERC20_transfer_amount_ptr = 0x24;\\nuint256 constant ERC20_transfer_length = 0x44; // 4 + 32 * 2 == 68\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeTransferFrom(address,address,uint256,uint256,bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeTransferFrom_signature = (\\n    0xf242432a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\\n);\\n\\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\\n);\\n\\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\n// abi.encodeWithSignature(\\n//     \\\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\\\"\\n// )\\nuint256 constant TokenTransferGenericFailure_error_signature = (\\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\\n\\n// 4 + 32 * 5 == 164\\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\\n\\n// abi.encodeWithSignature(\\n//     \\\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\\\"\\n// )\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\\n    0x9889192300000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\\n\\n// 4 + 32 * 4 == 132\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200;\\n\\n// Values are offset by 32 bytes in order to write the token to the beginning\\n// in the event of a revert\\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x64;\\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0xc4;\\nuint256 constant BatchTransfer1155Params_calldata_baseSize = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\\n\\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\\n\\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\\n\\n// Note: abbreviated version of above constant to adhere to line length limit.\\nuint256 constant ConduitBatchTransfer_amounts_head_offset = 0x80;\\n\\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\\n    0xafc445e200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\\nuint256 constant ERC1155BatchTransferGenericFailure_ids_offset = 0xc0;\\n\",\"keccak256\":\"0x002bea8dcc1d37a0cdd6d1c25f536a1a13e01e1fb32b7bbb2a3016425e40b672\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2597,"contract":"contracts/conduit/Conduit.sol:Conduit","label":"_channels","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"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"}}},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"In the constructor, set the deployer as the controller."},"execute((uint8,address,address,address,uint256,uint256)[])":{"notice":"Execute a sequence of ERC20/721/1155 transfers. Only a caller         with an open channel can call this function. Note that channels         are expected to implement reentrancy protection if desired, and         that cross-channel reentrancy may be possible if the conduit has         multiple open channels at once. Also note that channels are         expected to implement checks against transferring any zero-amount         items if that constraint is desired."},"executeBatch1155((address,address,address,uint256[],uint256[])[])":{"notice":"Execute a sequence of batch 1155 item transfers. Only a caller         with an open channel can call this function. Note that channels         are expected to implement reentrancy protection if desired, and         that cross-channel reentrancy may be possible if the conduit has         multiple open channels at once. Also note that channels are         expected to implement checks against transferring any zero-amount         items if that constraint is desired."},"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])":{"notice":"Execute a sequence of transfers, both single ERC20/721/1155 item         transfers as well as batch 1155 item transfers. Only a caller         with an open channel can call this function. Note that channels         are expected to implement reentrancy protection if desired, and         that cross-channel reentrancy may be possible if the conduit has         multiple open channels at once. Also note that channels are         expected to implement checks against transferring any zero-amount         items if that constraint is desired."},"updateChannel(address,bool)":{"notice":"Open or close a given channel. Only callable by the controller."}},"notice":"This contract serves as an originator for \"proxied\" transfers. Each         conduit is deployed and controlled by a \"conduit controller\" that can         add and remove \"channels\" or contracts that can instruct the conduit         to transfer approved ERC20/721/1155 tokens. *IMPORTANT NOTE: each         conduit has an owner that can arbitrarily add or remove channels, and         a malicious or negligent owner can add a channel that allows for any         approved ERC20/721/1155 tokens to be taken immediately — be extremely         cautious with what conduits you give token approvals to!*","version":1}}},"contracts/conduit/ConduitController.sol":{"ConduitController":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"CallerIsNotNewPotentialOwner","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"CallerIsNotOwner","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"ChannelOutOfRange","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"ConduitAlreadyExists","type":"error"},{"inputs":[],"name":"InvalidCreator","type":"error"},{"inputs":[],"name":"InvalidInitialOwner","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"address","name":"newPotentialOwner","type":"address"}],"name":"NewPotentialOwnerAlreadySet","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"NewPotentialOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoConduit","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"NoPotentialOwnerCurrentlySet","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"conduit","type":"address"},{"indexed":false,"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"name":"NewConduit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"conduit","type":"address"},{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newPotentialOwner","type":"address"}],"name":"PotentialOwnerUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"initialOwner","type":"address"}],"name":"createConduit","outputs":[{"internalType":"address","name":"conduit","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"uint256","name":"channelIndex","type":"uint256"}],"name":"getChannel","outputs":[{"internalType":"address","name":"channel","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"address","name":"channel","type":"address"}],"name":"getChannelStatus","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"getChannels","outputs":[{"internalType":"address[]","name":"channels","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"name":"getConduit","outputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getConduitCodeHashes","outputs":[{"internalType":"bytes32","name":"creationCodeHash","type":"bytes32"},{"internalType":"bytes32","name":"runtimeCodeHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"getKey","outputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"getPotentialOwner","outputs":[{"internalType":"address","name":"potentialOwner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"getTotalChannels","outputs":[{"internalType":"uint256","name":"totalChannels","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"address","name":"newPotentialOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"address","name":"channel","type":"address"},{"internalType":"bool","name":"isOpen","type":"bool"}],"name":"updateChannel","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"0age","errors":{"CallerIsNotNewPotentialOwner(address)":[{"details":"Revert with an error when attempting to claim ownership of a conduit      with a caller that is not the current potential owner for the      conduit in question."}],"CallerIsNotOwner(address)":[{"details":"Revert with an error when attempting to update channels or transfer      ownership of a conduit when the caller is not the owner of the      conduit in question."}],"ChannelOutOfRange(address)":[{"details":"Revert with an error when attempting to retrieve a channel using an      index that is out of range."}],"ConduitAlreadyExists(address)":[{"details":"Revert with an error when attempting to create a conduit that      already exists."}],"InvalidCreator()":[{"details":"Revert with an error when attempting to create a new conduit using a      conduit key where the first twenty bytes of the key do not match the      address of the caller."}],"InvalidInitialOwner()":[{"details":"Revert with an error when attempting to create a new conduit when no      initial owner address is supplied."}],"NewPotentialOwnerAlreadySet(address,address)":[{"details":"Revert with an error when attempting to set a new potential owner      that is already set."}],"NewPotentialOwnerIsZeroAddress(address)":[{"details":"Revert with an error when attempting to register a new potential      owner and supplying the null address."}],"NoConduit()":[{"details":"Revert with an error when attempting to interact with a conduit that      does not yet exist."}],"NoPotentialOwnerCurrentlySet(address)":[{"details":"Revert with an error when attempting to cancel ownership transfer      when no new potential owner is currently set."}]},"kind":"dev","methods":{"acceptOwnership(address)":{"params":{"conduit":"The conduit for which to accept ownership."}},"cancelOwnershipTransfer(address)":{"params":{"conduit":"The conduit for which to cancel ownership transfer."}},"constructor":{"details":"Initialize contract by deploying a conduit and setting the creation      code and runtime code hashes as immutable arguments."},"createConduit(bytes32,address)":{"params":{"conduitKey":"The conduit key used to deploy the conduit. Note that                     the first twenty bytes of the conduit key must match                     the caller of this contract.","initialOwner":"The initial owner to set for the new conduit."},"returns":{"conduit":"The address of the newly deployed conduit."}},"getChannel(address,uint256)":{"params":{"channelIndex":"The index of the channel in question.","conduit":"The conduit for which to retrieve the open channel."},"returns":{"channel":"The open channel, if any, at the specified channel index."}},"getChannelStatus(address,address)":{"params":{"channel":"The channel for which to retrieve the status.","conduit":"The conduit for which to retrieve the channel status."},"returns":{"isOpen":"The status of the channel on the given conduit."}},"getChannels(address)":{"params":{"conduit":"The conduit for which to retrieve open channels."},"returns":{"channels":"An array of open channels on the given conduit."}},"getConduit(bytes32)":{"params":{"conduitKey":"The conduit key used to derive the conduit."},"returns":{"conduit":"The derived address of the conduit.","exists":" A boolean indicating whether the derived conduit has been                 deployed or not."}},"getConduitCodeHashes()":{"details":"Retrieve the conduit creation code and runtime code hashes."},"getKey(address)":{"params":{"conduit":"The conduit for which to retrieve the associated conduit                key."},"returns":{"conduitKey":"The conduit key used to deploy the supplied conduit."}},"getPotentialOwner(address)":{"params":{"conduit":"The conduit for which to retrieve the potential owner."},"returns":{"potentialOwner":"The potential owner, if any, for the conduit."}},"getTotalChannels(address)":{"params":{"conduit":"The conduit for which to retrieve the total channel count."},"returns":{"totalChannels":"The total number of open channels for the conduit."}},"ownerOf(address)":{"params":{"conduit":"The conduit for which to retrieve the associated owner."},"returns":{"owner":"The owner of the supplied conduit."}},"transferOwnership(address,address)":{"params":{"conduit":"The conduit for which to initiate ownership transfer.","newPotentialOwner":"The new potential owner of the conduit."}},"updateChannel(address,address,bool)":{"params":{"channel":"The channel to open or close on the conduit.","conduit":"The conduit for which to open or close the channel.","isOpen":"A boolean indicating whether to open or close the channel."}}},"title":"ConduitController","version":1},"evm":{"bytecode":{"functionDebugData":{"@_2908":{"entryPoint":null,"id":2908,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161002060208201610088565b6020820181038252601f19601f82011660405250805190602001206080818152505060008060001b60405161005490610088565b8190604051809103906000f5905080158015610074573d6000803e3d6000fd5b506001600160a01b03163f60a05250610095565b610de48061225283390190565b60805160a05161217c6100d660003960008181610155015281816102f90152610c8a0152600081816101320152818161027c0152610c46015261217c6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636d4354211161008c5780637b37e561116100665780637b37e5611461035f5780638b9e028b14610372578063906c87cc1461039257806393790f44146103a557600080fd5b80636d435421146101fe5780636e9bfd9f14610211578063794593bc1461034c57600080fd5b806314afd79e116100c857806314afd79e1461019457806333bc8572146101a75780634e3f9580146101ca57806351710e45146101eb57600080fd5b8063027cc764146100ef5780630a96ad391461012c57806313ad9cab1461017f575b600080fd5b6101026100fd366004611165565b6103b8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b604080517f000000000000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000602082015201610123565b61019261018d36600461118f565b6104a6565b005b6101026101a23660046111db565b610797565b6101ba6101b53660046111fd565b6107d1565b6040519015158152602001610123565b6101dd6101d83660046111db565b610819565b604051908152602001610123565b6101926101f93660046111db565b610850565b61019261020c3660046111fd565b6109d2565b61032061021f366004611230565b6040517fff0000000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021820152603581018290527f000000000000000000000000000000000000000000000000000000000000000060558201526000908190607501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209373ffffffffffffffffffffffffffffffffffffffff85163f7f0000000000000000000000000000000000000000000000000000000000000000149350915050565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352901515602083015201610123565b61010261035a366004611249565b610b5d565b61019261036d3660046111db565b610e1f565b6103856103803660046111db565b610f1b565b604051610123919061126c565b6101026103a03660046111db565b610fb5565b6101dd6103b33660046111db565b610fef565b60006103c383611051565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902060030154808310610442576040517f6ceb340b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208190526040902060030180548490811061047c5761047c6112c6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16949350505050565b6104af836110b0565b6040517fc4e8fcb500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152821515602483015284169063c4e8fcb590604401600060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff83811660009081526020818152604080832093861683526004840190915290205480151583801561057c575080155b156105f1576003830180546001810182556000828152602080822090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16908117909155925492815260048601909152604090205561078f565b831580156105fc5750805b1561078f5760038301547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830190600090610639906001906112f5565b90508181146106f9576000856003018281548110610659576106596112c6565b60009182526020909120015460038701805473ffffffffffffffffffffffffffffffffffffffff9092169250829185908110610697576106976112c6565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260048701909152604090208490555b8460030180548061070c5761070c611333565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff89168252600487019052604081205550505b505050505050565b60006107a282611051565b5073ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020600101541690565b60006107dc83611051565b5073ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825260049092019091522054151590565b600061082482611051565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090206003015490565b61085981611051565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152602081905260409020600201541633146108d4576040517f88c3a11500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610439565b6040516000907f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da908290a273ffffffffffffffffffffffffffffffffffffffff8082166000818152602081905260408082206002810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560010154905133949190911692917fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec91a473ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b6109db826110b0565b73ffffffffffffffffffffffffffffffffffffffff8116610a40576040517fa388d26300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610439565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260208190526040902060020154811690821603610ac6576040517fcbc080ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152604401610439565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da90600090a273ffffffffffffffffffffffffffffffffffffffff918216600090815260208190526040902060020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600073ffffffffffffffffffffffffffffffffffffffff8216610bac576040517f99faaa0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606083901c3314610be9576040517fcb6e534400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fff0000000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021820152603581018490527f000000000000000000000000000000000000000000000000000000000000000060558201526075016040516020818303038152906040528051906020012060001c90507f00000000000000000000000000000000000000000000000000000000000000008173ffffffffffffffffffffffffffffffffffffffff163f03610d10576040517f6328ccb200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610439565b82604051610d1d90611134565b8190604051809103906000f5905080158015610d3d573d6000803e3d6000fd5b505073ffffffffffffffffffffffffffffffffffffffff818116600081815260208181526040918290206001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001695881695909517909455868455815192835282018690527f4397af6128d529b8ae0442f99db1296d5136062597a15bbc61c1b2a6431a7d15910160405180910390a160405173ffffffffffffffffffffffffffffffffffffffff808516916000918516907fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec908390a45092915050565b610e28816110b0565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526020819052604090206002015416610ea1576040517f6b01361600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610439565b6040516000907f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da908290a273ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902060020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6060610f2682611051565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081815260409182902060030180548351818402810184019094528084529091830182828015610fa957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610f7e575b50505050509050919050565b6000610fc082611051565b5073ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020600201541690565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020548061104c576040517f4ca8209000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020546110ad576040517f4ca8209000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6110b981611051565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152602081905260409020600101541633146110ad576040517fd4ed9a1700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610439565b610de48061136383390190565b803573ffffffffffffffffffffffffffffffffffffffff8116811461104c57600080fd5b6000806040838503121561117857600080fd5b61118183611141565b946020939093013593505050565b6000806000606084860312156111a457600080fd5b6111ad84611141565b92506111bb60208501611141565b9150604084013580151581146111d057600080fd5b809150509250925092565b6000602082840312156111ed57600080fd5b6111f682611141565b9392505050565b6000806040838503121561121057600080fd5b61121983611141565b915061122760208401611141565b90509250929050565b60006020828403121561124257600080fd5b5035919050565b6000806040838503121561125c57600080fd5b8235915061122760208401611141565b6020808252825182820181905260009190848201906040850190845b818110156112ba57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611288565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008282101561132e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe60a060405234801561001057600080fd5b5033608052608051610db461003060003960006102a40152610db46000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100995780638df25d92146100ac578063c4e8fcb5146100bf575b600080fd5b61006461005f366004610b4f565b6100d4565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b6100646100a7366004610bd6565b610175565b6100646100ba366004610c42565b610217565b6100d26100cd366004610ca1565b61028c565b005b6000336000526000602052604060002054610117577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8160005b8181101561014b5761014385858381811061013857610138610cdd565b905060c0020161040e565b60010161011b565b507f4ce34aa200000000000000000000000000000000000000000000000000000000949350505050565b60003360005260006020526040600020546101b8577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8360005b818110156101e1576101d987878381811061013857610138610cdd565b6001016101bc565b506101ec84846105ac565b507f899e104c0000000000000000000000000000000000000000000000000000000095945050505050565b600033600052600060205260406000205461025a577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b61026483836105ac565b507f8df25d920000000000000000000000000000000000000000000000000000000092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102fb576040517f6d5769be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481151560ff909116151503610386576040517f924e341e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152811515602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a25050565b600161041d6020830183610d3b565b600381111561042e5761042e610d0c565b03610473576104706104466040830160208401610d63565b6104566060840160408501610d63565b6104666080850160608601610d63565b8460a00135610755565b50565b60026104826020830183610d3b565b600381111561049357610493610d0c565b03610513578060a001356001146104d6576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104706104e96040830160208401610d63565b6104f96060840160408501610d63565b6105096080850160608601610d63565b84608001356108c2565b60036105226020830183610d3b565b600381111561053357610533610d0c565b0361057a5761047061054b6040830160208401610d63565b61055b6060840160408501610d63565b61056b6080850160608601610d63565b84608001358560a001356109d1565b6040517f7932f1fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082807f2eb2c2d60000000000000000000000000000000000000000000000000000000060205260005b8381101561074857823582018035803b610618577f5f15d672000000000000000000000000000000000000000000000000000000006000528060045260246000fd5b60a08201356020810260c0018060808501351460a06060860135141681850135831416159050801561066e577feba2084c0000000000000000000000000000000000000000000000000000000060005260046000fd5b506020860195506080602084016024376040810260400190508060a00160a45260008160c401528060c4018160a0850160c4376000808260206000875af1935083610739573d156106fe576020601f3d010491506020810482600302818411156106e657818403600302610200838002868002030401015b5a6020820110156106fb573d6000803e3d6000fd5b50505b7fafc445e2000000000000000000000000000000000000000000000000000000006000528260045260c0606452608451602001608452806000fd5b505050506001810190506105d6565b5050505060806040525050565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d151581166108b25780873b1515166108b25780610884578161084a573d1561080b576020601f3d01046020840481600302818311156107f257818303600302610200838002858002030401015b5a602082011015610807573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b833b6108f6577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af1806109c2573d15610983576020601f3d010460208304816003028183111561096a57818303600302610200838002858002030401015b5a60208201101561097f573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b610a05577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af180610ae7573d15610aa9576020601f3d0104602086048160030281831115610a9057818303600302610200838002858002030401015b5a602082011015610aa5573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f840112610b1557600080fd5b50813567ffffffffffffffff811115610b2d57600080fd5b60208301915083602060c083028501011115610b4857600080fd5b9250929050565b60008060208385031215610b6257600080fd5b823567ffffffffffffffff811115610b7957600080fd5b610b8585828601610b03565b90969095509350505050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b6020830191508360208260051b8501011115610b4857600080fd5b60008060008060408587031215610bec57600080fd5b843567ffffffffffffffff80821115610c0457600080fd5b610c1088838901610b03565b90965094506020870135915080821115610c2957600080fd5b50610c3687828801610b91565b95989497509550505050565b60008060208385031215610c5557600080fd5b823567ffffffffffffffff811115610c6c57600080fd5b610b8585828601610b91565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c9c57600080fd5b919050565b60008060408385031215610cb457600080fd5b610cbd83610c78565b915060208301358015158114610cd257600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215610d4d57600080fd5b813560048110610d5c57600080fd5b9392505050565b600060208284031215610d7557600080fd5b610d5c82610c7856fea26469706673582212209cadd638170dc51bd1bcdf7a749c70a4b43d82a57f073a9e1a087a48e2f0ad0164736f6c634300080e0033a26469706673582212203e51fab416ef4d26ca77f6dc3a2fd30ecbe956e8141afc27f12ec350c563174d64736f6c634300080e003360a060405234801561001057600080fd5b5033608052608051610db461003060003960006102a40152610db46000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100995780638df25d92146100ac578063c4e8fcb5146100bf575b600080fd5b61006461005f366004610b4f565b6100d4565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b6100646100a7366004610bd6565b610175565b6100646100ba366004610c42565b610217565b6100d26100cd366004610ca1565b61028c565b005b6000336000526000602052604060002054610117577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8160005b8181101561014b5761014385858381811061013857610138610cdd565b905060c0020161040e565b60010161011b565b507f4ce34aa200000000000000000000000000000000000000000000000000000000949350505050565b60003360005260006020526040600020546101b8577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8360005b818110156101e1576101d987878381811061013857610138610cdd565b6001016101bc565b506101ec84846105ac565b507f899e104c0000000000000000000000000000000000000000000000000000000095945050505050565b600033600052600060205260406000205461025a577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b61026483836105ac565b507f8df25d920000000000000000000000000000000000000000000000000000000092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102fb576040517f6d5769be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481151560ff909116151503610386576040517f924e341e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152811515602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a25050565b600161041d6020830183610d3b565b600381111561042e5761042e610d0c565b03610473576104706104466040830160208401610d63565b6104566060840160408501610d63565b6104666080850160608601610d63565b8460a00135610755565b50565b60026104826020830183610d3b565b600381111561049357610493610d0c565b03610513578060a001356001146104d6576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104706104e96040830160208401610d63565b6104f96060840160408501610d63565b6105096080850160608601610d63565b84608001356108c2565b60036105226020830183610d3b565b600381111561053357610533610d0c565b0361057a5761047061054b6040830160208401610d63565b61055b6060840160408501610d63565b61056b6080850160608601610d63565b84608001358560a001356109d1565b6040517f7932f1fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082807f2eb2c2d60000000000000000000000000000000000000000000000000000000060205260005b8381101561074857823582018035803b610618577f5f15d672000000000000000000000000000000000000000000000000000000006000528060045260246000fd5b60a08201356020810260c0018060808501351460a06060860135141681850135831416159050801561066e577feba2084c0000000000000000000000000000000000000000000000000000000060005260046000fd5b506020860195506080602084016024376040810260400190508060a00160a45260008160c401528060c4018160a0850160c4376000808260206000875af1935083610739573d156106fe576020601f3d010491506020810482600302818411156106e657818403600302610200838002868002030401015b5a6020820110156106fb573d6000803e3d6000fd5b50505b7fafc445e2000000000000000000000000000000000000000000000000000000006000528260045260c0606452608451602001608452806000fd5b505050506001810190506105d6565b5050505060806040525050565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d151581166108b25780873b1515166108b25780610884578161084a573d1561080b576020601f3d01046020840481600302818311156107f257818303600302610200838002858002030401015b5a602082011015610807573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b833b6108f6577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af1806109c2573d15610983576020601f3d010460208304816003028183111561096a57818303600302610200838002858002030401015b5a60208201101561097f573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b610a05577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af180610ae7573d15610aa9576020601f3d0104602086048160030281831115610a9057818303600302610200838002858002030401015b5a602082011015610aa5573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f840112610b1557600080fd5b50813567ffffffffffffffff811115610b2d57600080fd5b60208301915083602060c083028501011115610b4857600080fd5b9250929050565b60008060208385031215610b6257600080fd5b823567ffffffffffffffff811115610b7957600080fd5b610b8585828601610b03565b90969095509350505050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b6020830191508360208260051b8501011115610b4857600080fd5b60008060008060408587031215610bec57600080fd5b843567ffffffffffffffff80821115610c0457600080fd5b610c1088838901610b03565b90965094506020870135915080821115610c2957600080fd5b50610c3687828801610b91565b95989497509550505050565b60008060208385031215610c5557600080fd5b823567ffffffffffffffff811115610c6c57600080fd5b610b8585828601610b91565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c9c57600080fd5b919050565b60008060408385031215610cb457600080fd5b610cbd83610c78565b915060208301358015158114610cd257600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215610d4d57600080fd5b813560048110610d5c57600080fd5b9392505050565b600060208284031215610d7557600080fd5b610d5c82610c7856fea26469706673582212209cadd638170dc51bd1bcdf7a749c70a4b43d82a57f073a9e1a087a48e2f0ad0164736f6c634300080e0033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x20 PUSH1 0x20 DUP3 ADD PUSH2 0x88 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH2 0x54 SWAP1 PUSH2 0x88 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODEHASH PUSH1 0xA0 MSTORE POP PUSH2 0x95 JUMP JUMPDEST PUSH2 0xDE4 DUP1 PUSH2 0x2252 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x217C PUSH2 0xD6 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x155 ADD MSTORE DUP2 DUP2 PUSH2 0x2F9 ADD MSTORE PUSH2 0xC8A ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x132 ADD MSTORE DUP2 DUP2 PUSH2 0x27C ADD MSTORE PUSH2 0xC46 ADD MSTORE PUSH2 0x217C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D435421 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x7B37E561 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x7B37E561 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x8B9E028B EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0x906C87CC EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x93790F44 EQ PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6D435421 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x6E9BFD9F EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x794593BC EQ PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AFD79E GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x14AFD79E EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x33BC8572 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E3F9580 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0x51710E45 EQ PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27CC764 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0xA96AD39 EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0x13AD9CAB EQ PUSH2 0x17F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 DUP2 MSTORE PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x123 JUMP JUMPDEST PUSH2 0x192 PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0x118F JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x102 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x1BA PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x11FD JUMP JUMPDEST PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x123 JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x1D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x123 JUMP JUMPDEST PUSH2 0x192 PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0x850 JUMP JUMPDEST PUSH2 0x192 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x11FD JUMP JUMPDEST PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0x320 PUSH2 0x21F CALLDATASIZE PUSH1 0x4 PUSH2 0x1230 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x21 DUP3 ADD MSTORE PUSH1 0x35 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x55 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x75 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODEHASH PUSH32 0x0 EQ SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x123 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x1249 JUMP JUMPDEST PUSH2 0xB5D JUMP JUMPDEST PUSH2 0x192 PUSH2 0x36D CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0xE1F JUMP JUMPDEST PUSH2 0x385 PUSH2 0x380 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x102 PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0xFEF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C3 DUP4 PUSH2 0x1051 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP1 DUP4 LT PUSH2 0x442 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6CEB340B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD DUP5 SWAP1 DUP2 LT PUSH2 0x47C JUMPI PUSH2 0x47C PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4AF DUP4 PUSH2 0x10B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC4E8FCB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 ISZERO ISZERO PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xC4E8FCB5 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE PUSH1 0x4 DUP5 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP1 ISZERO ISZERO DUP4 DUP1 ISZERO PUSH2 0x57C JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x5F1 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP3 SLOAD SWAP3 DUP2 MSTORE PUSH1 0x4 DUP7 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x78F JUMP JUMPDEST DUP4 ISZERO DUP1 ISZERO PUSH2 0x5FC JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x78F JUMPI PUSH1 0x3 DUP4 ADD SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x639 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x12F5 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x6F9 JUMPI PUSH1 0x0 DUP6 PUSH1 0x3 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x659 JUMPI PUSH2 0x659 PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x3 DUP8 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x697 JUMPI PUSH2 0x697 PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x4 DUP8 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE JUMPDEST DUP5 PUSH1 0x3 ADD DUP1 SLOAD DUP1 PUSH2 0x70C JUMPI PUSH2 0x70C PUSH2 0x1333 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP3 MSTORE PUSH1 0x4 DUP8 ADD SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A2 DUP3 PUSH2 0x1051 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP4 PUSH2 0x1051 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE PUSH1 0x4 SWAP1 SWAP3 ADD SWAP1 SWAP2 MSTORE KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x824 DUP3 PUSH2 0x1051 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x859 DUP2 PUSH2 0x1051 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND CALLER EQ PUSH2 0x8D4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x88C3A11500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH32 0x11A3CF439FB225BFE74225716B6774765670EC1060E3796802E62139D69974DA SWAP1 DUP3 SWAP1 LOG2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE PUSH1 0x1 ADD SLOAD SWAP1 MLOAD CALLER SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 PUSH32 0xC8894F26F396CE8C004245C8B7CD1B92103A6E4302FCBAB883987149AC01B7EC SWAP2 LOG4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND CALLER OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x9DB DUP3 PUSH2 0x10B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xA40 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA388D26300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD DUP2 AND SWAP1 DUP3 AND SUB PUSH2 0xAC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCBC080CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x11A3CF439FB225BFE74225716B6774765670EC1060E3796802E62139D69974DA SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xBAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x99FAAA0400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR CALLER EQ PUSH2 0xBE9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCB6E534400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x21 DUP3 ADD MSTORE PUSH1 0x35 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x55 DUP3 ADD MSTORE PUSH1 0x75 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH32 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODEHASH SUB PUSH2 0xD10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6328CCB200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0xD1D SWAP1 PUSH2 0x1134 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP6 DUP9 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE DUP7 DUP5 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD DUP7 SWAP1 MSTORE PUSH32 0x4397AF6128D529B8AE0442F99DB1296D5136062597A15BBC61C1B2A6431A7D15 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP2 PUSH1 0x0 SWAP2 DUP6 AND SWAP1 PUSH32 0xC8894F26F396CE8C004245C8B7CD1B92103A6E4302FCBAB883987149AC01B7EC SWAP1 DUP4 SWAP1 LOG4 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE28 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND PUSH2 0xEA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6B01361600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH32 0x11A3CF439FB225BFE74225716B6774765670EC1060E3796802E62139D69974DA SWAP1 DUP3 SWAP1 LOG2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF26 DUP3 PUSH2 0x1051 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF7E JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC0 DUP3 PUSH2 0x1051 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x104C JUMPI PUSH1 0x40 MLOAD PUSH32 0x4CA8209000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x10AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x4CA8209000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x10B9 DUP2 PUSH2 0x1051 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND CALLER EQ PUSH2 0x10AD JUMPI PUSH1 0x40 MLOAD PUSH32 0xD4ED9A1700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST PUSH2 0xDE4 DUP1 PUSH2 0x1363 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x104C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1181 DUP4 PUSH2 0x1141 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11AD DUP5 PUSH2 0x1141 JUMP JUMPDEST SWAP3 POP PUSH2 0x11BB PUSH1 0x20 DUP6 ADD PUSH2 0x1141 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11F6 DUP3 PUSH2 0x1141 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1219 DUP4 PUSH2 0x1141 JUMP JUMPDEST SWAP2 POP PUSH2 0x1227 PUSH1 0x20 DUP5 ADD PUSH2 0x1141 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x1227 PUSH1 0x20 DUP5 ADD PUSH2 0x1141 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x12BA JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1288 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x132E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0xDB4 PUSH2 0x30 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x2A4 ADD MSTORE PUSH2 0xDB4 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0xB4F JUMP JUMPDEST PUSH2 0xD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xBA CALLDATASIZE PUSH1 0x4 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH2 0xD2 PUSH2 0xCD CALLDATASIZE PUSH1 0x4 PUSH2 0xCA1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x117 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14B JUMPI PUSH2 0x143 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11B JUMP JUMPDEST POP PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1B8 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH2 0x1D9 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BC JUMP JUMPDEST POP PUSH2 0x1EC DUP5 DUP5 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x899E104C00000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x25A JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x264 DUP4 DUP4 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x8DF25D9200000000000000000000000000000000000000000000000000000000 SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x2FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x6D5769BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 ISZERO ISZERO PUSH1 0xFF SWAP1 SWAP2 AND ISZERO ISZERO SUB PUSH2 0x386 JUMPI PUSH1 0x40 MLOAD PUSH32 0x924E341E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP2 ISZERO ISZERO PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x41D PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42E JUMPI PUSH2 0x42E PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x473 JUMPI PUSH2 0x470 PUSH2 0x446 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x456 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x466 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x755 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x482 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x493 JUMPI PUSH2 0x493 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x513 JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x4D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x470 PUSH2 0x4E9 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x4F9 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x509 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x8C2 JUMP JUMPDEST PUSH1 0x3 PUSH2 0x522 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x533 JUMPI PUSH2 0x533 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x57A JUMPI PUSH2 0x470 PUSH2 0x54B PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x55B PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x56B PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7932F1FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x748 JUMPI DUP3 CALLDATALOAD DUP3 ADD DUP1 CALLDATALOAD DUP1 EXTCODESIZE PUSH2 0x618 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP2 MUL PUSH1 0xC0 ADD DUP1 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP2 DUP6 ADD CALLDATALOAD DUP4 EQ AND ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x66E JUMPI PUSH32 0xEBA2084C00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x20 DUP7 ADD SWAP6 POP PUSH1 0x80 PUSH1 0x20 DUP5 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD SWAP1 POP DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH1 0xC4 ADD MSTORE DUP1 PUSH1 0xC4 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP8 GAS CALL SWAP4 POP DUP4 PUSH2 0x739 JUMPI RETURNDATASIZE ISZERO PUSH2 0x6FE JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x6E6 JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH32 0xAFC445E200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP3 PUSH1 0x4 MSTORE PUSH1 0xC0 PUSH1 0x64 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE DUP1 PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x8B2 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x8B2 JUMPI DUP1 PUSH2 0x884 JUMPI DUP2 PUSH2 0x84A JUMPI RETURNDATASIZE ISZERO PUSH2 0x80B JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7F2 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x807 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x8F6 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x9C2 JUMPI RETURNDATASIZE ISZERO PUSH2 0x983 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x96A JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x97F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0xA05 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0xAE7 JUMPI RETURNDATASIZE ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0xA90 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0xAA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xB15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC10 DUP9 DUP4 DUP10 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC36 DUP8 DUP3 DUP9 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB91 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCBD DUP4 PUSH2 0xC78 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xD5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5C DUP3 PUSH2 0xC78 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 0xAD 0xD6 CODESIZE OR 0xD 0xC5 SHL 0xD1 0xBC 0xDF PUSH27 0x749C70A4B43D82A57F073A9E1A087A48E2F0AD0164736F6C634300 ADDMOD 0xE STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY MLOAD STATICCALL 0xB4 AND 0xEF 0x4D 0x26 0xCA PUSH24 0xF6DC3A2FD30ECBE956E8141AFC27F12EC350C563174D6473 PUSH16 0x6C634300080E003360A0604052348015 PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0xDB4 PUSH2 0x30 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x2A4 ADD MSTORE PUSH2 0xDB4 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0xB4F JUMP JUMPDEST PUSH2 0xD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xBA CALLDATASIZE PUSH1 0x4 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH2 0xD2 PUSH2 0xCD CALLDATASIZE PUSH1 0x4 PUSH2 0xCA1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x117 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14B JUMPI PUSH2 0x143 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11B JUMP JUMPDEST POP PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1B8 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH2 0x1D9 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BC JUMP JUMPDEST POP PUSH2 0x1EC DUP5 DUP5 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x899E104C00000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x25A JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x264 DUP4 DUP4 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x8DF25D9200000000000000000000000000000000000000000000000000000000 SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x2FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x6D5769BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 ISZERO ISZERO PUSH1 0xFF SWAP1 SWAP2 AND ISZERO ISZERO SUB PUSH2 0x386 JUMPI PUSH1 0x40 MLOAD PUSH32 0x924E341E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP2 ISZERO ISZERO PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x41D PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42E JUMPI PUSH2 0x42E PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x473 JUMPI PUSH2 0x470 PUSH2 0x446 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x456 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x466 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x755 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x482 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x493 JUMPI PUSH2 0x493 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x513 JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x4D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x470 PUSH2 0x4E9 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x4F9 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x509 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x8C2 JUMP JUMPDEST PUSH1 0x3 PUSH2 0x522 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x533 JUMPI PUSH2 0x533 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x57A JUMPI PUSH2 0x470 PUSH2 0x54B PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x55B PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x56B PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7932F1FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x748 JUMPI DUP3 CALLDATALOAD DUP3 ADD DUP1 CALLDATALOAD DUP1 EXTCODESIZE PUSH2 0x618 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP2 MUL PUSH1 0xC0 ADD DUP1 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP2 DUP6 ADD CALLDATALOAD DUP4 EQ AND ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x66E JUMPI PUSH32 0xEBA2084C00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x20 DUP7 ADD SWAP6 POP PUSH1 0x80 PUSH1 0x20 DUP5 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD SWAP1 POP DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH1 0xC4 ADD MSTORE DUP1 PUSH1 0xC4 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP8 GAS CALL SWAP4 POP DUP4 PUSH2 0x739 JUMPI RETURNDATASIZE ISZERO PUSH2 0x6FE JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x6E6 JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH32 0xAFC445E200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP3 PUSH1 0x4 MSTORE PUSH1 0xC0 PUSH1 0x64 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE DUP1 PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x8B2 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x8B2 JUMPI DUP1 PUSH2 0x884 JUMPI DUP2 PUSH2 0x84A JUMPI RETURNDATASIZE ISZERO PUSH2 0x80B JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7F2 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x807 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x8F6 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x9C2 JUMPI RETURNDATASIZE ISZERO PUSH2 0x983 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x96A JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x97F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0xA05 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0xAE7 JUMPI RETURNDATASIZE ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0xA90 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0xAA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xB15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC10 DUP9 DUP4 DUP10 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC36 DUP8 DUP3 DUP9 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB91 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCBD DUP4 PUSH2 0xC78 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xD5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5C DUP3 PUSH2 0xC78 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 0xAD 0xD6 CODESIZE OR 0xD 0xC5 SHL 0xD1 0xBC 0xDF PUSH27 0x749C70A4B43D82A57F073A9E1A087A48E2F0AD0164736F6C634300 ADDMOD 0xE STOP CALLER ","sourceMap":"539:19422:16:-:0;;;1104:448;;;;;;;;;-1:-1:-1;1245:26:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1235:37;;;;;;1205:67;;;;;;1343:19;1392:1;1384:10;;1365:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1516:29:16;;1487:58;;-1:-1:-1;539:19422:16;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_assertCallerIsConduitOwner_3589":{"entryPoint":4272,"id":3589,"parameterSlots":1,"returnSlots":0},"@_assertConduitExists_3610":{"entryPoint":4177,"id":3610,"parameterSlots":1,"returnSlots":0},"@acceptOwnership_3317":{"entryPoint":2128,"id":3317,"parameterSlots":1,"returnSlots":0},"@cancelOwnershipTransfer_3257":{"entryPoint":3615,"id":3257,"parameterSlots":1,"returnSlots":0},"@createConduit_3026":{"entryPoint":2909,"id":3026,"parameterSlots":2,"returnSlots":1},"@getChannelStatus_3461":{"entryPoint":2001,"id":3461,"parameterSlots":2,"returnSlots":1},"@getChannel_3525":{"entryPoint":952,"id":3525,"parameterSlots":2,"returnSlots":1},"@getChannels_3547":{"entryPoint":3867,"id":3547,"parameterSlots":1,"returnSlots":1},"@getConduitCodeHashes_3565":{"entryPoint":null,"id":3565,"parameterSlots":0,"returnSlots":2},"@getConduit_3413":{"entryPoint":null,"id":3413,"parameterSlots":1,"returnSlots":2},"@getKey_3366":{"entryPoint":4079,"id":3366,"parameterSlots":1,"returnSlots":1},"@getPotentialOwner_3434":{"entryPoint":4021,"id":3434,"parameterSlots":1,"returnSlots":1},"@getTotalChannels_3483":{"entryPoint":2073,"id":3483,"parameterSlots":1,"returnSlots":1},"@ownerOf_3338":{"entryPoint":1943,"id":3338,"parameterSlots":1,"returnSlots":1},"@transferOwnership_3213":{"entryPoint":2514,"id":3213,"parameterSlots":2,"returnSlots":0},"@updateChannel_3163":{"entryPoint":1190,"id":3163,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":4417,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4571,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4605,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_bool":{"entryPoint":4495,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4453,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":4656,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":4681,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"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},"abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":4716,"id":null,"parameterSlots":2,"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_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4853,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x31":{"entryPoint":4915,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4806,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5665:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:54","statements":[{"nodeType":"YulAssignment","src":"73:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:54"},"nodeType":"YulFunctionCall","src":"82:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:54"}]},{"body":{"nodeType":"YulBlock","src":"188:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:54"},"nodeType":"YulFunctionCall","src":"190:12:54"},"nodeType":"YulExpressionStatement","src":"190:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:54"},"nodeType":"YulFunctionCall","src":"131:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:54"},"nodeType":"YulFunctionCall","src":"121:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:54"},"nodeType":"YulFunctionCall","src":"114:73:54"},"nodeType":"YulIf","src":"111:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:54","type":""}],"src":"14:196:54"},{"body":{"nodeType":"YulBlock","src":"302:167:54","statements":[{"body":{"nodeType":"YulBlock","src":"348:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"357:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"360:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"350:6:54"},"nodeType":"YulFunctionCall","src":"350:12:54"},"nodeType":"YulExpressionStatement","src":"350:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"323:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"332:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"319:3:54"},"nodeType":"YulFunctionCall","src":"319:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"315:3:54"},"nodeType":"YulFunctionCall","src":"315:32:54"},"nodeType":"YulIf","src":"312:52:54"},{"nodeType":"YulAssignment","src":"373:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"402:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"383:18:54"},"nodeType":"YulFunctionCall","src":"383:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"373:6:54"}]},{"nodeType":"YulAssignment","src":"421:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"448:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"459:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"444:3:54"},"nodeType":"YulFunctionCall","src":"444:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"431:12:54"},"nodeType":"YulFunctionCall","src":"431:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"421:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"260:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"271:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"283:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"291:6:54","type":""}],"src":"215:254:54"},{"body":{"nodeType":"YulBlock","src":"575:125:54","statements":[{"nodeType":"YulAssignment","src":"585:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"597:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"593:3:54"},"nodeType":"YulFunctionCall","src":"593:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"585:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"627:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"642:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"650:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"638:3:54"},"nodeType":"YulFunctionCall","src":"638:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"620:6:54"},"nodeType":"YulFunctionCall","src":"620:74:54"},"nodeType":"YulExpressionStatement","src":"620:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"544:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"555:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"566:4:54","type":""}],"src":"474:226:54"},{"body":{"nodeType":"YulBlock","src":"834:119:54","statements":[{"nodeType":"YulAssignment","src":"844:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"856:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"867:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"852:3:54"},"nodeType":"YulFunctionCall","src":"852:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"844:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"886:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"897:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"879:6:54"},"nodeType":"YulFunctionCall","src":"879:25:54"},"nodeType":"YulExpressionStatement","src":"879:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"924:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"935:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"920:3:54"},"nodeType":"YulFunctionCall","src":"920:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"940:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"913:6:54"},"nodeType":"YulFunctionCall","src":"913:34:54"},"nodeType":"YulExpressionStatement","src":"913:34:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"795:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"806:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"814:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"825:4:54","type":""}],"src":"705:248:54"},{"body":{"nodeType":"YulBlock","src":"1059:320:54","statements":[{"body":{"nodeType":"YulBlock","src":"1105:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1114:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1117:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1107:6:54"},"nodeType":"YulFunctionCall","src":"1107:12:54"},"nodeType":"YulExpressionStatement","src":"1107:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1080:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1089:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1076:3:54"},"nodeType":"YulFunctionCall","src":"1076:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1101:2:54","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1072:3:54"},"nodeType":"YulFunctionCall","src":"1072:32:54"},"nodeType":"YulIf","src":"1069:52:54"},{"nodeType":"YulAssignment","src":"1130:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1159:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1140:18:54"},"nodeType":"YulFunctionCall","src":"1140:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1130:6:54"}]},{"nodeType":"YulAssignment","src":"1178:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1211:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1222:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1207:3:54"},"nodeType":"YulFunctionCall","src":"1207:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1188:18:54"},"nodeType":"YulFunctionCall","src":"1188:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1178:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"1235:45:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1265:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1276:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1261:3:54"},"nodeType":"YulFunctionCall","src":"1261:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1248:12:54"},"nodeType":"YulFunctionCall","src":"1248:32:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1239:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1333:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1342:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1345:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1335:6:54"},"nodeType":"YulFunctionCall","src":"1335:12:54"},"nodeType":"YulExpressionStatement","src":"1335:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1302:5:54"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1323:5:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1316:6:54"},"nodeType":"YulFunctionCall","src":"1316:13:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1309:6:54"},"nodeType":"YulFunctionCall","src":"1309:21:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1299:2:54"},"nodeType":"YulFunctionCall","src":"1299:32:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1292:6:54"},"nodeType":"YulFunctionCall","src":"1292:40:54"},"nodeType":"YulIf","src":"1289:60:54"},{"nodeType":"YulAssignment","src":"1358:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"1368:5:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1358:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1009:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1020:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1032:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1040:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1048:6:54","type":""}],"src":"958:421:54"},{"body":{"nodeType":"YulBlock","src":"1454:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"1500:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1509:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1512:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1502:6:54"},"nodeType":"YulFunctionCall","src":"1502:12:54"},"nodeType":"YulExpressionStatement","src":"1502:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1475:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1484:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1471:3:54"},"nodeType":"YulFunctionCall","src":"1471:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1496:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1467:3:54"},"nodeType":"YulFunctionCall","src":"1467:32:54"},"nodeType":"YulIf","src":"1464:52:54"},{"nodeType":"YulAssignment","src":"1525:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1554:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1535:18:54"},"nodeType":"YulFunctionCall","src":"1535:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1525:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1420:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1431:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1443:6:54","type":""}],"src":"1384:186:54"},{"body":{"nodeType":"YulBlock","src":"1662:173:54","statements":[{"body":{"nodeType":"YulBlock","src":"1708:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1717:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1720:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1710:6:54"},"nodeType":"YulFunctionCall","src":"1710:12:54"},"nodeType":"YulExpressionStatement","src":"1710:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1683:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1692:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1679:3:54"},"nodeType":"YulFunctionCall","src":"1679:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1704:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1675:3:54"},"nodeType":"YulFunctionCall","src":"1675:32:54"},"nodeType":"YulIf","src":"1672:52:54"},{"nodeType":"YulAssignment","src":"1733:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1762:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1743:18:54"},"nodeType":"YulFunctionCall","src":"1743:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1733:6:54"}]},{"nodeType":"YulAssignment","src":"1781:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1814:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1825:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1810:3:54"},"nodeType":"YulFunctionCall","src":"1810:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1791:18:54"},"nodeType":"YulFunctionCall","src":"1791:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1781:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1620:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1631:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1643:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1651:6:54","type":""}],"src":"1575:260:54"},{"body":{"nodeType":"YulBlock","src":"1935:92:54","statements":[{"nodeType":"YulAssignment","src":"1945:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1957:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1968:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1953:3:54"},"nodeType":"YulFunctionCall","src":"1953:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1945:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1987:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2012:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2005:6:54"},"nodeType":"YulFunctionCall","src":"2005:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1998:6:54"},"nodeType":"YulFunctionCall","src":"1998:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1980:6:54"},"nodeType":"YulFunctionCall","src":"1980:41:54"},"nodeType":"YulExpressionStatement","src":"1980:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1904:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1915:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1926:4:54","type":""}],"src":"1840:187:54"},{"body":{"nodeType":"YulBlock","src":"2133:76:54","statements":[{"nodeType":"YulAssignment","src":"2143:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2155:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2166:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2151:3:54"},"nodeType":"YulFunctionCall","src":"2151:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2143:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2185:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"2196:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2178:6:54"},"nodeType":"YulFunctionCall","src":"2178:25:54"},"nodeType":"YulExpressionStatement","src":"2178:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2102:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2113:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2124:4:54","type":""}],"src":"2032:177:54"},{"body":{"nodeType":"YulBlock","src":"2284:110:54","statements":[{"body":{"nodeType":"YulBlock","src":"2330:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2339:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2342:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2332:6:54"},"nodeType":"YulFunctionCall","src":"2332:12:54"},"nodeType":"YulExpressionStatement","src":"2332:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2305:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2314:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2301:3:54"},"nodeType":"YulFunctionCall","src":"2301:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2326:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2297:3:54"},"nodeType":"YulFunctionCall","src":"2297:32:54"},"nodeType":"YulIf","src":"2294:52:54"},{"nodeType":"YulAssignment","src":"2355:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2378:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2365:12:54"},"nodeType":"YulFunctionCall","src":"2365:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2355:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2250:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2261:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2273:6:54","type":""}],"src":"2214:180:54"},{"body":{"nodeType":"YulBlock","src":"2522:184:54","statements":[{"nodeType":"YulAssignment","src":"2532:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2544:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2555:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2540:3:54"},"nodeType":"YulFunctionCall","src":"2540:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2532:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2574:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2589:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2597:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2585:3:54"},"nodeType":"YulFunctionCall","src":"2585:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2567:6:54"},"nodeType":"YulFunctionCall","src":"2567:74:54"},"nodeType":"YulExpressionStatement","src":"2567:74:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2661:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2672:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:54"},"nodeType":"YulFunctionCall","src":"2657:18:54"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2691:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2684:6:54"},"nodeType":"YulFunctionCall","src":"2684:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2677:6:54"},"nodeType":"YulFunctionCall","src":"2677:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:54"},"nodeType":"YulFunctionCall","src":"2650:50:54"},"nodeType":"YulExpressionStatement","src":"2650:50:54"}]},"name":"abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2483:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2494:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2502:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2513:4:54","type":""}],"src":"2399:307:54"},{"body":{"nodeType":"YulBlock","src":"2798:167:54","statements":[{"body":{"nodeType":"YulBlock","src":"2844:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2853:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2856:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2846:6:54"},"nodeType":"YulFunctionCall","src":"2846:12:54"},"nodeType":"YulExpressionStatement","src":"2846:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2819:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2828:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2815:3:54"},"nodeType":"YulFunctionCall","src":"2815:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2840:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2811:3:54"},"nodeType":"YulFunctionCall","src":"2811:32:54"},"nodeType":"YulIf","src":"2808:52:54"},{"nodeType":"YulAssignment","src":"2869:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2892:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2879:12:54"},"nodeType":"YulFunctionCall","src":"2879:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2869:6:54"}]},{"nodeType":"YulAssignment","src":"2911:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2944:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2955:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2940:3:54"},"nodeType":"YulFunctionCall","src":"2940:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2921:18:54"},"nodeType":"YulFunctionCall","src":"2921:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2911:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2756:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2767:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2779:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2787:6:54","type":""}],"src":"2711:254:54"},{"body":{"nodeType":"YulBlock","src":"3121:530:54","statements":[{"nodeType":"YulVariableDeclaration","src":"3131:12:54","value":{"kind":"number","nodeType":"YulLiteral","src":"3141:2:54","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3135:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3152:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3170:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"3181:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3166:3:54"},"nodeType":"YulFunctionCall","src":"3166:18:54"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3156:6:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3200:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"3211:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3193:6:54"},"nodeType":"YulFunctionCall","src":"3193:21:54"},"nodeType":"YulExpressionStatement","src":"3193:21:54"},{"nodeType":"YulVariableDeclaration","src":"3223:17:54","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3234:6:54"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3227:3:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3249:27:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3269:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3263:5:54"},"nodeType":"YulFunctionCall","src":"3263:13:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3253:6:54","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3292:6:54"},{"name":"length","nodeType":"YulIdentifier","src":"3300:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3285:6:54"},"nodeType":"YulFunctionCall","src":"3285:22:54"},"nodeType":"YulExpressionStatement","src":"3285:22:54"},{"nodeType":"YulAssignment","src":"3316:25:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3327:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3338:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3323:3:54"},"nodeType":"YulFunctionCall","src":"3323:18:54"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3316:3:54"}]},{"nodeType":"YulVariableDeclaration","src":"3350:29:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3368:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"3376:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3364:3:54"},"nodeType":"YulFunctionCall","src":"3364:15:54"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3354:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3388:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"3397:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3392:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3456:169:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3477:3:54"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3492:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3486:5:54"},"nodeType":"YulFunctionCall","src":"3486:13:54"},{"kind":"number","nodeType":"YulLiteral","src":"3501:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3482:3:54"},"nodeType":"YulFunctionCall","src":"3482:62:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3470:6:54"},"nodeType":"YulFunctionCall","src":"3470:75:54"},"nodeType":"YulExpressionStatement","src":"3470:75:54"},{"nodeType":"YulAssignment","src":"3558:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3569:3:54"},{"name":"_1","nodeType":"YulIdentifier","src":"3574:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3565:3:54"},"nodeType":"YulFunctionCall","src":"3565:12:54"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3558:3:54"}]},{"nodeType":"YulAssignment","src":"3590:25:54","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3604:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"3612:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3600:3:54"},"nodeType":"YulFunctionCall","src":"3600:15:54"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3590:6:54"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3418:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"3421:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3415:2:54"},"nodeType":"YulFunctionCall","src":"3415:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3429:18:54","statements":[{"nodeType":"YulAssignment","src":"3431:14:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3440:1:54"},{"kind":"number","nodeType":"YulLiteral","src":"3443:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3436:3:54"},"nodeType":"YulFunctionCall","src":"3436:9:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3431:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"3411:3:54","statements":[]},"src":"3407:218:54"},{"nodeType":"YulAssignment","src":"3634:11:54","value":{"name":"pos","nodeType":"YulIdentifier","src":"3642:3:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3634:4:54"}]}]},"name":"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3090:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3101:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3112:4:54","type":""}],"src":"2970:681:54"},{"body":{"nodeType":"YulBlock","src":"3757:76:54","statements":[{"nodeType":"YulAssignment","src":"3767:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3779:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3790:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3775:3:54"},"nodeType":"YulFunctionCall","src":"3775:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3767:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3809:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"3820:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3802:6:54"},"nodeType":"YulFunctionCall","src":"3802:25:54"},"nodeType":"YulExpressionStatement","src":"3802:25:54"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3726:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3737:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3748:4:54","type":""}],"src":"3656:177:54"},{"body":{"nodeType":"YulBlock","src":"3870:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3887:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3890:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3880:6:54"},"nodeType":"YulFunctionCall","src":"3880:88:54"},"nodeType":"YulExpressionStatement","src":"3880:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3984:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3987:4:54","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3977:6:54"},"nodeType":"YulFunctionCall","src":"3977:15:54"},"nodeType":"YulExpressionStatement","src":"3977:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4008:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4011:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4001:6:54"},"nodeType":"YulFunctionCall","src":"4001:15:54"},"nodeType":"YulExpressionStatement","src":"4001:15:54"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"3838:184:54"},{"body":{"nodeType":"YulBlock","src":"4076:230:54","statements":[{"body":{"nodeType":"YulBlock","src":"4106:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4127:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4130:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4120:6:54"},"nodeType":"YulFunctionCall","src":"4120:88:54"},"nodeType":"YulExpressionStatement","src":"4120:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4228:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4231:4:54","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4221:6:54"},"nodeType":"YulFunctionCall","src":"4221:15:54"},"nodeType":"YulExpressionStatement","src":"4221:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4256:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4259:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4249:6:54"},"nodeType":"YulFunctionCall","src":"4249:15:54"},"nodeType":"YulExpressionStatement","src":"4249:15:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4092:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"4095:1:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4089:2:54"},"nodeType":"YulFunctionCall","src":"4089:8:54"},"nodeType":"YulIf","src":"4086:188:54"},{"nodeType":"YulAssignment","src":"4283:17:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4295:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"4298:1:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4291:3:54"},"nodeType":"YulFunctionCall","src":"4291:9:54"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"4283:4:54"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4058:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"4061:1:54","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"4067:4:54","type":""}],"src":"4027:279:54"},{"body":{"nodeType":"YulBlock","src":"4343:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4360:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4363:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4353:6:54"},"nodeType":"YulFunctionCall","src":"4353:88:54"},"nodeType":"YulExpressionStatement","src":"4353:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4457:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4460:4:54","type":"","value":"0x31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4450:6:54"},"nodeType":"YulFunctionCall","src":"4450:15:54"},"nodeType":"YulExpressionStatement","src":"4450:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4481:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4484:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4474:6:54"},"nodeType":"YulFunctionCall","src":"4474:15:54"},"nodeType":"YulExpressionStatement","src":"4474:15:54"}]},"name":"panic_error_0x31","nodeType":"YulFunctionDefinition","src":"4311:184:54"},{"body":{"nodeType":"YulBlock","src":"4629:198:54","statements":[{"nodeType":"YulAssignment","src":"4639:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4651:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4662:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4647:3:54"},"nodeType":"YulFunctionCall","src":"4647:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4639:4:54"}]},{"nodeType":"YulVariableDeclaration","src":"4674:52:54","value":{"kind":"number","nodeType":"YulLiteral","src":"4684:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4678:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4742:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4757:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4765:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4753:3:54"},"nodeType":"YulFunctionCall","src":"4753:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4735:6:54"},"nodeType":"YulFunctionCall","src":"4735:34:54"},"nodeType":"YulExpressionStatement","src":"4735:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4789:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4800:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4785:3:54"},"nodeType":"YulFunctionCall","src":"4785:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"4809:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4817:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4805:3:54"},"nodeType":"YulFunctionCall","src":"4805:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4778:6:54"},"nodeType":"YulFunctionCall","src":"4778:43:54"},"nodeType":"YulExpressionStatement","src":"4778:43:54"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4590:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4601:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4609:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4620:4:54","type":""}],"src":"4500:327:54"},{"body":{"nodeType":"YulBlock","src":"5033:328:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5050:3:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5059:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5067:66:54","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5055:3:54"},"nodeType":"YulFunctionCall","src":"5055:79:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5043:6:54"},"nodeType":"YulFunctionCall","src":"5043:92:54"},"nodeType":"YulExpressionStatement","src":"5043:92:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5155:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5160:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5151:3:54"},"nodeType":"YulFunctionCall","src":"5151:11:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5172:2:54","type":"","value":"96"},{"name":"value1","nodeType":"YulIdentifier","src":"5176:6:54"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5168:3:54"},"nodeType":"YulFunctionCall","src":"5168:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"5185:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5164:3:54"},"nodeType":"YulFunctionCall","src":"5164:88:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5144:6:54"},"nodeType":"YulFunctionCall","src":"5144:109:54"},"nodeType":"YulExpressionStatement","src":"5144:109:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5273:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5278:2:54","type":"","value":"21"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5269:3:54"},"nodeType":"YulFunctionCall","src":"5269:12:54"},{"name":"value2","nodeType":"YulIdentifier","src":"5283:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5262:6:54"},"nodeType":"YulFunctionCall","src":"5262:28:54"},"nodeType":"YulExpressionStatement","src":"5262:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5310:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5315:2:54","type":"","value":"53"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5306:3:54"},"nodeType":"YulFunctionCall","src":"5306:12:54"},{"name":"value3","nodeType":"YulIdentifier","src":"5320:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5299:6:54"},"nodeType":"YulFunctionCall","src":"5299:28:54"},"nodeType":"YulExpressionStatement","src":"5299:28:54"},{"nodeType":"YulAssignment","src":"5336:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5347:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5352:2:54","type":"","value":"85"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5343:3:54"},"nodeType":"YulFunctionCall","src":"5343:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5336:3:54"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4985:3:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4990:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4998:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5006:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5014:6:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5025:3:54","type":""}],"src":"4832:529:54"},{"body":{"nodeType":"YulBlock","src":"5495:168:54","statements":[{"nodeType":"YulAssignment","src":"5505:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5517:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5528:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5513:3:54"},"nodeType":"YulFunctionCall","src":"5513:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5505:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5547:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5562:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5570:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5558:3:54"},"nodeType":"YulFunctionCall","src":"5558:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5540:6:54"},"nodeType":"YulFunctionCall","src":"5540:74:54"},"nodeType":"YulExpressionStatement","src":"5540:74:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5634:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5645:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5630:3:54"},"nodeType":"YulFunctionCall","src":"5630:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"5650:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5623:6:54"},"nodeType":"YulFunctionCall","src":"5623:34:54"},"nodeType":"YulExpressionStatement","src":"5623:34:54"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5456:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5467:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5475:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5486:4:54","type":""}],"src":"5366:297:54"}]},"contents":"{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { 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        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_addresst_addresst_bool(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value2 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_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_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\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, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\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 panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        diff := sub(x, y)\n    }\n    function panic_error_0x31()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x31)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, 0xff00000000000000000000000000000000000000000000000000000000000000))\n        mstore(add(pos, 1), and(shl(96, value1), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n        mstore(add(pos, 21), value2)\n        mstore(add(pos, 53), value3)\n        end := add(pos, 85)\n    }\n    function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2871":[{"length":32,"start":306},{"length":32,"start":636},{"length":32,"start":3142}],"2873":[{"length":32,"start":341},{"length":32,"start":761},{"length":32,"start":3210}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636d4354211161008c5780637b37e561116100665780637b37e5611461035f5780638b9e028b14610372578063906c87cc1461039257806393790f44146103a557600080fd5b80636d435421146101fe5780636e9bfd9f14610211578063794593bc1461034c57600080fd5b806314afd79e116100c857806314afd79e1461019457806333bc8572146101a75780634e3f9580146101ca57806351710e45146101eb57600080fd5b8063027cc764146100ef5780630a96ad391461012c57806313ad9cab1461017f575b600080fd5b6101026100fd366004611165565b6103b8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b604080517f000000000000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000602082015201610123565b61019261018d36600461118f565b6104a6565b005b6101026101a23660046111db565b610797565b6101ba6101b53660046111fd565b6107d1565b6040519015158152602001610123565b6101dd6101d83660046111db565b610819565b604051908152602001610123565b6101926101f93660046111db565b610850565b61019261020c3660046111fd565b6109d2565b61032061021f366004611230565b6040517fff0000000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021820152603581018290527f000000000000000000000000000000000000000000000000000000000000000060558201526000908190607501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209373ffffffffffffffffffffffffffffffffffffffff85163f7f0000000000000000000000000000000000000000000000000000000000000000149350915050565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352901515602083015201610123565b61010261035a366004611249565b610b5d565b61019261036d3660046111db565b610e1f565b6103856103803660046111db565b610f1b565b604051610123919061126c565b6101026103a03660046111db565b610fb5565b6101dd6103b33660046111db565b610fef565b60006103c383611051565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902060030154808310610442576040517f6ceb340b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208190526040902060030180548490811061047c5761047c6112c6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16949350505050565b6104af836110b0565b6040517fc4e8fcb500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152821515602483015284169063c4e8fcb590604401600060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff83811660009081526020818152604080832093861683526004840190915290205480151583801561057c575080155b156105f1576003830180546001810182556000828152602080822090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16908117909155925492815260048601909152604090205561078f565b831580156105fc5750805b1561078f5760038301547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830190600090610639906001906112f5565b90508181146106f9576000856003018281548110610659576106596112c6565b60009182526020909120015460038701805473ffffffffffffffffffffffffffffffffffffffff9092169250829185908110610697576106976112c6565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260048701909152604090208490555b8460030180548061070c5761070c611333565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff89168252600487019052604081205550505b505050505050565b60006107a282611051565b5073ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020600101541690565b60006107dc83611051565b5073ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825260049092019091522054151590565b600061082482611051565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090206003015490565b61085981611051565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152602081905260409020600201541633146108d4576040517f88c3a11500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610439565b6040516000907f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da908290a273ffffffffffffffffffffffffffffffffffffffff8082166000818152602081905260408082206002810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560010154905133949190911692917fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec91a473ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b6109db826110b0565b73ffffffffffffffffffffffffffffffffffffffff8116610a40576040517fa388d26300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610439565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260208190526040902060020154811690821603610ac6576040517fcbc080ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152604401610439565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da90600090a273ffffffffffffffffffffffffffffffffffffffff918216600090815260208190526040902060020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600073ffffffffffffffffffffffffffffffffffffffff8216610bac576040517f99faaa0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606083901c3314610be9576040517fcb6e534400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fff0000000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021820152603581018490527f000000000000000000000000000000000000000000000000000000000000000060558201526075016040516020818303038152906040528051906020012060001c90507f00000000000000000000000000000000000000000000000000000000000000008173ffffffffffffffffffffffffffffffffffffffff163f03610d10576040517f6328ccb200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610439565b82604051610d1d90611134565b8190604051809103906000f5905080158015610d3d573d6000803e3d6000fd5b505073ffffffffffffffffffffffffffffffffffffffff818116600081815260208181526040918290206001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001695881695909517909455868455815192835282018690527f4397af6128d529b8ae0442f99db1296d5136062597a15bbc61c1b2a6431a7d15910160405180910390a160405173ffffffffffffffffffffffffffffffffffffffff808516916000918516907fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec908390a45092915050565b610e28816110b0565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526020819052604090206002015416610ea1576040517f6b01361600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610439565b6040516000907f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da908290a273ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902060020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6060610f2682611051565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081815260409182902060030180548351818402810184019094528084529091830182828015610fa957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610f7e575b50505050509050919050565b6000610fc082611051565b5073ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020600201541690565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020548061104c576040517f4ca8209000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020546110ad576040517f4ca8209000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6110b981611051565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152602081905260409020600101541633146110ad576040517fd4ed9a1700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610439565b610de48061136383390190565b803573ffffffffffffffffffffffffffffffffffffffff8116811461104c57600080fd5b6000806040838503121561117857600080fd5b61118183611141565b946020939093013593505050565b6000806000606084860312156111a457600080fd5b6111ad84611141565b92506111bb60208501611141565b9150604084013580151581146111d057600080fd5b809150509250925092565b6000602082840312156111ed57600080fd5b6111f682611141565b9392505050565b6000806040838503121561121057600080fd5b61121983611141565b915061122760208401611141565b90509250929050565b60006020828403121561124257600080fd5b5035919050565b6000806040838503121561125c57600080fd5b8235915061122760208401611141565b6020808252825182820181905260009190848201906040850190845b818110156112ba57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611288565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008282101561132e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe60a060405234801561001057600080fd5b5033608052608051610db461003060003960006102a40152610db46000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100995780638df25d92146100ac578063c4e8fcb5146100bf575b600080fd5b61006461005f366004610b4f565b6100d4565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b6100646100a7366004610bd6565b610175565b6100646100ba366004610c42565b610217565b6100d26100cd366004610ca1565b61028c565b005b6000336000526000602052604060002054610117577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8160005b8181101561014b5761014385858381811061013857610138610cdd565b905060c0020161040e565b60010161011b565b507f4ce34aa200000000000000000000000000000000000000000000000000000000949350505050565b60003360005260006020526040600020546101b8577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b8360005b818110156101e1576101d987878381811061013857610138610cdd565b6001016101bc565b506101ec84846105ac565b507f899e104c0000000000000000000000000000000000000000000000000000000095945050505050565b600033600052600060205260406000205461025a577f93daadf2000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b61026483836105ac565b507f8df25d920000000000000000000000000000000000000000000000000000000092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102fb576040517f6d5769be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481151560ff909116151503610386576040517f924e341e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152811515602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a25050565b600161041d6020830183610d3b565b600381111561042e5761042e610d0c565b03610473576104706104466040830160208401610d63565b6104566060840160408501610d63565b6104666080850160608601610d63565b8460a00135610755565b50565b60026104826020830183610d3b565b600381111561049357610493610d0c565b03610513578060a001356001146104d6576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104706104e96040830160208401610d63565b6104f96060840160408501610d63565b6105096080850160608601610d63565b84608001356108c2565b60036105226020830183610d3b565b600381111561053357610533610d0c565b0361057a5761047061054b6040830160208401610d63565b61055b6060840160408501610d63565b61056b6080850160608601610d63565b84608001358560a001356109d1565b6040517f7932f1fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082807f2eb2c2d60000000000000000000000000000000000000000000000000000000060205260005b8381101561074857823582018035803b610618577f5f15d672000000000000000000000000000000000000000000000000000000006000528060045260246000fd5b60a08201356020810260c0018060808501351460a06060860135141681850135831416159050801561066e577feba2084c0000000000000000000000000000000000000000000000000000000060005260046000fd5b506020860195506080602084016024376040810260400190508060a00160a45260008160c401528060c4018160a0850160c4376000808260206000875af1935083610739573d156106fe576020601f3d010491506020810482600302818411156106e657818403600302610200838002868002030401015b5a6020820110156106fb573d6000803e3d6000fd5b50505b7fafc445e2000000000000000000000000000000000000000000000000000000006000528260045260c0606452608451602001608452806000fd5b505050506001810190506105d6565b5050505060806040525050565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d151581166108b25780873b1515166108b25780610884578161084a573d1561080b576020601f3d01046020840481600302818311156107f257818303600302610200838002858002030401015b5a602082011015610807573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b833b6108f6577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af1806109c2573d15610983576020601f3d010460208304816003028183111561096a57818303600302610200838002858002030401015b5a60208201101561097f573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b610a05577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af180610ae7573d15610aa9576020601f3d0104602086048160030281831115610a9057818303600302610200838002858002030401015b5a602082011015610aa5573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f840112610b1557600080fd5b50813567ffffffffffffffff811115610b2d57600080fd5b60208301915083602060c083028501011115610b4857600080fd5b9250929050565b60008060208385031215610b6257600080fd5b823567ffffffffffffffff811115610b7957600080fd5b610b8585828601610b03565b90969095509350505050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b6020830191508360208260051b8501011115610b4857600080fd5b60008060008060408587031215610bec57600080fd5b843567ffffffffffffffff80821115610c0457600080fd5b610c1088838901610b03565b90965094506020870135915080821115610c2957600080fd5b50610c3687828801610b91565b95989497509550505050565b60008060208385031215610c5557600080fd5b823567ffffffffffffffff811115610c6c57600080fd5b610b8585828601610b91565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c9c57600080fd5b919050565b60008060408385031215610cb457600080fd5b610cbd83610c78565b915060208301358015158114610cd257600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215610d4d57600080fd5b813560048110610d5c57600080fd5b9392505050565b600060208284031215610d7557600080fd5b610d5c82610c7856fea26469706673582212209cadd638170dc51bd1bcdf7a749c70a4b43d82a57f073a9e1a087a48e2f0ad0164736f6c634300080e0033a26469706673582212203e51fab416ef4d26ca77f6dc3a2fd30ecbe956e8141afc27f12ec350c563174d64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D435421 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x7B37E561 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x7B37E561 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x8B9E028B EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0x906C87CC EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x93790F44 EQ PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6D435421 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x6E9BFD9F EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x794593BC EQ PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AFD79E GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x14AFD79E EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x33BC8572 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E3F9580 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0x51710E45 EQ PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27CC764 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0xA96AD39 EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0x13AD9CAB EQ PUSH2 0x17F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 DUP2 MSTORE PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x123 JUMP JUMPDEST PUSH2 0x192 PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0x118F JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x102 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x1BA PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x11FD JUMP JUMPDEST PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x123 JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x1D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x123 JUMP JUMPDEST PUSH2 0x192 PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0x850 JUMP JUMPDEST PUSH2 0x192 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x11FD JUMP JUMPDEST PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0x320 PUSH2 0x21F CALLDATASIZE PUSH1 0x4 PUSH2 0x1230 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x21 DUP3 ADD MSTORE PUSH1 0x35 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x55 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x75 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODEHASH PUSH32 0x0 EQ SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x123 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x1249 JUMP JUMPDEST PUSH2 0xB5D JUMP JUMPDEST PUSH2 0x192 PUSH2 0x36D CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0xE1F JUMP JUMPDEST PUSH2 0x385 PUSH2 0x380 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x102 PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x11DB JUMP JUMPDEST PUSH2 0xFEF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C3 DUP4 PUSH2 0x1051 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP1 DUP4 LT PUSH2 0x442 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6CEB340B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD DUP5 SWAP1 DUP2 LT PUSH2 0x47C JUMPI PUSH2 0x47C PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4AF DUP4 PUSH2 0x10B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC4E8FCB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 ISZERO ISZERO PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xC4E8FCB5 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE PUSH1 0x4 DUP5 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP1 ISZERO ISZERO DUP4 DUP1 ISZERO PUSH2 0x57C JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x5F1 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP3 SLOAD SWAP3 DUP2 MSTORE PUSH1 0x4 DUP7 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x78F JUMP JUMPDEST DUP4 ISZERO DUP1 ISZERO PUSH2 0x5FC JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x78F JUMPI PUSH1 0x3 DUP4 ADD SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x639 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x12F5 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x6F9 JUMPI PUSH1 0x0 DUP6 PUSH1 0x3 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x659 JUMPI PUSH2 0x659 PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x3 DUP8 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x697 JUMPI PUSH2 0x697 PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x4 DUP8 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE JUMPDEST DUP5 PUSH1 0x3 ADD DUP1 SLOAD DUP1 PUSH2 0x70C JUMPI PUSH2 0x70C PUSH2 0x1333 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP3 MSTORE PUSH1 0x4 DUP8 ADD SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A2 DUP3 PUSH2 0x1051 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP4 PUSH2 0x1051 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE PUSH1 0x4 SWAP1 SWAP3 ADD SWAP1 SWAP2 MSTORE KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x824 DUP3 PUSH2 0x1051 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x859 DUP2 PUSH2 0x1051 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND CALLER EQ PUSH2 0x8D4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x88C3A11500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH32 0x11A3CF439FB225BFE74225716B6774765670EC1060E3796802E62139D69974DA SWAP1 DUP3 SWAP1 LOG2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE PUSH1 0x1 ADD SLOAD SWAP1 MLOAD CALLER SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 PUSH32 0xC8894F26F396CE8C004245C8B7CD1B92103A6E4302FCBAB883987149AC01B7EC SWAP2 LOG4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND CALLER OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x9DB DUP3 PUSH2 0x10B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xA40 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA388D26300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD DUP2 AND SWAP1 DUP3 AND SUB PUSH2 0xAC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCBC080CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x11A3CF439FB225BFE74225716B6774765670EC1060E3796802E62139D69974DA SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xBAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x99FAAA0400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR CALLER EQ PUSH2 0xBE9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCB6E534400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x21 DUP3 ADD MSTORE PUSH1 0x35 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x55 DUP3 ADD MSTORE PUSH1 0x75 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH32 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODEHASH SUB PUSH2 0xD10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6328CCB200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0xD1D SWAP1 PUSH2 0x1134 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0xD3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP6 DUP9 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE DUP7 DUP5 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD DUP7 SWAP1 MSTORE PUSH32 0x4397AF6128D529B8AE0442F99DB1296D5136062597A15BBC61C1B2A6431A7D15 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP2 PUSH1 0x0 SWAP2 DUP6 AND SWAP1 PUSH32 0xC8894F26F396CE8C004245C8B7CD1B92103A6E4302FCBAB883987149AC01B7EC SWAP1 DUP4 SWAP1 LOG4 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE28 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND PUSH2 0xEA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6B01361600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH32 0x11A3CF439FB225BFE74225716B6774765670EC1060E3796802E62139D69974DA SWAP1 DUP3 SWAP1 LOG2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF26 DUP3 PUSH2 0x1051 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF7E JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC0 DUP3 PUSH2 0x1051 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x104C JUMPI PUSH1 0x40 MLOAD PUSH32 0x4CA8209000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x10AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x4CA8209000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x10B9 DUP2 PUSH2 0x1051 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND CALLER EQ PUSH2 0x10AD JUMPI PUSH1 0x40 MLOAD PUSH32 0xD4ED9A1700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x439 JUMP JUMPDEST PUSH2 0xDE4 DUP1 PUSH2 0x1363 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x104C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1181 DUP4 PUSH2 0x1141 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11AD DUP5 PUSH2 0x1141 JUMP JUMPDEST SWAP3 POP PUSH2 0x11BB PUSH1 0x20 DUP6 ADD PUSH2 0x1141 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11F6 DUP3 PUSH2 0x1141 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1219 DUP4 PUSH2 0x1141 JUMP JUMPDEST SWAP2 POP PUSH2 0x1227 PUSH1 0x20 DUP5 ADD PUSH2 0x1141 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x1227 PUSH1 0x20 DUP5 ADD PUSH2 0x1141 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x12BA JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1288 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x132E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0xDB4 PUSH2 0x30 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x2A4 ADD MSTORE PUSH2 0xDB4 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0xB4F JUMP JUMPDEST PUSH2 0xD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xBA CALLDATASIZE PUSH1 0x4 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH2 0xD2 PUSH2 0xCD CALLDATASIZE PUSH1 0x4 PUSH2 0xCA1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x117 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14B JUMPI PUSH2 0x143 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x11B JUMP JUMPDEST POP PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1B8 JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH2 0x1D9 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0xCDD JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BC JUMP JUMPDEST POP PUSH2 0x1EC DUP5 DUP5 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x899E104C00000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x25A JUMPI PUSH32 0x93DAADF200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x264 DUP4 DUP4 PUSH2 0x5AC JUMP JUMPDEST POP PUSH32 0x8DF25D9200000000000000000000000000000000000000000000000000000000 SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x2FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x6D5769BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 ISZERO ISZERO PUSH1 0xFF SWAP1 SWAP2 AND ISZERO ISZERO SUB PUSH2 0x386 JUMPI PUSH1 0x40 MLOAD PUSH32 0x924E341E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP2 ISZERO ISZERO PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x41D PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x42E JUMPI PUSH2 0x42E PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x473 JUMPI PUSH2 0x470 PUSH2 0x446 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x456 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x466 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x755 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x482 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x493 JUMPI PUSH2 0x493 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x513 JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x4D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x470 PUSH2 0x4E9 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x4F9 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x509 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x8C2 JUMP JUMPDEST PUSH1 0x3 PUSH2 0x522 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x533 JUMPI PUSH2 0x533 PUSH2 0xD0C JUMP JUMPDEST SUB PUSH2 0x57A JUMPI PUSH2 0x470 PUSH2 0x54B PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x55B PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xD63 JUMP JUMPDEST PUSH2 0x56B PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xD63 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7932F1FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x748 JUMPI DUP3 CALLDATALOAD DUP3 ADD DUP1 CALLDATALOAD DUP1 EXTCODESIZE PUSH2 0x618 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP2 MUL PUSH1 0xC0 ADD DUP1 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP2 DUP6 ADD CALLDATALOAD DUP4 EQ AND ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x66E JUMPI PUSH32 0xEBA2084C00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x20 DUP7 ADD SWAP6 POP PUSH1 0x80 PUSH1 0x20 DUP5 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD SWAP1 POP DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH1 0xC4 ADD MSTORE DUP1 PUSH1 0xC4 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP8 GAS CALL SWAP4 POP DUP4 PUSH2 0x739 JUMPI RETURNDATASIZE ISZERO PUSH2 0x6FE JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x6E6 JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH32 0xAFC445E200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP3 PUSH1 0x4 MSTORE PUSH1 0xC0 PUSH1 0x64 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE DUP1 PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x8B2 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x8B2 JUMPI DUP1 PUSH2 0x884 JUMPI DUP2 PUSH2 0x84A JUMPI RETURNDATASIZE ISZERO PUSH2 0x80B JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7F2 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x807 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x8F6 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x9C2 JUMPI RETURNDATASIZE ISZERO PUSH2 0x983 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x96A JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x97F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0xA05 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0xAE7 JUMPI RETURNDATASIZE ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0xA90 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0xAA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xB15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC10 DUP9 DUP4 DUP10 ADD PUSH2 0xB03 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC36 DUP8 DUP3 DUP9 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB85 DUP6 DUP3 DUP7 ADD PUSH2 0xB91 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCBD DUP4 PUSH2 0xC78 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xD5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5C DUP3 PUSH2 0xC78 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 0xAD 0xD6 CODESIZE OR 0xD 0xC5 SHL 0xD1 0xBC 0xDF PUSH27 0x749C70A4B43D82A57F073A9E1A087A48E2F0AD0164736F6C634300 ADDMOD 0xE STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY MLOAD STATICCALL 0xB4 AND 0xEF 0x4D 0x26 0xCA PUSH24 0xF6DC3A2FD30ECBE956E8141AFC27F12EC350C563174D6473 PUSH16 0x6C634300080E00330000000000000000 ","sourceMap":"539:19422:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16983:668;;;;;;:::i;:::-;;:::i;:::-;;;650:42:54;638:55;;;620:74;;608:2;593:18;16983:668:16;;;;;;;;18476:398;;;;18721:27;879:25:54;;18841:26:16;935:2:54;920:18;;913:34;852:18;18476:398:16;705:248:54;5164:2980:16;;;;;;:::i;:::-;;:::i;:::-;;11991:327;;;;;;:::i;:::-;;:::i;15466:392::-;;;;;;:::i;:::-;;:::i;:::-;;;2005:14:54;;1998:22;1980:41;;1968:2;1953:18;15466:392:16;1840:187:54;16134:374:16;;;;;;:::i;:::-;;:::i;:::-;;;2178:25:54;;;2166:2;2151:18;16134:374:16;2032:177:54;10747:1009:16;;;;;;:::i;:::-;;:::i;8637:923::-;;;;;;:::i;:::-;;:::i;13480:784::-;;;;;;:::i;:::-;13825:224;;13871:12;13825:224;;;5043:92:54;5185:66;13921:4:16;5172:2:54;5168:15;5164:88;5151:11;;;5144:109;5269:12;;;5262:28;;;13996:27:16;5306:12:54;;;5299:28;13584:15:16;;;;5343:12:54;;13825:224:16;;;;;;;;;;;;;13790:281;;13825:224;13790:281;;;;;14210:16;;;;14230:26;14210:46;;-1:-1:-1;13480:784:16;-1:-1:-1;;13480:784:16;;;;;2597:42:54;2585:55;;;2567:74;;2684:14;;2677:22;2672:2;2657:18;;2650:50;2540:18;13480:784:16;2399:307:54;2311:2126:16;;;;;;:::i;:::-;;:::i;9824:648::-;;;;;;:::i;:::-;;:::i;18026:356::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14735:374::-;;;;;;:::i;:::-;;:::i;12637:379::-;;;;;;:::i;:::-;;:::i;16983:668::-;17106:15;17192:29;17213:7;17192:20;:29::i;:::-;17334:18;;;17310:21;17334:18;;;;;;;;;;:27;;:34;17442:29;;;17438:93;;17494:26;;;;;650:42:54;638:55;;17494:26:16;;;620:74:54;593:18;;17494:26:16;;;;;;;;17438:93;17603:18;;;:9;:18;;;;;;;;;;:27;;:41;;17631:12;;17603:41;;;;;;:::i;:::-;;;;;;;;;;;;;;16983:668;-1:-1:-1;;;;16983:668:16:o;5164:2980::-;5370:36;5398:7;5370:27;:36::i;:::-;5468:56;;;;;:39;2585:55:54;;;5468:56:16;;;2567:74:54;2684:14;;2677:22;2657:18;;;2650:50;5468:39:16;;;;;2540:18:54;;5468:56:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;5660:18:16;;;;5614:43;5660:18;;;;;;;;;;;5814:48;;;;;:39;;;:48;;;;;;5989:24;;;6104:6;:32;;;;;6115:21;6114:22;6104:32;6100:2038;;;6222:26;;;:40;;;;;;;-1:-1:-1;6222:40:16;;;;;;;;;;;;;;;;;;;;;;;6425:33;;6356:48;;;:39;;;:48;;;;;;:116;6100:2038;;;6494:6;6493:7;:32;;;;;6504:21;6493:32;6489:1649;;;7084:26;;;:33;6924:23;;;;6700:27;;7084:37;;6946:1;;7084:37;:::i;:::-;7056:65;;7239:19;7218:17;:40;7214:640;;7358:20;7403:17;:26;;7430:17;7403:45;;;;;;;;:::i;:::-;;;;;;;;;;;7565:26;;;:47;;7403:45;;;;;-1:-1:-1;7403:45:16;;7592:19;;7565:47;;;;;;:::i;:::-;;;;;;;;;;;;;:62;;;;;;;;;;;7724:53;;;;;;:39;;;:53;;;;;;:115;;;7214:640;7948:17;:26;;:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;8079:48;;;;:39;;;:48;;;;;8072:55;-1:-1:-1;;6489:1649:16;5282:2862;;;5164:2980;;;:::o;11991:327::-;12089:13;12173:29;12194:7;12173:20;:29::i;:::-;-1:-1:-1;12287:18:16;;;;:9;:18;;;;;;;;;;:24;;;;;11991:327::o;15466:392::-;15590:11;15672:29;15693:7;15672:20;:29::i;:::-;-1:-1:-1;15797:18:16;;;;:9;:18;;;;;;;;;;;:49;;;;;;:40;;;;:49;;;;;:54;;;15466:392::o;16134:374::-;16241:21;16333:29;16354:7;16333:20;:29::i;:::-;-1:-1:-1;16467:18:16;;:9;:18;;;;;;;;;;:27;;:34;;16134:374::o;10747:1009::-;10872:29;10893:7;10872:20;:29::i;:::-;11008:18;;;;:9;:18;;;;;;;;;;:33;;;;10994:10;:47;10990:200;;11142:37;;;;;650:42:54;638:55;;11142:37:16;;;620:74:54;593:18;;11142:37:16;474:226:54;10990:200:16;11284:33;;11314:1;;11284:33;;11314:1;;11284:33;11395:18;;;;11439:1;11395:18;;;;;;;;;;;:33;;;:46;;;;;;;11588:24;;11533:113;;11626:10;;11588:24;;;;;11395:18;11533:113;;;11712:18;;:9;:18;;;;;;;;;;:24;;:37;;;;11739:10;11712:37;;;10747:1009::o;8637:923::-;8834:36;8862:7;8834:27;:36::i;:::-;8954:31;;;8950:108;;9008:39;;;;;650:42:54;638:55;;9008:39:16;;;620:74:54;593:18;;9008:39:16;474:226:54;8950:108:16;9155:18;;;;:9;:18;;;;;;;;;;:33;;;;;9134:54;;;;9130:147;;9211:55;;;;;4684:42:54;4753:15;;;9211:55:16;;;4735:34:54;4805:15;;4785:18;;;4778:43;4647:18;;9211:55:16;4500:327:54;9130:147:16;9371:40;;;;;;;;;;;9500:18;;;;:9;:18;;;;;;;;;;:33;;:53;;;;;;;;;;;8637:923::o;2311:2126::-;2427:15;2521:26;;;2517:85;;2570:21;;;;;;;;;;;;;;2517:85;2703:28;;;;2736:10;2695:51;2691:181;;2845:16;;;;;;;;;;;;;;2691:181;3079:224;;3125:12;3079:224;;;5043:92:54;5185:66;3175:4:16;5172:2:54;5168:15;5164:88;5151:11;;;5144:109;5269:12;;;5262:28;;;3250:27:16;5306:12:54;;;5299:28;5343:12;;3079:224:16;;;;;;;;;;;;3044:281;;;;;;3015:328;;2959:408;;3482:26;3462:7;:16;;;:46;3458:193;;3611:29;;;;;650:42:54;638:55;;3611:29:16;;;620:74:54;593:18;;3611:29:16;474:226:54;3458:193:16;3757:10;3738:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3899:18:16;;;;3853:43;3899:18;;;;;;;;;;;;3999:23;;;:38;;;;;;;;;;;;;;4128:34;;;4250:31;;5540:74:54;;;5630:18;;5623:34;;;4250:31:16;;5513:18:54;4250:31:16;;;;;;;4375:55;;;;;;;4413:1;;4375:55;;;;;4413:1;;4375:55;2448:1989;2311:2126;;;;:::o;9824:648::-;9980:36;10008:7;9980:27;:36::i;:::-;10096:47;:18;;;10141:1;10096:18;;;;;;;;;;:33;;;;10092:122;;10166:37;;;;;650:42:54;638:55;;10166:37:16;;;620:74:54;593:18;;10166:37:16;474:226:54;10092:122:16;10308:33;;10338:1;;10308:33;;10338:1;;10308:33;10419:18;;10463:1;10419:18;;;;;;;;;;:33;;:46;;;;;;9824:648::o;18026:356::-;18128:25;18224:29;18245:7;18224:20;:29::i;:::-;18348:18;;;:9;:18;;;;;;;;;;;;:27;;18337:38;;;;;;;;;;;;;;;;;18348:27;;18337:38;;18348:27;18337:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18026:356;;;:::o;14735:374::-;14843:22;14936:29;14957:7;14936:20;:29::i;:::-;-1:-1:-1;15069:18:16;;;;:9;:18;;;;;;;;;;:33;;;;;14735:374::o;12637:379::-;12855:18;;;12734;12855;;;;;;;;;;:22;;12937:73;;12988:11;;;;;;;;;;;;;;12937:73;12637:379;;;:::o;19671:288::-;19819:18;;;19853:1;19819:18;;;;;;;;;;:22;19815:138;;19931:11;;;;;;;;;;;;;;19815:138;19671:288;:::o;19075:423::-;19207:29;19228:7;19207:20;:29::i;:::-;19341:18;;;;:9;:18;;;;;;;;;;:24;;;;19327:10;:38;19323:169;;19456:25;;;;;650:42:54;638:55;;19456:25:16;;;620:74:54;593:18;;19456:25:16;474:226:54;-1:-1:-1;;;;;;;;:::o;14:196:54:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;215:254;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:54:o;958:421::-;1032:6;1040;1048;1101:2;1089:9;1080:7;1076:23;1072:32;1069:52;;;1117:1;1114;1107:12;1069:52;1140:29;1159:9;1140:29;:::i;:::-;1130:39;;1188:38;1222:2;1211:9;1207:18;1188:38;:::i;:::-;1178:48;;1276:2;1265:9;1261:18;1248:32;1323:5;1316:13;1309:21;1302:5;1299:32;1289:60;;1345:1;1342;1335:12;1289:60;1368:5;1358:15;;;958:421;;;;;:::o;1384:186::-;1443:6;1496:2;1484:9;1475:7;1471:23;1467:32;1464:52;;;1512:1;1509;1502:12;1464:52;1535:29;1554:9;1535:29;:::i;:::-;1525:39;1384:186;-1:-1:-1;;;1384:186:54:o;1575:260::-;1643:6;1651;1704:2;1692:9;1683:7;1679:23;1675:32;1672:52;;;1720:1;1717;1710:12;1672:52;1743:29;1762:9;1743:29;:::i;:::-;1733:39;;1791:38;1825:2;1814:9;1810:18;1791:38;:::i;:::-;1781:48;;1575:260;;;;;:::o;2214:180::-;2273:6;2326:2;2314:9;2305:7;2301:23;2297:32;2294:52;;;2342:1;2339;2332:12;2294:52;-1:-1:-1;2365:23:54;;2214:180;-1:-1:-1;2214:180:54:o;2711:254::-;2779:6;2787;2840:2;2828:9;2819:7;2815:23;2811:32;2808:52;;;2856:1;2853;2846:12;2808:52;2892:9;2879:23;2869:33;;2921:38;2955:2;2944:9;2940:18;2921:38;:::i;2970:681::-;3141:2;3193:21;;;3263:13;;3166:18;;;3285:22;;;3112:4;;3141:2;3364:15;;;;3338:2;3323:18;;;3112:4;3407:218;3421:6;3418:1;3415:13;3407:218;;;3486:13;;3501:42;3482:62;3470:75;;3600:15;;;;3565:12;;;;3443:1;3436:9;3407:218;;;-1:-1:-1;3642:3:54;;2970:681;-1:-1:-1;;;;;;2970:681:54:o;3838:184::-;3890:77;3887:1;3880:88;3987:4;3984:1;3977:15;4011:4;4008:1;4001:15;4027:279;4067:4;4095:1;4092;4089:8;4086:188;;;4130:77;4127:1;4120:88;4231:4;4228:1;4221:15;4259:4;4256:1;4249:15;4086:188;-1:-1:-1;4291:9:54;;4027:279::o;4311:184::-;4363:77;4360:1;4353:88;4460:4;4457:1;4450:15;4484:4;4481:1;4474:15"},"gasEstimates":{"creation":{"codeDepositCost":"1714400","executionCost":"infinite","totalCost":"infinite"},"external":{"acceptOwnership(address)":"58589","cancelOwnershipTransfer(address)":"infinite","createConduit(bytes32,address)":"infinite","getChannel(address,uint256)":"9223","getChannelStatus(address,address)":"infinite","getChannels(address)":"infinite","getConduit(bytes32)":"infinite","getConduitCodeHashes()":"infinite","getKey(address)":"infinite","getPotentialOwner(address)":"4836","getTotalChannels(address)":"4830","ownerOf(address)":"4793","transferOwnership(address,address)":"infinite","updateChannel(address,address,bool)":"infinite"},"internal":{"_assertCallerIsConduitOwner(address)":"infinite","_assertConduitExists(address)":"infinite"}},"methodIdentifiers":{"acceptOwnership(address)":"51710e45","cancelOwnershipTransfer(address)":"7b37e561","createConduit(bytes32,address)":"794593bc","getChannel(address,uint256)":"027cc764","getChannelStatus(address,address)":"33bc8572","getChannels(address)":"8b9e028b","getConduit(bytes32)":"6e9bfd9f","getConduitCodeHashes()":"0a96ad39","getKey(address)":"93790f44","getPotentialOwner(address)":"906c87cc","getTotalChannels(address)":"4e3f9580","ownerOf(address)":"14afd79e","transferOwnership(address,address)":"6d435421","updateChannel(address,address,bool)":"13ad9cab"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"CallerIsNotNewPotentialOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"CallerIsNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ChannelOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ConduitAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"NewPotentialOwnerAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"NewPotentialOwnerIsZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoConduit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"NoPotentialOwnerCurrentlySet\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"name\":\"NewConduit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"PotentialOwnerUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"cancelOwnershipTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"createConduit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"channelIndex\",\"type\":\"uint256\"}],\"name\":\"getChannel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"name\":\"getChannelStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getChannels\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"channels\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"name\":\"getConduit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConduitCodeHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"creationCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"runtimeCodeHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getPotentialOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"potentialOwner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getTotalChannels\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalChannels\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"updateChannel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"CallerIsNotNewPotentialOwner(address)\":[{\"details\":\"Revert with an error when attempting to claim ownership of a conduit      with a caller that is not the current potential owner for the      conduit in question.\"}],\"CallerIsNotOwner(address)\":[{\"details\":\"Revert with an error when attempting to update channels or transfer      ownership of a conduit when the caller is not the owner of the      conduit in question.\"}],\"ChannelOutOfRange(address)\":[{\"details\":\"Revert with an error when attempting to retrieve a channel using an      index that is out of range.\"}],\"ConduitAlreadyExists(address)\":[{\"details\":\"Revert with an error when attempting to create a conduit that      already exists.\"}],\"InvalidCreator()\":[{\"details\":\"Revert with an error when attempting to create a new conduit using a      conduit key where the first twenty bytes of the key do not match the      address of the caller.\"}],\"InvalidInitialOwner()\":[{\"details\":\"Revert with an error when attempting to create a new conduit when no      initial owner address is supplied.\"}],\"NewPotentialOwnerAlreadySet(address,address)\":[{\"details\":\"Revert with an error when attempting to set a new potential owner      that is already set.\"}],\"NewPotentialOwnerIsZeroAddress(address)\":[{\"details\":\"Revert with an error when attempting to register a new potential      owner and supplying the null address.\"}],\"NoConduit()\":[{\"details\":\"Revert with an error when attempting to interact with a conduit that      does not yet exist.\"}],\"NoPotentialOwnerCurrentlySet(address)\":[{\"details\":\"Revert with an error when attempting to cancel ownership transfer      when no new potential owner is currently set.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership(address)\":{\"params\":{\"conduit\":\"The conduit for which to accept ownership.\"}},\"cancelOwnershipTransfer(address)\":{\"params\":{\"conduit\":\"The conduit for which to cancel ownership transfer.\"}},\"constructor\":{\"details\":\"Initialize contract by deploying a conduit and setting the creation      code and runtime code hashes as immutable arguments.\"},\"createConduit(bytes32,address)\":{\"params\":{\"conduitKey\":\"The conduit key used to deploy the conduit. Note that                     the first twenty bytes of the conduit key must match                     the caller of this contract.\",\"initialOwner\":\"The initial owner to set for the new conduit.\"},\"returns\":{\"conduit\":\"The address of the newly deployed conduit.\"}},\"getChannel(address,uint256)\":{\"params\":{\"channelIndex\":\"The index of the channel in question.\",\"conduit\":\"The conduit for which to retrieve the open channel.\"},\"returns\":{\"channel\":\"The open channel, if any, at the specified channel index.\"}},\"getChannelStatus(address,address)\":{\"params\":{\"channel\":\"The channel for which to retrieve the status.\",\"conduit\":\"The conduit for which to retrieve the channel status.\"},\"returns\":{\"isOpen\":\"The status of the channel on the given conduit.\"}},\"getChannels(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve open channels.\"},\"returns\":{\"channels\":\"An array of open channels on the given conduit.\"}},\"getConduit(bytes32)\":{\"params\":{\"conduitKey\":\"The conduit key used to derive the conduit.\"},\"returns\":{\"conduit\":\"The derived address of the conduit.\",\"exists\":\" A boolean indicating whether the derived conduit has been                 deployed or not.\"}},\"getConduitCodeHashes()\":{\"details\":\"Retrieve the conduit creation code and runtime code hashes.\"},\"getKey(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the associated conduit                key.\"},\"returns\":{\"conduitKey\":\"The conduit key used to deploy the supplied conduit.\"}},\"getPotentialOwner(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the potential owner.\"},\"returns\":{\"potentialOwner\":\"The potential owner, if any, for the conduit.\"}},\"getTotalChannels(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the total channel count.\"},\"returns\":{\"totalChannels\":\"The total number of open channels for the conduit.\"}},\"ownerOf(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the associated owner.\"},\"returns\":{\"owner\":\"The owner of the supplied conduit.\"}},\"transferOwnership(address,address)\":{\"params\":{\"conduit\":\"The conduit for which to initiate ownership transfer.\",\"newPotentialOwner\":\"The new potential owner of the conduit.\"}},\"updateChannel(address,address,bool)\":{\"params\":{\"channel\":\"The channel to open or close on the conduit.\",\"conduit\":\"The conduit for which to open or close the channel.\",\"isOpen\":\"A boolean indicating whether to open or close the channel.\"}}},\"title\":\"ConduitController\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOwnership(address)\":{\"notice\":\"Accept ownership of a supplied conduit. Only accounts that the         current owner has set as the new potential owner may call this         function.\"},\"cancelOwnershipTransfer(address)\":{\"notice\":\"Clear the currently set potential owner, if any, from a conduit.         Only the owner of the conduit in question may call this function.\"},\"createConduit(bytes32,address)\":{\"notice\":\"Deploy a new conduit using a supplied conduit key and assigning         an initial owner for the deployed conduit. Note that the first         twenty bytes of the supplied conduit key must match the caller         and that a new conduit cannot be created if one has already been         deployed using the same conduit key.\"},\"getChannel(address,uint256)\":{\"notice\":\"Retrieve an open channel at a specific index for a given conduit.         Note that the index of a channel can change as a result of other         channels being closed on the conduit.\"},\"getChannelStatus(address,address)\":{\"notice\":\"Retrieve the status (either open or closed) of a given channel on         a conduit.\"},\"getChannels(address)\":{\"notice\":\"Retrieve all open channels for a given conduit. Note that calling         this function for a conduit with many channels will revert with         an out-of-gas error.\"},\"getConduit(bytes32)\":{\"notice\":\"Derive the conduit associated with a given conduit key and         determine whether that conduit exists (i.e. whether it has been         deployed).\"},\"getKey(address)\":{\"notice\":\"Retrieve the conduit key for a deployed conduit via reverse         lookup.\"},\"getPotentialOwner(address)\":{\"notice\":\"Retrieve the potential owner, if any, for a given conduit. The         current owner may set a new potential owner via         `transferOwnership` and that owner may then accept ownership of         the conduit in question via `acceptOwnership`.\"},\"getTotalChannels(address)\":{\"notice\":\"Retrieve the total number of open channels for a given conduit.\"},\"ownerOf(address)\":{\"notice\":\"Retrieve the current owner of a deployed conduit.\"},\"transferOwnership(address,address)\":{\"notice\":\"Initiate conduit ownership transfer by assigning a new potential         owner for the given conduit. Once set, the new potential owner         may call `acceptOwnership` to claim ownership of the conduit.         Only the owner of the conduit in question may call this function.\"},\"updateChannel(address,address,bool)\":{\"notice\":\"Open or close a channel on a given conduit, thereby allowing the         specified account to execute transfers against that conduit.         Extreme care must be taken when updating channels, as malicious         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155         tokens where the token holder has granted the conduit approval.         Only the owner of the conduit in question may call this function.\"}},\"notice\":\"ConduitController enables deploying and managing new conduits, or         contracts that allow registered callers (or open \\\"channels\\\") to         transfer approved ERC20/721/1155 tokens on their behalf.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/conduit/ConduitController.sol\":\"ConduitController\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/conduit/Conduit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport { ConduitItemType } from \\\"./lib/ConduitEnums.sol\\\";\\n\\nimport { TokenTransferrer } from \\\"../lib/TokenTransferrer.sol\\\";\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"./lib/ConduitStructs.sol\\\";\\n\\nimport \\\"./lib/ConduitConstants.sol\\\";\\n\\n/**\\n * @title Conduit\\n * @author 0age\\n * @notice This contract serves as an originator for \\\"proxied\\\" transfers. Each\\n *         conduit is deployed and controlled by a \\\"conduit controller\\\" that can\\n *         add and remove \\\"channels\\\" or contracts that can instruct the conduit\\n *         to transfer approved ERC20/721/1155 tokens. *IMPORTANT NOTE: each\\n *         conduit has an owner that can arbitrarily add or remove channels, and\\n *         a malicious or negligent owner can add a channel that allows for any\\n *         approved ERC20/721/1155 tokens to be taken immediately \\u2014 be extremely\\n *         cautious with what conduits you give token approvals to!*\\n */\\ncontract Conduit is ConduitInterface, TokenTransferrer {\\n    // Set deployer as an immutable controller that can update channel statuses.\\n    address private immutable _controller;\\n\\n    // Track the status of each channel.\\n    mapping(address => bool) private _channels;\\n\\n    /**\\n     * @notice Ensure that the caller is currently registered as an open channel\\n     *         on the conduit.\\n     */\\n    modifier onlyOpenChannel() {\\n        // Utilize assembly to access channel storage mapping directly.\\n        assembly {\\n            // Write the caller to scratch space.\\n            mstore(ChannelKey_channel_ptr, caller())\\n\\n            // Write the storage slot for _channels to scratch space.\\n            mstore(ChannelKey_slot_ptr, _channels.slot)\\n\\n            // Derive the position in storage of _channels[msg.sender]\\n            // and check if the stored value is zero.\\n            if iszero(\\n                sload(keccak256(ChannelKey_channel_ptr, ChannelKey_length))\\n            ) {\\n                // The caller is not an open channel; revert with\\n                // ChannelClosed(caller). First, set error signature in memory.\\n                mstore(ChannelClosed_error_ptr, ChannelClosed_error_signature)\\n\\n                // Next, set the caller as the argument.\\n                mstore(ChannelClosed_channel_ptr, caller())\\n\\n                // Finally, revert, returning full custom error with argument.\\n                revert(ChannelClosed_error_ptr, ChannelClosed_error_length)\\n            }\\n        }\\n\\n        // Continue with function execution.\\n        _;\\n    }\\n\\n    /**\\n     * @notice In the constructor, set the deployer as the controller.\\n     */\\n    constructor() {\\n        // Set the deployer as the controller.\\n        _controller = msg.sender;\\n    }\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function. Note that channels\\n     *         are expected to implement reentrancy protection if desired, and\\n     *         that cross-channel reentrancy may be possible if the conduit has\\n     *         multiple open channels at once. Also note that channels are\\n     *         expected to implement checks against transferring any zero-amount\\n     *         items if that constraint is desired.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        override\\n        onlyOpenChannel\\n        returns (bytes4 magicValue)\\n    {\\n        // Retrieve the total number of transfers and place on the stack.\\n        uint256 totalStandardTransfers = transfers.length;\\n\\n        // Iterate over each transfer.\\n        for (uint256 i = 0; i < totalStandardTransfers; ) {\\n            // Retrieve the transfer in question and perform the transfer.\\n            _transfer(transfers[i]);\\n\\n            // Skip overflow check as for loop is indexed starting at zero.\\n            unchecked {\\n                ++i;\\n            }\\n        }\\n\\n        // Return a magic value indicating that the transfers were performed.\\n        magicValue = this.execute.selector;\\n    }\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 item transfers. Only a caller\\n     *         with an open channel can call this function. Note that channels\\n     *         are expected to implement reentrancy protection if desired, and\\n     *         that cross-channel reentrancy may be possible if the conduit has\\n     *         multiple open channels at once. Also note that channels are\\n     *         expected to implement checks against transferring any zero-amount\\n     *         items if that constraint is desired.\\n     *\\n     * @param batchTransfers The 1155 batch item transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the item transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) external override onlyOpenChannel returns (bytes4 magicValue) {\\n        // Perform 1155 batch transfers. Note that memory should be considered\\n        // entirely corrupted from this point forward.\\n        _performERC1155BatchTransfers(batchTransfers);\\n\\n        // Return a magic value indicating that the transfers were performed.\\n        magicValue = this.executeBatch1155.selector;\\n    }\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single ERC20/721/1155 item\\n     *         transfers as well as batch 1155 item transfers. Only a caller\\n     *         with an open channel can call this function. Note that channels\\n     *         are expected to implement reentrancy protection if desired, and\\n     *         that cross-channel reentrancy may be possible if the conduit has\\n     *         multiple open channels at once. Also note that channels are\\n     *         expected to implement checks against transferring any zero-amount\\n     *         items if that constraint is desired.\\n     *\\n     * @param standardTransfers The ERC20/721/1155 item transfers to perform.\\n     * @param batchTransfers    The 1155 batch item transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the item transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) external override onlyOpenChannel returns (bytes4 magicValue) {\\n        // Retrieve the total number of transfers and place on the stack.\\n        uint256 totalStandardTransfers = standardTransfers.length;\\n\\n        // Iterate over each standard transfer.\\n        for (uint256 i = 0; i < totalStandardTransfers; ) {\\n            // Retrieve the transfer in question and perform the transfer.\\n            _transfer(standardTransfers[i]);\\n\\n            // Skip overflow check as for loop is indexed starting at zero.\\n            unchecked {\\n                ++i;\\n            }\\n        }\\n\\n        // Perform 1155 batch transfers. Note that memory should be considered\\n        // entirely corrupted from this point forward aside from the free memory\\n        // pointer having the default value.\\n        _performERC1155BatchTransfers(batchTransfers);\\n\\n        // Return a magic value indicating that the transfers were performed.\\n        magicValue = this.executeWithBatch1155.selector;\\n    }\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external override {\\n        // Ensure that the caller is the controller of this contract.\\n        if (msg.sender != _controller) {\\n            revert InvalidController();\\n        }\\n\\n        // Ensure that the channel does not already have the indicated status.\\n        if (_channels[channel] == isOpen) {\\n            revert ChannelStatusAlreadySet(channel, isOpen);\\n        }\\n\\n        // Update the status of the channel.\\n        _channels[channel] = isOpen;\\n\\n        // Emit a corresponding event.\\n        emit ChannelUpdated(channel, isOpen);\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer a given ERC20/721/1155 item. Note that\\n     *      channels are expected to implement checks against transferring any\\n     *      zero-amount items if that constraint is desired.\\n     *\\n     * @param item The ERC20/721/1155 item to transfer.\\n     */\\n    function _transfer(ConduitTransfer calldata item) internal {\\n        // Determine the transfer method based on the respective item type.\\n        if (item.itemType == ConduitItemType.ERC20) {\\n            // Transfer ERC20 token. Note that item.identifier is ignored and\\n            // therefore ERC20 transfer items are potentially malleable \\u2014 this\\n            // check should be performed by the calling channel if a constraint\\n            // on item malleability is desired.\\n            _performERC20Transfer(item.token, item.from, item.to, item.amount);\\n        } else if (item.itemType == ConduitItemType.ERC721) {\\n            // Ensure that exactly one 721 item is being transferred.\\n            if (item.amount != 1) {\\n                revert InvalidERC721TransferAmount();\\n            }\\n\\n            // Transfer ERC721 token.\\n            _performERC721Transfer(\\n                item.token,\\n                item.from,\\n                item.to,\\n                item.identifier\\n            );\\n        } else if (item.itemType == ConduitItemType.ERC1155) {\\n            // Transfer ERC1155 token.\\n            _performERC1155Transfer(\\n                item.token,\\n                item.from,\\n                item.to,\\n                item.identifier,\\n                item.amount\\n            );\\n        } else {\\n            // Throw with an error.\\n            revert InvalidItemType();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x180267c5f93666446ffc93c9798dc52339e94d101b2e67a3eab229d366c873d6\",\"license\":\"MIT\"},\"contracts/conduit/ConduitController.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport { Conduit } from \\\"./Conduit.sol\\\";\\n\\n/**\\n * @title ConduitController\\n * @author 0age\\n * @notice ConduitController enables deploying and managing new conduits, or\\n *         contracts that allow registered callers (or open \\\"channels\\\") to\\n *         transfer approved ERC20/721/1155 tokens on their behalf.\\n */\\ncontract ConduitController is ConduitControllerInterface {\\n    // Register keys, owners, new potential owners, and channels by conduit.\\n    mapping(address => ConduitProperties) internal _conduits;\\n\\n    // Set conduit creation code and runtime code hashes as immutable arguments.\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n    bytes32 internal immutable _CONDUIT_RUNTIME_CODE_HASH;\\n\\n    /**\\n     * @dev Initialize contract by deploying a conduit and setting the creation\\n     *      code and runtime code hashes as immutable arguments.\\n     */\\n    constructor() {\\n        // Derive the conduit creation code hash and set it as an immutable.\\n        _CONDUIT_CREATION_CODE_HASH = keccak256(type(Conduit).creationCode);\\n\\n        // Deploy a conduit with the zero hash as the salt.\\n        Conduit zeroConduit = new Conduit{ salt: bytes32(0) }();\\n\\n        // Retrieve the conduit runtime code hash and set it as an immutable.\\n        _CONDUIT_RUNTIME_CODE_HASH = address(zeroConduit).codehash;\\n    }\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        override\\n        returns (address conduit)\\n    {\\n        // Ensure that an initial owner has been supplied.\\n        if (initialOwner == address(0)) {\\n            revert InvalidInitialOwner();\\n        }\\n\\n        // If the first 20 bytes of the conduit key do not match the caller...\\n        if (address(uint160(bytes20(conduitKey))) != msg.sender) {\\n            // Revert with an error indicating that the creator is invalid.\\n            revert InvalidCreator();\\n        }\\n\\n        // Derive address from deployer, conduit key and creation code hash.\\n        conduit = address(\\n            uint160(\\n                uint256(\\n                    keccak256(\\n                        abi.encodePacked(\\n                            bytes1(0xff),\\n                            address(this),\\n                            conduitKey,\\n                            _CONDUIT_CREATION_CODE_HASH\\n                        )\\n                    )\\n                )\\n            )\\n        );\\n\\n        // If derived conduit exists, as evidenced by comparing runtime code...\\n        if (conduit.codehash == _CONDUIT_RUNTIME_CODE_HASH) {\\n            // Revert with an error indicating that the conduit already exists.\\n            revert ConduitAlreadyExists(conduit);\\n        }\\n\\n        // Deploy the conduit via CREATE2 using the conduit key as the salt.\\n        new Conduit{ salt: conduitKey }();\\n\\n        // Initialize storage variable referencing conduit properties.\\n        ConduitProperties storage conduitProperties = _conduits[conduit];\\n\\n        // Set the supplied initial owner as the owner of the conduit.\\n        conduitProperties.owner = initialOwner;\\n\\n        // Set conduit key used to deploy the conduit to enable reverse lookup.\\n        conduitProperties.key = conduitKey;\\n\\n        // Emit an event indicating that the conduit has been deployed.\\n        emit NewConduit(conduit, conduitKey);\\n\\n        // Emit an event indicating that conduit ownership has been assigned.\\n        emit OwnershipTransferred(conduit, address(0), initialOwner);\\n    }\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external override {\\n        // Ensure the caller is the current owner of the conduit in question.\\n        _assertCallerIsConduitOwner(conduit);\\n\\n        // Call the conduit, updating the channel.\\n        ConduitInterface(conduit).updateChannel(channel, isOpen);\\n\\n        // Retrieve storage region where channels for the conduit are tracked.\\n        ConduitProperties storage conduitProperties = _conduits[conduit];\\n\\n        // Retrieve the index, if one currently exists, for the updated channel.\\n        uint256 channelIndexPlusOne = (\\n            conduitProperties.channelIndexesPlusOne[channel]\\n        );\\n\\n        // Determine whether the updated channel is already tracked as open.\\n        bool channelPreviouslyOpen = channelIndexPlusOne != 0;\\n\\n        // If the channel has been set to open and was previously closed...\\n        if (isOpen && !channelPreviouslyOpen) {\\n            // Add the channel to the channels array for the conduit.\\n            conduitProperties.channels.push(channel);\\n\\n            // Add new open channel length to associated mapping as index + 1.\\n            conduitProperties.channelIndexesPlusOne[channel] = (\\n                conduitProperties.channels.length\\n            );\\n        } else if (!isOpen && channelPreviouslyOpen) {\\n            // Set a previously open channel as closed via \\\"swap & pop\\\" method.\\n            // Decrement located index to get the index of the closed channel.\\n            uint256 removedChannelIndex;\\n\\n            // Skip underflow check as channelPreviouslyOpen being true ensures\\n            // that channelIndexPlusOne is nonzero.\\n            unchecked {\\n                removedChannelIndex = channelIndexPlusOne - 1;\\n            }\\n\\n            // Use length of channels array to determine index of last channel.\\n            uint256 finalChannelIndex = conduitProperties.channels.length - 1;\\n\\n            // If closed channel is not last channel in the channels array...\\n            if (finalChannelIndex != removedChannelIndex) {\\n                // Retrieve the final channel and place the value on the stack.\\n                address finalChannel = (\\n                    conduitProperties.channels[finalChannelIndex]\\n                );\\n\\n                // Overwrite the removed channel using the final channel value.\\n                conduitProperties.channels[removedChannelIndex] = finalChannel;\\n\\n                // Update final index in associated mapping to removed index.\\n                conduitProperties.channelIndexesPlusOne[finalChannel] = (\\n                    channelIndexPlusOne\\n                );\\n            }\\n\\n            // Remove the last channel from the channels array for the conduit.\\n            conduitProperties.channels.pop();\\n\\n            // Remove the closed channel from associated mapping of indexes.\\n            delete conduitProperties.channelIndexesPlusOne[channel];\\n        }\\n    }\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external\\n        override\\n    {\\n        // Ensure the caller is the current owner of the conduit in question.\\n        _assertCallerIsConduitOwner(conduit);\\n\\n        // Ensure the new potential owner is not an invalid address.\\n        if (newPotentialOwner == address(0)) {\\n            revert NewPotentialOwnerIsZeroAddress(conduit);\\n        }\\n\\n        // Ensure the new potential owner is not already set.\\n        if (newPotentialOwner == _conduits[conduit].potentialOwner) {\\n            revert NewPotentialOwnerAlreadySet(conduit, newPotentialOwner);\\n        }\\n\\n        // Emit an event indicating that the potential owner has been updated.\\n        emit PotentialOwnerUpdated(newPotentialOwner);\\n\\n        // Set the new potential owner as the potential owner of the conduit.\\n        _conduits[conduit].potentialOwner = newPotentialOwner;\\n    }\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external override {\\n        // Ensure the caller is the current owner of the conduit in question.\\n        _assertCallerIsConduitOwner(conduit);\\n\\n        // Ensure that ownership transfer is currently possible.\\n        if (_conduits[conduit].potentialOwner == address(0)) {\\n            revert NoPotentialOwnerCurrentlySet(conduit);\\n        }\\n\\n        // Emit an event indicating that the potential owner has been cleared.\\n        emit PotentialOwnerUpdated(address(0));\\n\\n        // Clear the current new potential owner from the conduit.\\n        _conduits[conduit].potentialOwner = address(0);\\n    }\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external override {\\n        // Ensure that the conduit in question exists.\\n        _assertConduitExists(conduit);\\n\\n        // If caller does not match current potential owner of the conduit...\\n        if (msg.sender != _conduits[conduit].potentialOwner) {\\n            // Revert, indicating that caller is not current potential owner.\\n            revert CallerIsNotNewPotentialOwner(conduit);\\n        }\\n\\n        // Emit an event indicating that the potential owner has been cleared.\\n        emit PotentialOwnerUpdated(address(0));\\n\\n        // Clear the current new potential owner from the conduit.\\n        _conduits[conduit].potentialOwner = address(0);\\n\\n        // Emit an event indicating conduit ownership has been transferred.\\n        emit OwnershipTransferred(\\n            conduit,\\n            _conduits[conduit].owner,\\n            msg.sender\\n        );\\n\\n        // Set the caller as the owner of the conduit.\\n        _conduits[conduit].owner = msg.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit)\\n        external\\n        view\\n        override\\n        returns (address owner)\\n    {\\n        // Ensure that the conduit in question exists.\\n        _assertConduitExists(conduit);\\n\\n        // Retrieve the current owner of the conduit in question.\\n        owner = _conduits[conduit].owner;\\n    }\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit)\\n        external\\n        view\\n        override\\n        returns (bytes32 conduitKey)\\n    {\\n        // Attempt to retrieve a conduit key for the conduit in question.\\n        conduitKey = _conduits[conduit].key;\\n\\n        // Revert if no conduit key was located.\\n        if (conduitKey == bytes32(0)) {\\n            revert NoConduit();\\n        }\\n    }\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        override\\n        returns (address conduit, bool exists)\\n    {\\n        // Derive address from deployer, conduit key and creation code hash.\\n        conduit = address(\\n            uint160(\\n                uint256(\\n                    keccak256(\\n                        abi.encodePacked(\\n                            bytes1(0xff),\\n                            address(this),\\n                            conduitKey,\\n                            _CONDUIT_CREATION_CODE_HASH\\n                        )\\n                    )\\n                )\\n            )\\n        );\\n\\n        // Determine whether conduit exists by retrieving its runtime code.\\n        exists = (conduit.codehash == _CONDUIT_RUNTIME_CODE_HASH);\\n    }\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        override\\n        returns (address potentialOwner)\\n    {\\n        // Ensure that the conduit in question exists.\\n        _assertConduitExists(conduit);\\n\\n        // Retrieve the current potential owner of the conduit in question.\\n        potentialOwner = _conduits[conduit].potentialOwner;\\n    }\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        override\\n        returns (bool isOpen)\\n    {\\n        // Ensure that the conduit in question exists.\\n        _assertConduitExists(conduit);\\n\\n        // Retrieve the current channel status for the conduit in question.\\n        isOpen = _conduits[conduit].channelIndexesPlusOne[channel] != 0;\\n    }\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        override\\n        returns (uint256 totalChannels)\\n    {\\n        // Ensure that the conduit in question exists.\\n        _assertConduitExists(conduit);\\n\\n        // Retrieve the total open channel count for the conduit in question.\\n        totalChannels = _conduits[conduit].channels.length;\\n    }\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        override\\n        returns (address channel)\\n    {\\n        // Ensure that the conduit in question exists.\\n        _assertConduitExists(conduit);\\n\\n        // Retrieve the total open channel count for the conduit in question.\\n        uint256 totalChannels = _conduits[conduit].channels.length;\\n\\n        // Ensure that the supplied index is within range.\\n        if (channelIndex >= totalChannels) {\\n            revert ChannelOutOfRange(conduit);\\n        }\\n\\n        // Retrieve the channel at the given index.\\n        channel = _conduits[conduit].channels[channelIndex];\\n    }\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        override\\n        returns (address[] memory channels)\\n    {\\n        // Ensure that the conduit in question exists.\\n        _assertConduitExists(conduit);\\n\\n        // Retrieve all of the open channels on the conduit in question.\\n        channels = _conduits[conduit].channels;\\n    }\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        override\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash)\\n    {\\n        // Retrieve the conduit creation code hash from runtime.\\n        creationCodeHash = _CONDUIT_CREATION_CODE_HASH;\\n\\n        // Retrieve the conduit runtime code hash from runtime.\\n        runtimeCodeHash = _CONDUIT_RUNTIME_CODE_HASH;\\n    }\\n\\n    /**\\n     * @dev Private view function to revert if the caller is not the owner of a\\n     *      given conduit.\\n     *\\n     * @param conduit The conduit for which to assert ownership.\\n     */\\n    function _assertCallerIsConduitOwner(address conduit) private view {\\n        // Ensure that the conduit in question exists.\\n        _assertConduitExists(conduit);\\n\\n        // If the caller does not match the current owner of the conduit...\\n        if (msg.sender != _conduits[conduit].owner) {\\n            // Revert, indicating that the caller is not the owner.\\n            revert CallerIsNotOwner(conduit);\\n        }\\n    }\\n\\n    /**\\n     * @dev Private view function to revert if a given conduit does not exist.\\n     *\\n     * @param conduit The conduit for which to assert existence.\\n     */\\n    function _assertConduitExists(address conduit) private view {\\n        // Attempt to retrieve a conduit key for the conduit in question.\\n        if (_conduits[conduit].key == bytes32(0)) {\\n            // Revert if no conduit key was located.\\n            revert NoConduit();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf9d30f40b56ec5fe954a3d7e326b851d07d3680bab8d42e47376f24cca58baad\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n// error ChannelClosed(address channel)\\nuint256 constant ChannelClosed_error_signature = (\\n    0x93daadf200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ChannelClosed_error_ptr = 0x00;\\nuint256 constant ChannelClosed_channel_ptr = 0x4;\\nuint256 constant ChannelClosed_error_length = 0x24;\\n\\n// For the mapping:\\n// mapping(address => bool) channels\\n// The position in storage for a particular account is:\\n// keccak256(abi.encode(account, channels.slot))\\nuint256 constant ChannelKey_channel_ptr = 0x00;\\nuint256 constant ChannelKey_slot_ptr = 0x20;\\nuint256 constant ChannelKey_length = 0x40;\\n\",\"keccak256\":\"0x16760358c7ae3cb1604e2ed4bd45ecb083b7b150ee914bc6d6204aefcb8c8d9e\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ConduitItemType {\\n    NATIVE, // unused\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\\n\",\"keccak256\":\"0x1a84850bbff4b820573334c70ee0797462f20fd8c9b86fdebeacc85ecb1963a6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitItemType } from \\\"./ConduitEnums.sol\\\";\\n\\nstruct ConduitTransfer {\\n    ConduitItemType itemType;\\n    address token;\\n    address from;\\n    address to;\\n    uint256 identifier;\\n    uint256 amount;\\n}\\n\\nstruct ConduitBatch1155Transfer {\\n    address token;\\n    address from;\\n    address to;\\n    uint256[] ids;\\n    uint256[] amounts;\\n}\\n\",\"keccak256\":\"0xe3e87c74dd79c59293e49b7236cc7befdc19886bb79af5fe53208b1772fd24f9\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title ConduitInterface\\n * @author 0age\\n * @notice ConduitInterface contains all external function interfaces, events,\\n *         and errors for conduit contracts.\\n */\\ninterface ConduitInterface {\\n    /**\\n     * @dev Revert with an error when attempting to execute transfers using a\\n     *      caller that does not have an open channel.\\n     */\\n    error ChannelClosed(address channel);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update a channel to the\\n     *      current status of that channel.\\n     */\\n    error ChannelStatusAlreadySet(address channel, bool isOpen);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute a transfer for an\\n     *      item that does not have an ERC20/721/1155 item type.\\n     */\\n    error InvalidItemType();\\n\\n    /**\\n     * @dev Revert with an error when attempting to update the status of a\\n     *      channel from a caller that is not the conduit controller.\\n     */\\n    error InvalidController();\\n\\n    /**\\n     * @dev Emit an event whenever a channel is opened or closed.\\n     *\\n     * @param channel The channel that has been updated.\\n     * @param open    A boolean indicating whether the conduit is open or not.\\n     */\\n    event ChannelUpdated(address indexed channel, bool open);\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\\n     *         open channel can call this function.\\n     *\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\\n     *         a caller with an open channel can call this function.\\n     *\\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external;\\n}\\n\",\"keccak256\":\"0x628e23ec7e820e8ac59c0999211bb022bb5c5581a5bc6bd39465d6419d7d85b5\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport \\\"./TokenTransferrerConstants.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { ConduitBatch1155Transfer } from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title TokenTransferrer\\n * @author 0age\\n * @custom:coauthor d1ll0n\\n * @custom:coauthor transmissions11\\n * @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\\n *         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\\n *         by conduits deployed by the ConduitController. Use great caution when\\n *         considering these functions for use in other codebases, as there are\\n *         significant side effects and edge cases that need to be thoroughly\\n *         understood and carefully addressed.\\n */\\ncontract TokenTransferrer is TokenTransferrerErrors {\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set on the\\n     *      contract performing the transfer.\\n     *\\n     * @param token      The ERC20 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC20Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\\n            mstore(ERC20_transferFrom_from_ptr, from)\\n            mstore(ERC20_transferFrom_to_ptr, to)\\n            mstore(ERC20_transferFrom_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transferFrom_sig_ptr,\\n                ERC20_transferFrom_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                from\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            from\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    function _performSelfERC20Transfer(\\n        address token,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transfer_sig_ptr, ERC20_transfer_signature)\\n            mstore(ERC20_transfer_to_ptr, to)\\n            mstore(ERC20_transfer_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transfer_sig_ptr,\\n                ERC20_transfer_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                address()\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            address()\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer an ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer. Note that this function does\\n     *      not check whether the receiver can accept the ERC721 token (i.e. it\\n     *      does not use `safeTransferFrom`).\\n     *\\n     * @param token      The ERC721 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     */\\n    function _performERC721Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC721 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data to memory starting with function selector.\\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\\n            mstore(ERC721_transferFrom_from_ptr, from)\\n            mstore(ERC721_transferFrom_to_ptr, to)\\n            mstore(ERC721_transferFrom_id_ptr, identifier)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC721_transferFrom_sig_ptr,\\n                ERC721_transferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer.\\n     *\\n     * @param token      The ERC1155 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The id to transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC1155Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The following memory slots will be used when populating call data\\n            // for the transfer; read the values and restore them later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n            let slot0x80 := mload(Slot0x80)\\n            let slot0xA0 := mload(Slot0xA0)\\n            let slot0xC0 := mload(Slot0xC0)\\n\\n            // Write call data into memory, beginning with function selector.\\n            mstore(\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_signature\\n            )\\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\\n            mstore(\\n                ERC1155_safeTransferFrom_data_offset_ptr,\\n                ERC1155_safeTransferFrom_data_length_offset\\n            )\\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer. NOTE: this function is not\\n     *      memory-safe; it will overwrite existing memory, restore the free\\n     *      memory pointer to the default value, and overwrite the zero slot.\\n     *      This function should only be called once memory is no longer\\n     *      required and when uninitialized arrays are not utilized, and memory\\n     *      should be considered fully corrupted (aside from the existence of a\\n     *      default-value free memory pointer) after calling this function.\\n     *\\n     * @param batchTransfers The group of 1155 batch transfers to perform.\\n     */\\n    function _performERC1155BatchTransfers(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) internal {\\n        // Utilize assembly to perform optimized batch 1155 transfers.\\n        assembly {\\n            let len := batchTransfers.length\\n            // Pointer to first head in the array, which is offset to the struct\\n            // at each index. This gets incremented after each loop to avoid\\n            // multiplying by 32 to get the offset for each element.\\n            let nextElementHeadPtr := batchTransfers.offset\\n\\n            // Pointer to beginning of the head of the array. This is the\\n            // reference position each offset references. It's held static to\\n            // let each loop calculate the data position for an element.\\n            let arrayHeadPtr := nextElementHeadPtr\\n\\n            // Write the function selector, which will be reused for each call:\\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\n            mstore(\\n                ConduitBatch1155Transfer_from_offset,\\n                ERC1155_safeBatchTransferFrom_signature\\n            )\\n\\n            // Iterate over each batch transfer.\\n            for {\\n                let i := 0\\n            } lt(i, len) {\\n                i := add(i, 1)\\n            } {\\n                // Read the offset to the beginning of the element and add\\n                // it to pointer to the beginning of the array head to get\\n                // the absolute position of the element in calldata.\\n                let elementPtr := add(\\n                    arrayHeadPtr,\\n                    calldataload(nextElementHeadPtr)\\n                )\\n\\n                // Retrieve the token from calldata.\\n                let token := calldataload(elementPtr)\\n\\n                // If the token has no code, revert.\\n                if iszero(extcodesize(token)) {\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Get the total number of supplied ids.\\n                let idsLength := calldataload(\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\\n                )\\n\\n                // Determine the expected offset for the amounts array.\\n                let expectedAmountsOffset := add(\\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\\n                    mul(idsLength, OneWord)\\n                )\\n\\n                // Validate struct encoding.\\n                let invalidEncoding := iszero(\\n                    and(\\n                        // ids.length == amounts.length\\n                        eq(\\n                            idsLength,\\n                            calldataload(add(elementPtr, expectedAmountsOffset))\\n                        ),\\n                        and(\\n                            // ids_offset == 0xa0\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatch1155Transfer_ids_head_offset\\n                                    )\\n                                ),\\n                                ConduitBatch1155Transfer_ids_length_offset\\n                            ),\\n                            // amounts_offset == 0xc0 + ids.length*32\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatchTransfer_amounts_head_offset\\n                                    )\\n                                ),\\n                                expectedAmountsOffset\\n                            )\\n                        )\\n                    )\\n                )\\n\\n                // Revert with an error if the encoding is not valid.\\n                if invalidEncoding {\\n                    mstore(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_selector\\n                    )\\n                    revert(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_length\\n                    )\\n                }\\n\\n                // Update the offset position for the next loop\\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\\n\\n                // Copy the first section of calldata (before dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\\n                    ConduitBatch1155Transfer_usable_head_size\\n                )\\n\\n                // Determine size of calldata required for ids and amounts. Note\\n                // that the size includes both lengths as well as the data.\\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\\n\\n                // Update the offset for the data array in memory.\\n                mstore(\\n                    BatchTransfer1155Params_data_head_ptr,\\n                    add(\\n                        BatchTransfer1155Params_ids_length_offset,\\n                        idsAndAmountsSize\\n                    )\\n                )\\n\\n                // Set the length of the data array in memory to zero.\\n                mstore(\\n                    add(\\n                        BatchTransfer1155Params_data_length_basePtr,\\n                        idsAndAmountsSize\\n                    ),\\n                    0\\n                )\\n\\n                // Determine the total calldata size for the call to transfer.\\n                let transferDataSize := add(\\n                    BatchTransfer1155Params_calldata_baseSize,\\n                    idsAndAmountsSize\\n                )\\n\\n                // Copy second section of calldata (including dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ids_length_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\\n                    idsAndAmountsSize\\n                )\\n\\n                // Perform the call to transfer 1155 tokens.\\n                let success := call(\\n                    gas(),\\n                    token,\\n                    0,\\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\\n                    transferDataSize, // Location of the length of callData.\\n                    0,\\n                    0\\n                )\\n\\n                // If the transfer reverted:\\n                if iszero(success) {\\n                    // If it returned a message, bubble it up as long as\\n                    // sufficient gas remains to do so:\\n                    if returndatasize() {\\n                        // Ensure that sufficient gas is available to copy\\n                        // returndata while expanding memory where necessary.\\n                        // Start by computing word size of returndata and\\n                        // allocated memory. Round up to the nearest full word.\\n                        let returnDataWords := div(\\n                            add(returndatasize(), AlmostOneWord),\\n                            OneWord\\n                        )\\n\\n                        // Note: use transferDataSize in place of msize() to\\n                        // work around a Yul warning that prevents accessing\\n                        // msize directly when the IR pipeline is activated.\\n                        // The free memory pointer is not used here because\\n                        // this function does almost all memory management\\n                        // manually and does not update it, and transferDataSize\\n                        // should be the largest memory value used (unless a\\n                        // previous batch was larger).\\n                        let msizeWords := div(transferDataSize, OneWord)\\n\\n                        // Next, compute the cost of the returndatacopy.\\n                        let cost := mul(CostPerWord, returnDataWords)\\n\\n                        // Then, compute cost of new memory allocation.\\n                        if gt(returnDataWords, msizeWords) {\\n                            cost := add(\\n                                cost,\\n                                add(\\n                                    mul(\\n                                        sub(returnDataWords, msizeWords),\\n                                        CostPerWord\\n                                    ),\\n                                    div(\\n                                        sub(\\n                                            mul(\\n                                                returnDataWords,\\n                                                returnDataWords\\n                                            ),\\n                                            mul(msizeWords, msizeWords)\\n                                        ),\\n                                        MemoryExpansionCoefficient\\n                                    )\\n                                )\\n                            )\\n                        }\\n\\n                        // Finally, add a small constant and compare to gas\\n                        // remaining; bubble up the revert data if enough gas is\\n                        // still available.\\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\\n                            // Copy returndata to memory; overwrite existing.\\n                            returndatacopy(0, 0, returndatasize())\\n\\n                            // Revert with memory region containing returndata.\\n                            revert(0, returndatasize())\\n                        }\\n                    }\\n\\n                    // Set the error signature.\\n                    mstore(\\n                        0,\\n                        ERC1155BatchTransferGenericFailure_error_signature\\n                    )\\n\\n                    // Write the token.\\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\\n\\n                    // Increase the offset to ids by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_ids_head_ptr,\\n                        ERC1155BatchTransferGenericFailure_ids_offset\\n                    )\\n\\n                    // Increase the offset to amounts by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_amounts_head_ptr,\\n                        add(\\n                            OneWord,\\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\\n                        )\\n                    )\\n\\n                    // Return modified region. The total size stays the same as\\n                    // `token` uses the same number of bytes as `data.length`.\\n                    revert(0, transferDataSize)\\n                }\\n            }\\n\\n            // Reset the free memory pointer to the default value; memory must\\n            // be assumed to be dirtied and not reused from this point forward.\\n            // Also note that the zero slot is not reset to zero, meaning empty\\n            // arrays cannot be safely created or utilized until it is restored.\\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9be626e5928b95748e08259c63a6168d3e0b3e490f2f340491b8afd546cbbcd1\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrerConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\nuint256 constant Slot0xC0 = 0xc0;\\n\\n// abi.encodeWithSignature(\\\"transferFrom(address,address,uint256)\\\")\\nuint256 constant ERC20_transferFrom_signature = (\\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"transfer(address,uint256)\\\")\\nuint256 constant ERC20_transfer_signature = (\\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transfer_sig_ptr = 0x0;\\nuint256 constant ERC20_transfer_to_ptr = 0x04;\\nuint256 constant ERC20_transfer_amount_ptr = 0x24;\\nuint256 constant ERC20_transfer_length = 0x44; // 4 + 32 * 2 == 68\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeTransferFrom(address,address,uint256,uint256,bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeTransferFrom_signature = (\\n    0xf242432a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\\n);\\n\\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\\n);\\n\\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\n// abi.encodeWithSignature(\\n//     \\\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\\\"\\n// )\\nuint256 constant TokenTransferGenericFailure_error_signature = (\\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\\n\\n// 4 + 32 * 5 == 164\\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\\n\\n// abi.encodeWithSignature(\\n//     \\\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\\\"\\n// )\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\\n    0x9889192300000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\\n\\n// 4 + 32 * 4 == 132\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200;\\n\\n// Values are offset by 32 bytes in order to write the token to the beginning\\n// in the event of a revert\\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x64;\\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0xc4;\\nuint256 constant BatchTransfer1155Params_calldata_baseSize = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\\n\\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\\n\\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\\n\\n// Note: abbreviated version of above constant to adhere to line length limit.\\nuint256 constant ConduitBatchTransfer_amounts_head_offset = 0x80;\\n\\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\\n    0xafc445e200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\\nuint256 constant ERC1155BatchTransferGenericFailure_ids_offset = 0xc0;\\n\",\"keccak256\":\"0x002bea8dcc1d37a0cdd6d1c25f536a1a13e01e1fb32b7bbb2a3016425e40b672\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2869,"contract":"contracts/conduit/ConduitController.sol:ConduitController","label":"_conduits","offset":0,"slot":"0","type":"t_mapping(t_address,t_struct(ConduitProperties)3745_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_address)dyn_storage":{"base":"t_address","encoding":"dynamic_array","label":"address[]","numberOfBytes":"32"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_struct(ConduitProperties)3745_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct ConduitControllerInterface.ConduitProperties)","numberOfBytes":"32","value":"t_struct(ConduitProperties)3745_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_struct(ConduitProperties)3745_storage":{"encoding":"inplace","label":"struct ConduitControllerInterface.ConduitProperties","members":[{"astId":3733,"contract":"contracts/conduit/ConduitController.sol:ConduitController","label":"key","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3735,"contract":"contracts/conduit/ConduitController.sol:ConduitController","label":"owner","offset":0,"slot":"1","type":"t_address"},{"astId":3737,"contract":"contracts/conduit/ConduitController.sol:ConduitController","label":"potentialOwner","offset":0,"slot":"2","type":"t_address"},{"astId":3740,"contract":"contracts/conduit/ConduitController.sol:ConduitController","label":"channels","offset":0,"slot":"3","type":"t_array(t_address)dyn_storage"},{"astId":3744,"contract":"contracts/conduit/ConduitController.sol:ConduitController","label":"channelIndexesPlusOne","offset":0,"slot":"4","type":"t_mapping(t_address,t_uint256)"}],"numberOfBytes":"160"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{"acceptOwnership(address)":{"notice":"Accept ownership of a supplied conduit. Only accounts that the         current owner has set as the new potential owner may call this         function."},"cancelOwnershipTransfer(address)":{"notice":"Clear the currently set potential owner, if any, from a conduit.         Only the owner of the conduit in question may call this function."},"createConduit(bytes32,address)":{"notice":"Deploy a new conduit using a supplied conduit key and assigning         an initial owner for the deployed conduit. Note that the first         twenty bytes of the supplied conduit key must match the caller         and that a new conduit cannot be created if one has already been         deployed using the same conduit key."},"getChannel(address,uint256)":{"notice":"Retrieve an open channel at a specific index for a given conduit.         Note that the index of a channel can change as a result of other         channels being closed on the conduit."},"getChannelStatus(address,address)":{"notice":"Retrieve the status (either open or closed) of a given channel on         a conduit."},"getChannels(address)":{"notice":"Retrieve all open channels for a given conduit. Note that calling         this function for a conduit with many channels will revert with         an out-of-gas error."},"getConduit(bytes32)":{"notice":"Derive the conduit associated with a given conduit key and         determine whether that conduit exists (i.e. whether it has been         deployed)."},"getKey(address)":{"notice":"Retrieve the conduit key for a deployed conduit via reverse         lookup."},"getPotentialOwner(address)":{"notice":"Retrieve the potential owner, if any, for a given conduit. The         current owner may set a new potential owner via         `transferOwnership` and that owner may then accept ownership of         the conduit in question via `acceptOwnership`."},"getTotalChannels(address)":{"notice":"Retrieve the total number of open channels for a given conduit."},"ownerOf(address)":{"notice":"Retrieve the current owner of a deployed conduit."},"transferOwnership(address,address)":{"notice":"Initiate conduit ownership transfer by assigning a new potential         owner for the given conduit. Once set, the new potential owner         may call `acceptOwnership` to claim ownership of the conduit.         Only the owner of the conduit in question may call this function."},"updateChannel(address,address,bool)":{"notice":"Open or close a channel on a given conduit, thereby allowing the         specified account to execute transfers against that conduit.         Extreme care must be taken when updating channels, as malicious         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155         tokens where the token holder has granted the conduit approval.         Only the owner of the conduit in question may call this function."}},"notice":"ConduitController enables deploying and managing new conduits, or         contracts that allow registered callers (or open \"channels\") to         transfer approved ERC20/721/1155 tokens on their behalf.","version":1}}},"contracts/helper/GenericERC20.sol":{"GenericERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_157":{"entryPoint":null,"id":157,"parameterSlots":2,"returnSlots":0},"@_23":{"entryPoint":null,"id":23,"parameterSlots":0,"returnSlots":0},"@_3693":{"entryPoint":null,"id":3693,"parameterSlots":2,"returnSlots":0},"@_msgSender_2136":{"entryPoint":136,"id":2136,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_111":{"entryPoint":140,"id":111,"parameterSlots":1,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":410,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":593,"id":null,"parameterSlots":2,"returnSlots":2},"extract_byte_array_length":{"entryPoint":699,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x41":{"entryPoint":388,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1985:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:54"},"nodeType":"YulFunctionCall","src":"66:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:54"},"nodeType":"YulFunctionCall","src":"56:31:54"},"nodeType":"YulExpressionStatement","src":"56:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:54"},"nodeType":"YulFunctionCall","src":"96:15:54"},"nodeType":"YulExpressionStatement","src":"96:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:54"},"nodeType":"YulFunctionCall","src":"120:15:54"},"nodeType":"YulExpressionStatement","src":"120:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:54"},{"body":{"nodeType":"YulBlock","src":"210:821:54","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:54"},"nodeType":"YulFunctionCall","src":"261:12:54"},"nodeType":"YulExpressionStatement","src":"261:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:54"},"nodeType":"YulFunctionCall","src":"234:17:54"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:54"},"nodeType":"YulFunctionCall","src":"230:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:54"},"nodeType":"YulFunctionCall","src":"223:35:54"},"nodeType":"YulIf","src":"220:55:54"},{"nodeType":"YulVariableDeclaration","src":"284:23:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:54"},"nodeType":"YulFunctionCall","src":"294:13:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:54","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:54","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:54"},"nodeType":"YulFunctionCall","src":"330:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:54"},"nodeType":"YulFunctionCall","src":"326:18:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:54"},"nodeType":"YulFunctionCall","src":"369:18:54"},"nodeType":"YulExpressionStatement","src":"369:18:54"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:54"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:54"},"nodeType":"YulFunctionCall","src":"356:10:54"},"nodeType":"YulIf","src":"353:36:54"},{"nodeType":"YulVariableDeclaration","src":"398:17:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:54","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:54"},"nodeType":"YulFunctionCall","src":"408:7:54"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:54"},"nodeType":"YulFunctionCall","src":"438:9:54"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:54"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:54"},"nodeType":"YulFunctionCall","src":"498:13:54"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:54"},"nodeType":"YulFunctionCall","src":"494:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:54","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:54"},"nodeType":"YulFunctionCall","src":"490:31:54"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:54"},"nodeType":"YulFunctionCall","src":"486:40:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:54"},"nodeType":"YulFunctionCall","src":"474:53:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:54"},"nodeType":"YulFunctionCall","src":"588:18:54"},"nodeType":"YulExpressionStatement","src":"588:18:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:54"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:54"},"nodeType":"YulFunctionCall","src":"542:18:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:54"},"nodeType":"YulFunctionCall","src":"562:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:54"},"nodeType":"YulFunctionCall","src":"539:46:54"},"nodeType":"YulIf","src":"536:72:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:54"},"nodeType":"YulFunctionCall","src":"617:22:54"},"nodeType":"YulExpressionStatement","src":"617:22:54"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:54"},"nodeType":"YulFunctionCall","src":"648:18:54"},"nodeType":"YulExpressionStatement","src":"648:18:54"},{"nodeType":"YulVariableDeclaration","src":"675:14:54","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:54","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:54"},"nodeType":"YulFunctionCall","src":"737:12:54"},"nodeType":"YulExpressionStatement","src":"737:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:54"},"nodeType":"YulFunctionCall","src":"708:15:54"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:54"},"nodeType":"YulFunctionCall","src":"704:24:54"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:54"},"nodeType":"YulFunctionCall","src":"701:33:54"},"nodeType":"YulIf","src":"698:53:54"},{"nodeType":"YulVariableDeclaration","src":"760:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:54"},"nodeType":"YulFunctionCall","src":"850:14:54"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:54"},"nodeType":"YulFunctionCall","src":"846:23:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:54"},"nodeType":"YulFunctionCall","src":"881:14:54"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:54"},"nodeType":"YulFunctionCall","src":"877:23:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:54"},"nodeType":"YulFunctionCall","src":"871:30:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:54"},"nodeType":"YulFunctionCall","src":"839:63:54"},"nodeType":"YulExpressionStatement","src":"839:63:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:54"},"nodeType":"YulFunctionCall","src":"787:9:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:54","statements":[{"nodeType":"YulAssignment","src":"799:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:54"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:54"},"nodeType":"YulFunctionCall","src":"804:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:54","statements":[]},"src":"779:133:54"},{"body":{"nodeType":"YulBlock","src":"942:59:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"971:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:54"},"nodeType":"YulFunctionCall","src":"967:15:54"},{"name":"_4","nodeType":"YulIdentifier","src":"984:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"963:3:54"},"nodeType":"YulFunctionCall","src":"963:24:54"},{"kind":"number","nodeType":"YulLiteral","src":"989:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"956:6:54"},"nodeType":"YulFunctionCall","src":"956:35:54"},"nodeType":"YulExpressionStatement","src":"956:35:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"927:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"930:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"924:2:54"},"nodeType":"YulFunctionCall","src":"924:9:54"},"nodeType":"YulIf","src":"921:80:54"},{"nodeType":"YulAssignment","src":"1010:15:54","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1019:6:54"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1010:5:54"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:54","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:54","type":""}],"src":"146:885:54"},{"body":{"nodeType":"YulBlock","src":"1154:444:54","statements":[{"body":{"nodeType":"YulBlock","src":"1200:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1209:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1212:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1202:6:54"},"nodeType":"YulFunctionCall","src":"1202:12:54"},"nodeType":"YulExpressionStatement","src":"1202:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1175:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1184:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1171:3:54"},"nodeType":"YulFunctionCall","src":"1171:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1196:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1167:3:54"},"nodeType":"YulFunctionCall","src":"1167:32:54"},"nodeType":"YulIf","src":"1164:52:54"},{"nodeType":"YulVariableDeclaration","src":"1225:30:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1245:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1239:5:54"},"nodeType":"YulFunctionCall","src":"1239:16:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1229:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1264:28:54","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1282:2:54","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1278:3:54"},"nodeType":"YulFunctionCall","src":"1278:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1274:3:54"},"nodeType":"YulFunctionCall","src":"1274:18:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1268:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1319:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1328:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1331:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1321:6:54"},"nodeType":"YulFunctionCall","src":"1321:12:54"},"nodeType":"YulExpressionStatement","src":"1321:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1307:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"1315:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1304:2:54"},"nodeType":"YulFunctionCall","src":"1304:14:54"},"nodeType":"YulIf","src":"1301:34:54"},{"nodeType":"YulAssignment","src":"1344:71:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1387:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"1398:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1383:3:54"},"nodeType":"YulFunctionCall","src":"1383:22:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1407:7:54"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1354:28:54"},"nodeType":"YulFunctionCall","src":"1354:61:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1344:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"1424:41:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1450:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1461:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1446:3:54"},"nodeType":"YulFunctionCall","src":"1446:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1440:5:54"},"nodeType":"YulFunctionCall","src":"1440:25:54"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1428:8:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1494:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1503:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1506:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1496:6:54"},"nodeType":"YulFunctionCall","src":"1496:12:54"},"nodeType":"YulExpressionStatement","src":"1496:12:54"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1480:8:54"},{"name":"_1","nodeType":"YulIdentifier","src":"1490:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1477:2:54"},"nodeType":"YulFunctionCall","src":"1477:16:54"},"nodeType":"YulIf","src":"1474:36:54"},{"nodeType":"YulAssignment","src":"1519:73:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1562:9:54"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1573:8:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1558:3:54"},"nodeType":"YulFunctionCall","src":"1558:24:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1584:7:54"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1529:28:54"},"nodeType":"YulFunctionCall","src":"1529:63:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1519:6:54"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1112:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1123:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1135:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1143:6:54","type":""}],"src":"1036:562:54"},{"body":{"nodeType":"YulBlock","src":"1658:325:54","statements":[{"nodeType":"YulAssignment","src":"1668:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1682:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1685:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1678:3:54"},"nodeType":"YulFunctionCall","src":"1678:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1668:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"1699:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1729:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"1735:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1725:3:54"},"nodeType":"YulFunctionCall","src":"1725:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1703:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1776:31:54","statements":[{"nodeType":"YulAssignment","src":"1778:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1792:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1800:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1788:3:54"},"nodeType":"YulFunctionCall","src":"1788:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1778:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1756:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1749:6:54"},"nodeType":"YulFunctionCall","src":"1749:26:54"},"nodeType":"YulIf","src":"1746:61:54"},{"body":{"nodeType":"YulBlock","src":"1866:111:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1887:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1894:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1899:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1890:3:54"},"nodeType":"YulFunctionCall","src":"1890:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1880:6:54"},"nodeType":"YulFunctionCall","src":"1880:31:54"},"nodeType":"YulExpressionStatement","src":"1880:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1931:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1934:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1924:6:54"},"nodeType":"YulFunctionCall","src":"1924:15:54"},"nodeType":"YulExpressionStatement","src":"1924:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1959:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1962:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1952:6:54"},"nodeType":"YulFunctionCall","src":"1952:15:54"},"nodeType":"YulExpressionStatement","src":"1952:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1822:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1845:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1853:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1842:2:54"},"nodeType":"YulFunctionCall","src":"1842:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1819:2:54"},"nodeType":"YulFunctionCall","src":"1819:38:54"},"nodeType":"YulIf","src":"1816:161:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1638:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1647:6:54","type":""}],"src":"1603:380:54"}]},"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 abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        if gt(i, _1)\n        {\n            mstore(add(add(memPtr, _1), _4), 0)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200134b3803806200134b833981016040819052620000349162000251565b8151829082906200004d906003906020850190620000de565b50805162000063906004906020840190620000de565b505050620000806200007a6200008860201b60201c565b6200008c565b5050620002f7565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000ec90620002bb565b90600052602060002090601f0160209004810192826200011057600085556200015b565b82601f106200012b57805160ff19168380011785556200015b565b828001600101855582156200015b579182015b828111156200015b5782518255916020019190600101906200013e565b50620001699291506200016d565b5090565b5b808211156200016957600081556001016200016e565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ac57600080fd5b81516001600160401b0380821115620001c957620001c962000184565b604051601f8301601f19908116603f01168101908282118183101715620001f457620001f462000184565b816040528381526020925086838588010111156200021157600080fd5b600091505b8382101562000235578582018301518183018401529082019062000216565b83821115620002475760008385830101525b9695505050505050565b600080604083850312156200026557600080fd5b82516001600160401b03808211156200027d57600080fd5b6200028b868387016200019a565b93506020850151915080821115620002a257600080fd5b50620002b1858286016200019a565b9150509250929050565b600181811c90821680620002d057607f821691505b602082108103620002f157634e487b7160e01b600052602260045260246000fd5b50919050565b61104480620003076000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610223578063a9059cbb14610236578063dd62ed3e14610249578063f2fde38b1461028f57600080fd5b806370a08231146101b5578063715018a6146101eb5780638da5cb5b146101f357806395d89b411461021b57600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a57806340c10f191461018d57806342966c68146101a257600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d6102a2565b60405161011a9190610ded565b60405180910390f35b610136610131366004610e89565b610334565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610eb3565b61034c565b6040516012815260200161011a565b610136610188366004610e89565b610370565b6101a061019b366004610e89565b6103bc565b005b6101a06101b0366004610eef565b610427565b61014a6101c3366004610f08565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101a0610434565b60055460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011a565b61010d610448565b610136610231366004610e89565b610457565b610136610244366004610e89565b61050e565b61014a610257366004610f2a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101a061029d366004610f08565b61051c565b6060600380546102b190610f5d565b80601f01602080910402602001604051908101604052809291908181526020018280546102dd90610f5d565b801561032a5780601f106102ff5761010080835404028352916020019161032a565b820191906000526020600020905b81548152906001019060200180831161030d57829003601f168201915b5050505050905090565b6000336103428185856105b6565b5060019392505050565b60003361035a858285610736565b6103658585856107f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061034290829086906103b7908790610fdf565b6105b6565b6103c4610a58565b806000036104195760405162461bcd60e51b815260206004820152600b60248201527f616d6f756e74203d3d203000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6104238282610abf565b5050565b6104313382610bc5565b50565b61043c610a58565b6104466000610d76565b565b6060600480546102b190610f5d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105015760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610410565b61036582868684036105b6565b6000336103428185856107f3565b610524610a58565b73ffffffffffffffffffffffffffffffffffffffff81166105ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610410565b61043181610d76565b73ffffffffffffffffffffffffffffffffffffffff831661063e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff82166106c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107ed57818110156107e05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610410565b6107ed84848484036105b6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff82166109055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109a15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906109e5908490610fdf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a4b91815260200190565b60405180910390a36107ed565b60055473ffffffffffffffffffffffffffffffffffffffff1633146104465760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610410565b73ffffffffffffffffffffffffffffffffffffffff8216610b225760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610410565b8060026000828254610b349190610fdf565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610b6e908490610fdf565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610c4e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610cea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d26908490610ff7565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610729565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610e1a57858101830151858201604001528201610dfe565b81811115610e2c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e8457600080fd5b919050565b60008060408385031215610e9c57600080fd5b610ea583610e60565b946020939093013593505050565b600080600060608486031215610ec857600080fd5b610ed184610e60565b9250610edf60208501610e60565b9150604084013590509250925092565b600060208284031215610f0157600080fd5b5035919050565b600060208284031215610f1a57600080fd5b610f2382610e60565b9392505050565b60008060408385031215610f3d57600080fd5b610f4683610e60565b9150610f5460208401610e60565b90509250929050565b600181811c90821680610f7157607f821691505b602082108103610faa577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610ff257610ff2610fb0565b500190565b60008282101561100957611009610fb0565b50039056fea2646970667358221220e05136b3a8ca27c088b40059f87a5a6a4bfe724b1baf5a71e30f69c32c43f32b64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x134B CODESIZE SUB DUP1 PUSH3 0x134B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x251 JUMP JUMPDEST DUP2 MLOAD DUP3 SWAP1 DUP3 SWAP1 PUSH3 0x4D SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0xDE JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x63 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0xDE JUMP JUMPDEST POP POP POP PUSH3 0x80 PUSH3 0x7A PUSH3 0x88 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x8C JUMP JUMPDEST POP POP PUSH3 0x2F7 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x5 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 SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0xEC SWAP1 PUSH3 0x2BB JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x110 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x15B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x12B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x15B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x15B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x15B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x13E JUMP JUMPDEST POP PUSH3 0x169 SWAP3 SWAP2 POP PUSH3 0x16D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x169 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x16E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x1C9 JUMPI PUSH3 0x1C9 PUSH3 0x184 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x1F4 JUMPI PUSH3 0x1F4 PUSH3 0x184 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x235 JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x216 JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x28B DUP7 DUP4 DUP8 ADD PUSH3 0x19A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2B1 DUP6 DUP3 DUP7 ADD PUSH3 0x19A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x2D0 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x2F1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1044 DUP1 PUSH3 0x307 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x158 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0xDED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x136 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11A JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11A JUMP JUMPDEST PUSH2 0x136 PUSH2 0x166 CALLDATASIZE PUSH1 0x4 PUSH2 0xEB3 JUMP JUMPDEST PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11A JUMP JUMPDEST PUSH2 0x136 PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x370 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x3BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A0 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0xEEF JUMP JUMPDEST PUSH2 0x427 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0xF08 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x434 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11A JUMP JUMPDEST PUSH2 0x10D PUSH2 0x448 JUMP JUMPDEST PUSH2 0x136 PUSH2 0x231 CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x457 JUMP JUMPDEST PUSH2 0x136 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x50E JUMP JUMPDEST PUSH2 0x14A PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0xF08 JUMP JUMPDEST PUSH2 0x51C JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x2B1 SWAP1 PUSH2 0xF5D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2DD SWAP1 PUSH2 0xF5D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x32A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2FF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x32A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x30D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x342 DUP2 DUP6 DUP6 PUSH2 0x5B6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x35A DUP6 DUP3 DUP6 PUSH2 0x736 JUMP JUMPDEST PUSH2 0x365 DUP6 DUP6 DUP6 PUSH2 0x7F3 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x342 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x3B7 SWAP1 DUP8 SWAP1 PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x5B6 JUMP JUMPDEST PUSH2 0x3C4 PUSH2 0xA58 JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x419 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E74203D3D2030000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x423 DUP3 DUP3 PUSH2 0xABF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x431 CALLER DUP3 PUSH2 0xBC5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x43C PUSH2 0xA58 JUMP JUMPDEST PUSH2 0x446 PUSH1 0x0 PUSH2 0xD76 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x2B1 SWAP1 PUSH2 0xF5D JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH2 0x365 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x342 DUP2 DUP6 DUP6 PUSH2 0x7F3 JUMP JUMPDEST PUSH2 0x524 PUSH2 0xA58 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x5AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH2 0x431 DUP2 PUSH2 0xD76 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x63E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x6C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x7ED JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x7E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x410 JUMP JUMPDEST PUSH2 0x7ED DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x5B6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x87C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x905 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x9A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x9E5 SWAP1 DUP5 SWAP1 PUSH2 0xFDF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xA4B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x7ED JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x446 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x410 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xB34 SWAP2 SWAP1 PUSH2 0xFDF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xB6E SWAP1 DUP5 SWAP1 PUSH2 0xFDF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xCEA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP4 DUP4 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xD26 SWAP1 DUP5 SWAP1 PUSH2 0xFF7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x729 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE1A JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xDFE JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEA5 DUP4 PUSH2 0xE60 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED1 DUP5 PUSH2 0xE60 JUMP JUMPDEST SWAP3 POP PUSH2 0xEDF PUSH1 0x20 DUP6 ADD PUSH2 0xE60 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF23 DUP3 PUSH2 0xE60 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF46 DUP4 PUSH2 0xE60 JUMP JUMPDEST SWAP2 POP PUSH2 0xF54 PUSH1 0x20 DUP5 ADD PUSH2 0xE60 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF71 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xFAA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xFF2 JUMPI PUSH2 0xFF2 PUSH2 0xFB0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1009 JUMPI PUSH2 0x1009 PUSH2 0xFB0 JUMP JUMPDEST POP SUB SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 MLOAD CALLDATASIZE 0xB3 0xA8 0xCA 0x27 0xC0 DUP9 0xB4 STOP MSIZE 0xF8 PUSH27 0x5A6A4BFE724B1BAF5A71E30F69C32C43F32B64736F6C634300080E STOP CALLER ","sourceMap":"168:400:20:-:0;;;215:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:13:1;;299:5:20;;306:7;;2044:13:1;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2067:17:1;;;;:7;;:17;;;;;:::i;:::-;;1978:113;;936:32:0;955:12;:10;;;:12;;:::i;:::-;936:18;:32::i;:::-;215:102:20;;168:400;;640:96:9;719:10;;640:96::o;2433:187:0:-;2525:6;;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;168:400:20:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;168:400:20;;;-1:-1:-1;168:400:20;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:54;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:54;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:54;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:54:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:54;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;168:400:20;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_697":{"entryPoint":null,"id":697,"parameterSlots":3,"returnSlots":0},"@_approve_632":{"entryPoint":1462,"id":632,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_686":{"entryPoint":null,"id":686,"parameterSlots":3,"returnSlots":0},"@_burn_587":{"entryPoint":3013,"id":587,"parameterSlots":2,"returnSlots":0},"@_checkOwner_54":{"entryPoint":2648,"id":54,"parameterSlots":0,"returnSlots":0},"@_mint_515":{"entryPoint":2751,"id":515,"parameterSlots":2,"returnSlots":0},"@_msgSender_2136":{"entryPoint":null,"id":2136,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_675":{"entryPoint":1846,"id":675,"parameterSlots":3,"returnSlots":0},"@_transferOwnership_111":{"entryPoint":3446,"id":111,"parameterSlots":1,"returnSlots":0},"@_transfer_459":{"entryPoint":2035,"id":459,"parameterSlots":3,"returnSlots":0},"@allowance_254":{"entryPoint":null,"id":254,"parameterSlots":2,"returnSlots":1},"@approve_279":{"entryPoint":820,"id":279,"parameterSlots":2,"returnSlots":1},"@balanceOf_211":{"entryPoint":null,"id":211,"parameterSlots":1,"returnSlots":1},"@burn_3727":{"entryPoint":1063,"id":3727,"parameterSlots":1,"returnSlots":0},"@decimals_187":{"entryPoint":null,"id":187,"parameterSlots":0,"returnSlots":1},"@decreaseAllowance_382":{"entryPoint":1111,"id":382,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_341":{"entryPoint":880,"id":341,"parameterSlots":2,"returnSlots":1},"@mint_3715":{"entryPoint":956,"id":3715,"parameterSlots":2,"returnSlots":0},"@name_167":{"entryPoint":674,"id":167,"parameterSlots":0,"returnSlots":1},"@owner_40":{"entryPoint":null,"id":40,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_68":{"entryPoint":1076,"id":68,"parameterSlots":0,"returnSlots":0},"@symbol_177":{"entryPoint":1096,"id":177,"parameterSlots":0,"returnSlots":1},"@totalSupply_197":{"entryPoint":null,"id":197,"parameterSlots":0,"returnSlots":1},"@transferFrom_312":{"entryPoint":844,"id":312,"parameterSlots":3,"returnSlots":1},"@transferOwnership_91":{"entryPoint":1308,"id":91,"parameterSlots":1,"returnSlots":0},"@transfer_236":{"entryPoint":1294,"id":236,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":3680,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3848,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3882,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3763,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3721,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":3823,"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_bool__to_t_bool__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":3565,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":4063,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4087,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":3933,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":4016,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8856:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"135:535:54","statements":[{"nodeType":"YulVariableDeclaration","src":"145:12:54","value":{"kind":"number","nodeType":"YulLiteral","src":"155:2:54","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"149:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"173:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"184:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"166:6:54"},"nodeType":"YulFunctionCall","src":"166:21:54"},"nodeType":"YulExpressionStatement","src":"166:21:54"},{"nodeType":"YulVariableDeclaration","src":"196:27:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"216:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"210:5:54"},"nodeType":"YulFunctionCall","src":"210:13:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"200:6:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"243:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"254:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"239:3:54"},"nodeType":"YulFunctionCall","src":"239:18:54"},{"name":"length","nodeType":"YulIdentifier","src":"259:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"232:6:54"},"nodeType":"YulFunctionCall","src":"232:34:54"},"nodeType":"YulExpressionStatement","src":"232:34:54"},{"nodeType":"YulVariableDeclaration","src":"275:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"284:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"279:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"344:90:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"373:9:54"},{"name":"i","nodeType":"YulIdentifier","src":"384:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"369:3:54"},"nodeType":"YulFunctionCall","src":"369:17:54"},{"kind":"number","nodeType":"YulLiteral","src":"388:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:54"},"nodeType":"YulFunctionCall","src":"365:26:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"407:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"415:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:54"},"nodeType":"YulFunctionCall","src":"403:14:54"},{"name":"_1","nodeType":"YulIdentifier","src":"419:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"399:3:54"},"nodeType":"YulFunctionCall","src":"399:23:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"393:5:54"},"nodeType":"YulFunctionCall","src":"393:30:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"358:6:54"},"nodeType":"YulFunctionCall","src":"358:66:54"},"nodeType":"YulExpressionStatement","src":"358:66:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"305:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"308:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"302:2:54"},"nodeType":"YulFunctionCall","src":"302:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"316:19:54","statements":[{"nodeType":"YulAssignment","src":"318:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"327:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"330:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"323:3:54"},"nodeType":"YulFunctionCall","src":"323:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"318:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"298:3:54","statements":[]},"src":"294:140:54"},{"body":{"nodeType":"YulBlock","src":"468:66:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"497:9:54"},{"name":"length","nodeType":"YulIdentifier","src":"508:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"493:3:54"},"nodeType":"YulFunctionCall","src":"493:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"517:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"489:3:54"},"nodeType":"YulFunctionCall","src":"489:31:54"},{"kind":"number","nodeType":"YulLiteral","src":"522:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"482:6:54"},"nodeType":"YulFunctionCall","src":"482:42:54"},"nodeType":"YulExpressionStatement","src":"482:42:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"449:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"452:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"446:2:54"},"nodeType":"YulFunctionCall","src":"446:13:54"},"nodeType":"YulIf","src":"443:91:54"},{"nodeType":"YulAssignment","src":"543:121:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"559:9:54"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"578:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"586:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"574:3:54"},"nodeType":"YulFunctionCall","src":"574:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"591:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"570:3:54"},"nodeType":"YulFunctionCall","src":"570:88:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"555:3:54"},"nodeType":"YulFunctionCall","src":"555:104:54"},{"kind":"number","nodeType":"YulLiteral","src":"661:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"551:3:54"},"nodeType":"YulFunctionCall","src":"551:113:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"543:4:54"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"104:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"115:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"126:4:54","type":""}],"src":"14:656:54"},{"body":{"nodeType":"YulBlock","src":"724:147:54","statements":[{"nodeType":"YulAssignment","src":"734:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"756:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"743:12:54"},"nodeType":"YulFunctionCall","src":"743:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"734:5:54"}]},{"body":{"nodeType":"YulBlock","src":"849:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"858:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"861:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"851:6:54"},"nodeType":"YulFunctionCall","src":"851:12:54"},"nodeType":"YulExpressionStatement","src":"851:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"785:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"796:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"803:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"792:3:54"},"nodeType":"YulFunctionCall","src":"792:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"782:2:54"},"nodeType":"YulFunctionCall","src":"782:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"775:6:54"},"nodeType":"YulFunctionCall","src":"775:73:54"},"nodeType":"YulIf","src":"772:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"703:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"714:5:54","type":""}],"src":"675:196:54"},{"body":{"nodeType":"YulBlock","src":"963:167:54","statements":[{"body":{"nodeType":"YulBlock","src":"1009:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1018:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1021:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1011:6:54"},"nodeType":"YulFunctionCall","src":"1011:12:54"},"nodeType":"YulExpressionStatement","src":"1011:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"984:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"993:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"980:3:54"},"nodeType":"YulFunctionCall","src":"980:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1005:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"976:3:54"},"nodeType":"YulFunctionCall","src":"976:32:54"},"nodeType":"YulIf","src":"973:52:54"},{"nodeType":"YulAssignment","src":"1034:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1063:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1044:18:54"},"nodeType":"YulFunctionCall","src":"1044:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1034:6:54"}]},{"nodeType":"YulAssignment","src":"1082:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1109:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1105:3:54"},"nodeType":"YulFunctionCall","src":"1105:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1092:12:54"},"nodeType":"YulFunctionCall","src":"1092:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1082:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"921:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"932:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"944:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"952:6:54","type":""}],"src":"876:254:54"},{"body":{"nodeType":"YulBlock","src":"1230:92:54","statements":[{"nodeType":"YulAssignment","src":"1240:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1252:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1263:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1248:3:54"},"nodeType":"YulFunctionCall","src":"1248:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1240:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1282:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1307:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1300:6:54"},"nodeType":"YulFunctionCall","src":"1300:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1293:6:54"},"nodeType":"YulFunctionCall","src":"1293:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1275:6:54"},"nodeType":"YulFunctionCall","src":"1275:41:54"},"nodeType":"YulExpressionStatement","src":"1275:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1199:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1210:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1221:4:54","type":""}],"src":"1135:187:54"},{"body":{"nodeType":"YulBlock","src":"1428:76:54","statements":[{"nodeType":"YulAssignment","src":"1438:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1450:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1461:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1446:3:54"},"nodeType":"YulFunctionCall","src":"1446:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1438:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1480:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"1491:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1473:6:54"},"nodeType":"YulFunctionCall","src":"1473:25:54"},"nodeType":"YulExpressionStatement","src":"1473:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1397:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1408:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1419:4:54","type":""}],"src":"1327:177:54"},{"body":{"nodeType":"YulBlock","src":"1613:224:54","statements":[{"body":{"nodeType":"YulBlock","src":"1659:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1668:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1671:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1661:6:54"},"nodeType":"YulFunctionCall","src":"1661:12:54"},"nodeType":"YulExpressionStatement","src":"1661:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1634:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1643:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1630:3:54"},"nodeType":"YulFunctionCall","src":"1630:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1655:2:54","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1626:3:54"},"nodeType":"YulFunctionCall","src":"1626:32:54"},"nodeType":"YulIf","src":"1623:52:54"},{"nodeType":"YulAssignment","src":"1684:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1713:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1694:18:54"},"nodeType":"YulFunctionCall","src":"1694:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1684:6:54"}]},{"nodeType":"YulAssignment","src":"1732:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1765:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1776:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1761:3:54"},"nodeType":"YulFunctionCall","src":"1761:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1742:18:54"},"nodeType":"YulFunctionCall","src":"1742:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1732:6:54"}]},{"nodeType":"YulAssignment","src":"1789:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1816:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1827:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1812:3:54"},"nodeType":"YulFunctionCall","src":"1812:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1799:12:54"},"nodeType":"YulFunctionCall","src":"1799:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1789:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1563:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1574:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1586:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1594:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1602:6:54","type":""}],"src":"1509:328:54"},{"body":{"nodeType":"YulBlock","src":"1939:87:54","statements":[{"nodeType":"YulAssignment","src":"1949:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1961:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1972:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1957:3:54"},"nodeType":"YulFunctionCall","src":"1957:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1949:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1991:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2006:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2014:4:54","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2002:3:54"},"nodeType":"YulFunctionCall","src":"2002:17:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1984:6:54"},"nodeType":"YulFunctionCall","src":"1984:36:54"},"nodeType":"YulExpressionStatement","src":"1984:36:54"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1908:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1919:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1930:4:54","type":""}],"src":"1842:184:54"},{"body":{"nodeType":"YulBlock","src":"2101:110:54","statements":[{"body":{"nodeType":"YulBlock","src":"2147:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2156:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2159:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2149:6:54"},"nodeType":"YulFunctionCall","src":"2149:12:54"},"nodeType":"YulExpressionStatement","src":"2149:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2122:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2131:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2118:3:54"},"nodeType":"YulFunctionCall","src":"2118:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2143:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2114:3:54"},"nodeType":"YulFunctionCall","src":"2114:32:54"},"nodeType":"YulIf","src":"2111:52:54"},{"nodeType":"YulAssignment","src":"2172:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2195:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2182:12:54"},"nodeType":"YulFunctionCall","src":"2182:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2172:6:54"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2067:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2078:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2090:6:54","type":""}],"src":"2031:180:54"},{"body":{"nodeType":"YulBlock","src":"2286:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"2332:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2341:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2344:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2334:6:54"},"nodeType":"YulFunctionCall","src":"2334:12:54"},"nodeType":"YulExpressionStatement","src":"2334:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2307:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2316:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2303:3:54"},"nodeType":"YulFunctionCall","src":"2303:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2328:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2299:3:54"},"nodeType":"YulFunctionCall","src":"2299:32:54"},"nodeType":"YulIf","src":"2296:52:54"},{"nodeType":"YulAssignment","src":"2357:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2386:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2367:18:54"},"nodeType":"YulFunctionCall","src":"2367:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2357:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2252:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2263:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2275:6:54","type":""}],"src":"2216:186:54"},{"body":{"nodeType":"YulBlock","src":"2508:125:54","statements":[{"nodeType":"YulAssignment","src":"2518:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2530:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2541:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2526:3:54"},"nodeType":"YulFunctionCall","src":"2526:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2518:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2560:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2575:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2583:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2571:3:54"},"nodeType":"YulFunctionCall","src":"2571:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2553:6:54"},"nodeType":"YulFunctionCall","src":"2553:74:54"},"nodeType":"YulExpressionStatement","src":"2553:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2477:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2488:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2499:4:54","type":""}],"src":"2407:226:54"},{"body":{"nodeType":"YulBlock","src":"2725:173:54","statements":[{"body":{"nodeType":"YulBlock","src":"2771:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2780:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2783:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2773:6:54"},"nodeType":"YulFunctionCall","src":"2773:12:54"},"nodeType":"YulExpressionStatement","src":"2773:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2746:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2755:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2742:3:54"},"nodeType":"YulFunctionCall","src":"2742:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2767:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2738:3:54"},"nodeType":"YulFunctionCall","src":"2738:32:54"},"nodeType":"YulIf","src":"2735:52:54"},{"nodeType":"YulAssignment","src":"2796:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2825:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2806:18:54"},"nodeType":"YulFunctionCall","src":"2806:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2796:6:54"}]},{"nodeType":"YulAssignment","src":"2844:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2877:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2888:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2873:3:54"},"nodeType":"YulFunctionCall","src":"2873:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2854:18:54"},"nodeType":"YulFunctionCall","src":"2854:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2844:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2683:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2694:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2706:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2714:6:54","type":""}],"src":"2638:260:54"},{"body":{"nodeType":"YulBlock","src":"2958:382:54","statements":[{"nodeType":"YulAssignment","src":"2968:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2982:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"2985:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2978:3:54"},"nodeType":"YulFunctionCall","src":"2978:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2968:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"2999:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3029:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"3035:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3025:3:54"},"nodeType":"YulFunctionCall","src":"3025:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"3003:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3076:31:54","statements":[{"nodeType":"YulAssignment","src":"3078:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3092:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"3100:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3088:3:54"},"nodeType":"YulFunctionCall","src":"3088:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3078:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3056:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3049:6:54"},"nodeType":"YulFunctionCall","src":"3049:26:54"},"nodeType":"YulIf","src":"3046:61:54"},{"body":{"nodeType":"YulBlock","src":"3166:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3187:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3190:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3180:6:54"},"nodeType":"YulFunctionCall","src":"3180:88:54"},"nodeType":"YulExpressionStatement","src":"3180:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3288:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3291:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3281:6:54"},"nodeType":"YulFunctionCall","src":"3281:15:54"},"nodeType":"YulExpressionStatement","src":"3281:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3316:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3319:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3309:6:54"},"nodeType":"YulFunctionCall","src":"3309:15:54"},"nodeType":"YulExpressionStatement","src":"3309:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3122:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3145:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"3153:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3142:2:54"},"nodeType":"YulFunctionCall","src":"3142:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3119:2:54"},"nodeType":"YulFunctionCall","src":"3119:38:54"},"nodeType":"YulIf","src":"3116:218:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2938:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2947:6:54","type":""}],"src":"2903:437:54"},{"body":{"nodeType":"YulBlock","src":"3377:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3394:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3397:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3387:6:54"},"nodeType":"YulFunctionCall","src":"3387:88:54"},"nodeType":"YulExpressionStatement","src":"3387:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3491:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3494:4:54","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3484:6:54"},"nodeType":"YulFunctionCall","src":"3484:15:54"},"nodeType":"YulExpressionStatement","src":"3484:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3515:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3518:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3508:6:54"},"nodeType":"YulFunctionCall","src":"3508:15:54"},"nodeType":"YulExpressionStatement","src":"3508:15:54"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"3345:184:54"},{"body":{"nodeType":"YulBlock","src":"3582:80:54","statements":[{"body":{"nodeType":"YulBlock","src":"3609:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3611:16:54"},"nodeType":"YulFunctionCall","src":"3611:18:54"},"nodeType":"YulExpressionStatement","src":"3611:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3598:1:54"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"3605:1:54"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3601:3:54"},"nodeType":"YulFunctionCall","src":"3601:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3595:2:54"},"nodeType":"YulFunctionCall","src":"3595:13:54"},"nodeType":"YulIf","src":"3592:39:54"},{"nodeType":"YulAssignment","src":"3640:16:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3651:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"3654:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3647:3:54"},"nodeType":"YulFunctionCall","src":"3647:9:54"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3640:3:54"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3565:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"3568:1:54","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"3574:3:54","type":""}],"src":"3534:128:54"},{"body":{"nodeType":"YulBlock","src":"3841:161:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3858:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3869:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3851:6:54"},"nodeType":"YulFunctionCall","src":"3851:21:54"},"nodeType":"YulExpressionStatement","src":"3851:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3892:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3903:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3888:3:54"},"nodeType":"YulFunctionCall","src":"3888:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"3908:2:54","type":"","value":"11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3881:6:54"},"nodeType":"YulFunctionCall","src":"3881:30:54"},"nodeType":"YulExpressionStatement","src":"3881:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3931:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3942:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3927:3:54"},"nodeType":"YulFunctionCall","src":"3927:18:54"},{"hexValue":"616d6f756e74203d3d2030","kind":"string","nodeType":"YulLiteral","src":"3947:13:54","type":"","value":"amount == 0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3920:6:54"},"nodeType":"YulFunctionCall","src":"3920:41:54"},"nodeType":"YulExpressionStatement","src":"3920:41:54"},{"nodeType":"YulAssignment","src":"3970:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3982:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3993:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3978:3:54"},"nodeType":"YulFunctionCall","src":"3978:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3970:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3818:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3832:4:54","type":""}],"src":"3667:335:54"},{"body":{"nodeType":"YulBlock","src":"4181:227:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4198:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4209:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4191:6:54"},"nodeType":"YulFunctionCall","src":"4191:21:54"},"nodeType":"YulExpressionStatement","src":"4191:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4232:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4243:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4228:3:54"},"nodeType":"YulFunctionCall","src":"4228:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"4248:2:54","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4221:6:54"},"nodeType":"YulFunctionCall","src":"4221:30:54"},"nodeType":"YulExpressionStatement","src":"4221:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4271:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4282:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4267:3:54"},"nodeType":"YulFunctionCall","src":"4267:18:54"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"4287:34:54","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4260:6:54"},"nodeType":"YulFunctionCall","src":"4260:62:54"},"nodeType":"YulExpressionStatement","src":"4260:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4342:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4353:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4338:3:54"},"nodeType":"YulFunctionCall","src":"4338:18:54"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"4358:7:54","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:54"},"nodeType":"YulFunctionCall","src":"4331:35:54"},"nodeType":"YulExpressionStatement","src":"4331:35:54"},{"nodeType":"YulAssignment","src":"4375:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4387:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4398:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4383:3:54"},"nodeType":"YulFunctionCall","src":"4383:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4375:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4158:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4172:4:54","type":""}],"src":"4007:401:54"},{"body":{"nodeType":"YulBlock","src":"4587:228:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4604:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4597:6:54"},"nodeType":"YulFunctionCall","src":"4597:21:54"},"nodeType":"YulExpressionStatement","src":"4597:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4638:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4649:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4634:3:54"},"nodeType":"YulFunctionCall","src":"4634:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"4654:2:54","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4627:6:54"},"nodeType":"YulFunctionCall","src":"4627:30:54"},"nodeType":"YulExpressionStatement","src":"4627:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4677:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4688:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4673:3:54"},"nodeType":"YulFunctionCall","src":"4673:18:54"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"4693:34:54","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4666:6:54"},"nodeType":"YulFunctionCall","src":"4666:62:54"},"nodeType":"YulExpressionStatement","src":"4666:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4748:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4759:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4744:3:54"},"nodeType":"YulFunctionCall","src":"4744:18:54"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"4764:8:54","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4737:6:54"},"nodeType":"YulFunctionCall","src":"4737:36:54"},"nodeType":"YulExpressionStatement","src":"4737:36:54"},{"nodeType":"YulAssignment","src":"4782:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4794:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4805:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4790:3:54"},"nodeType":"YulFunctionCall","src":"4790:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4782:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4564:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4578:4:54","type":""}],"src":"4413:402:54"},{"body":{"nodeType":"YulBlock","src":"4994:226:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5011:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5022:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5004:6:54"},"nodeType":"YulFunctionCall","src":"5004:21:54"},"nodeType":"YulExpressionStatement","src":"5004:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5045:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5056:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5041:3:54"},"nodeType":"YulFunctionCall","src":"5041:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5061:2:54","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5034:6:54"},"nodeType":"YulFunctionCall","src":"5034:30:54"},"nodeType":"YulExpressionStatement","src":"5034:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5084:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5095:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5080:3:54"},"nodeType":"YulFunctionCall","src":"5080:18:54"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"5100:34:54","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5073:6:54"},"nodeType":"YulFunctionCall","src":"5073:62:54"},"nodeType":"YulExpressionStatement","src":"5073:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5155:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5166:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5151:3:54"},"nodeType":"YulFunctionCall","src":"5151:18:54"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"5171:6:54","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5144:6:54"},"nodeType":"YulFunctionCall","src":"5144:34:54"},"nodeType":"YulExpressionStatement","src":"5144:34:54"},{"nodeType":"YulAssignment","src":"5187:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5199:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5210:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5195:3:54"},"nodeType":"YulFunctionCall","src":"5195:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5187:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4971:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4985:4:54","type":""}],"src":"4820:400:54"},{"body":{"nodeType":"YulBlock","src":"5399:224:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5416:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5427:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5409:6:54"},"nodeType":"YulFunctionCall","src":"5409:21:54"},"nodeType":"YulExpressionStatement","src":"5409:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5450:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5461:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5446:3:54"},"nodeType":"YulFunctionCall","src":"5446:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5466:2:54","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5439:6:54"},"nodeType":"YulFunctionCall","src":"5439:30:54"},"nodeType":"YulExpressionStatement","src":"5439:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5489:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5500:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:54"},"nodeType":"YulFunctionCall","src":"5485:18:54"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"5505:34:54","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5478:6:54"},"nodeType":"YulFunctionCall","src":"5478:62:54"},"nodeType":"YulExpressionStatement","src":"5478:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5560:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5571:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5556:3:54"},"nodeType":"YulFunctionCall","src":"5556:18:54"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"5576:4:54","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5549:6:54"},"nodeType":"YulFunctionCall","src":"5549:32:54"},"nodeType":"YulExpressionStatement","src":"5549:32:54"},{"nodeType":"YulAssignment","src":"5590:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5602:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5613:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5598:3:54"},"nodeType":"YulFunctionCall","src":"5598:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5590:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5376:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5390:4:54","type":""}],"src":"5225:398:54"},{"body":{"nodeType":"YulBlock","src":"5802:179:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5819:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5830:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5812:6:54"},"nodeType":"YulFunctionCall","src":"5812:21:54"},"nodeType":"YulExpressionStatement","src":"5812:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5853:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5864:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:54"},"nodeType":"YulFunctionCall","src":"5849:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5869:2:54","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:54"},"nodeType":"YulFunctionCall","src":"5842:30:54"},"nodeType":"YulExpressionStatement","src":"5842:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5892:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5903:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5888:3:54"},"nodeType":"YulFunctionCall","src":"5888:18:54"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"5908:31:54","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5881:6:54"},"nodeType":"YulFunctionCall","src":"5881:59:54"},"nodeType":"YulExpressionStatement","src":"5881:59:54"},{"nodeType":"YulAssignment","src":"5949:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5961:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5972:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5957:3:54"},"nodeType":"YulFunctionCall","src":"5957:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5949:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5779:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5793:4:54","type":""}],"src":"5628:353:54"},{"body":{"nodeType":"YulBlock","src":"6160:227:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6177:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6188:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6170:6:54"},"nodeType":"YulFunctionCall","src":"6170:21:54"},"nodeType":"YulExpressionStatement","src":"6170:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6211:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6222:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6207:3:54"},"nodeType":"YulFunctionCall","src":"6207:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6227:2:54","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6200:6:54"},"nodeType":"YulFunctionCall","src":"6200:30:54"},"nodeType":"YulExpressionStatement","src":"6200:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6250:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6261:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6246:3:54"},"nodeType":"YulFunctionCall","src":"6246:18:54"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"6266:34:54","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6239:6:54"},"nodeType":"YulFunctionCall","src":"6239:62:54"},"nodeType":"YulExpressionStatement","src":"6239:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6321:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6332:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6317:3:54"},"nodeType":"YulFunctionCall","src":"6317:18:54"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"6337:7:54","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6310:6:54"},"nodeType":"YulFunctionCall","src":"6310:35:54"},"nodeType":"YulExpressionStatement","src":"6310:35:54"},{"nodeType":"YulAssignment","src":"6354:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6366:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6377:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6362:3:54"},"nodeType":"YulFunctionCall","src":"6362:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6354:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6137:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6151:4:54","type":""}],"src":"5986:401:54"},{"body":{"nodeType":"YulBlock","src":"6566:225:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6583:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6594:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6576:6:54"},"nodeType":"YulFunctionCall","src":"6576:21:54"},"nodeType":"YulExpressionStatement","src":"6576:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6617:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6628:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6613:3:54"},"nodeType":"YulFunctionCall","src":"6613:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6633:2:54","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6606:6:54"},"nodeType":"YulFunctionCall","src":"6606:30:54"},"nodeType":"YulExpressionStatement","src":"6606:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6656:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6667:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6652:3:54"},"nodeType":"YulFunctionCall","src":"6652:18:54"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"6672:34:54","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6645:6:54"},"nodeType":"YulFunctionCall","src":"6645:62:54"},"nodeType":"YulExpressionStatement","src":"6645:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6727:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6738:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6723:3:54"},"nodeType":"YulFunctionCall","src":"6723:18:54"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"6743:5:54","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6716:6:54"},"nodeType":"YulFunctionCall","src":"6716:33:54"},"nodeType":"YulExpressionStatement","src":"6716:33:54"},{"nodeType":"YulAssignment","src":"6758:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6770:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6781:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6766:3:54"},"nodeType":"YulFunctionCall","src":"6766:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6758:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6543:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6557:4:54","type":""}],"src":"6392:399:54"},{"body":{"nodeType":"YulBlock","src":"6970:228:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6987:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6998:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6980:6:54"},"nodeType":"YulFunctionCall","src":"6980:21:54"},"nodeType":"YulExpressionStatement","src":"6980:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7021:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7032:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7017:3:54"},"nodeType":"YulFunctionCall","src":"7017:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7037:2:54","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7010:6:54"},"nodeType":"YulFunctionCall","src":"7010:30:54"},"nodeType":"YulExpressionStatement","src":"7010:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7060:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7071:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7056:3:54"},"nodeType":"YulFunctionCall","src":"7056:18:54"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"7076:34:54","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7049:6:54"},"nodeType":"YulFunctionCall","src":"7049:62:54"},"nodeType":"YulExpressionStatement","src":"7049:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7131:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7142:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7127:3:54"},"nodeType":"YulFunctionCall","src":"7127:18:54"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"7147:8:54","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7120:6:54"},"nodeType":"YulFunctionCall","src":"7120:36:54"},"nodeType":"YulExpressionStatement","src":"7120:36:54"},{"nodeType":"YulAssignment","src":"7165:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7177:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7188:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7173:3:54"},"nodeType":"YulFunctionCall","src":"7173:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7165:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6947:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6961:4:54","type":""}],"src":"6796:402:54"},{"body":{"nodeType":"YulBlock","src":"7377:182:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7394:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7405:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7387:6:54"},"nodeType":"YulFunctionCall","src":"7387:21:54"},"nodeType":"YulExpressionStatement","src":"7387:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7428:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7439:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7424:3:54"},"nodeType":"YulFunctionCall","src":"7424:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7444:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7417:6:54"},"nodeType":"YulFunctionCall","src":"7417:30:54"},"nodeType":"YulExpressionStatement","src":"7417:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7467:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7478:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7463:3:54"},"nodeType":"YulFunctionCall","src":"7463:18:54"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7483:34:54","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7456:6:54"},"nodeType":"YulFunctionCall","src":"7456:62:54"},"nodeType":"YulExpressionStatement","src":"7456:62:54"},{"nodeType":"YulAssignment","src":"7527:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7539:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7550:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7535:3:54"},"nodeType":"YulFunctionCall","src":"7535:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7527:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7354:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7368:4:54","type":""}],"src":"7203:356:54"},{"body":{"nodeType":"YulBlock","src":"7738:181:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7755:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7766:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7748:6:54"},"nodeType":"YulFunctionCall","src":"7748:21:54"},"nodeType":"YulExpressionStatement","src":"7748:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7789:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7800:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7785:3:54"},"nodeType":"YulFunctionCall","src":"7785:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7805:2:54","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7778:6:54"},"nodeType":"YulFunctionCall","src":"7778:30:54"},"nodeType":"YulExpressionStatement","src":"7778:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7828:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7839:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7824:3:54"},"nodeType":"YulFunctionCall","src":"7824:18:54"},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"7844:33:54","type":"","value":"ERC20: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7817:6:54"},"nodeType":"YulFunctionCall","src":"7817:61:54"},"nodeType":"YulExpressionStatement","src":"7817:61:54"},{"nodeType":"YulAssignment","src":"7887:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7899:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7910:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7895:3:54"},"nodeType":"YulFunctionCall","src":"7895:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7887:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7715:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7729:4:54","type":""}],"src":"7564:355:54"},{"body":{"nodeType":"YulBlock","src":"8098:223:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8115:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8126:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8108:6:54"},"nodeType":"YulFunctionCall","src":"8108:21:54"},"nodeType":"YulExpressionStatement","src":"8108:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8149:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8160:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8145:3:54"},"nodeType":"YulFunctionCall","src":"8145:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"8165:2:54","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8138:6:54"},"nodeType":"YulFunctionCall","src":"8138:30:54"},"nodeType":"YulExpressionStatement","src":"8138:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8188:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8199:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8184:3:54"},"nodeType":"YulFunctionCall","src":"8184:18:54"},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f20616464726573","kind":"string","nodeType":"YulLiteral","src":"8204:34:54","type":"","value":"ERC20: burn from the zero addres"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8177:6:54"},"nodeType":"YulFunctionCall","src":"8177:62:54"},"nodeType":"YulExpressionStatement","src":"8177:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8259:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8270:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8255:3:54"},"nodeType":"YulFunctionCall","src":"8255:18:54"},{"hexValue":"73","kind":"string","nodeType":"YulLiteral","src":"8275:3:54","type":"","value":"s"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8248:6:54"},"nodeType":"YulFunctionCall","src":"8248:31:54"},"nodeType":"YulExpressionStatement","src":"8248:31:54"},{"nodeType":"YulAssignment","src":"8288:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8300:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8311:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8296:3:54"},"nodeType":"YulFunctionCall","src":"8296:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8288:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8075:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8089:4:54","type":""}],"src":"7924:397:54"},{"body":{"nodeType":"YulBlock","src":"8500:224:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8517:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8528:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8510:6:54"},"nodeType":"YulFunctionCall","src":"8510:21:54"},"nodeType":"YulExpressionStatement","src":"8510:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8551:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8562:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8547:3:54"},"nodeType":"YulFunctionCall","src":"8547:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"8567:2:54","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8540:6:54"},"nodeType":"YulFunctionCall","src":"8540:30:54"},"nodeType":"YulExpressionStatement","src":"8540:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8590:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8601:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8586:3:54"},"nodeType":"YulFunctionCall","src":"8586:18:54"},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e","kind":"string","nodeType":"YulLiteral","src":"8606:34:54","type":"","value":"ERC20: burn amount exceeds balan"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8579:6:54"},"nodeType":"YulFunctionCall","src":"8579:62:54"},"nodeType":"YulExpressionStatement","src":"8579:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8661:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8672:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8657:3:54"},"nodeType":"YulFunctionCall","src":"8657:18:54"},{"hexValue":"6365","kind":"string","nodeType":"YulLiteral","src":"8677:4:54","type":"","value":"ce"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8650:6:54"},"nodeType":"YulFunctionCall","src":"8650:32:54"},"nodeType":"YulExpressionStatement","src":"8650:32:54"},{"nodeType":"YulAssignment","src":"8691:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8703:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8714:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8699:3:54"},"nodeType":"YulFunctionCall","src":"8699:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8691:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8477:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8491:4:54","type":""}],"src":"8326:398:54"},{"body":{"nodeType":"YulBlock","src":"8778:76:54","statements":[{"body":{"nodeType":"YulBlock","src":"8800:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8802:16:54"},"nodeType":"YulFunctionCall","src":"8802:18:54"},"nodeType":"YulExpressionStatement","src":"8802:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8794:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"8797:1:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8791:2:54"},"nodeType":"YulFunctionCall","src":"8791:8:54"},"nodeType":"YulIf","src":"8788:34:54"},{"nodeType":"YulAssignment","src":"8831:17:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8843:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"8846:1:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8839:3:54"},"nodeType":"YulFunctionCall","src":"8839:9:54"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8831:4:54"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8760:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"8763:1:54","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8769:4:54","type":""}],"src":"8729:125:54"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { 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        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_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_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"amount == 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: burn amount exceeds balan\")\n        mstore(add(headStart, 96), \"ce\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610223578063a9059cbb14610236578063dd62ed3e14610249578063f2fde38b1461028f57600080fd5b806370a08231146101b5578063715018a6146101eb5780638da5cb5b146101f357806395d89b411461021b57600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a57806340c10f191461018d57806342966c68146101a257600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d6102a2565b60405161011a9190610ded565b60405180910390f35b610136610131366004610e89565b610334565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610eb3565b61034c565b6040516012815260200161011a565b610136610188366004610e89565b610370565b6101a061019b366004610e89565b6103bc565b005b6101a06101b0366004610eef565b610427565b61014a6101c3366004610f08565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101a0610434565b60055460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011a565b61010d610448565b610136610231366004610e89565b610457565b610136610244366004610e89565b61050e565b61014a610257366004610f2a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101a061029d366004610f08565b61051c565b6060600380546102b190610f5d565b80601f01602080910402602001604051908101604052809291908181526020018280546102dd90610f5d565b801561032a5780601f106102ff5761010080835404028352916020019161032a565b820191906000526020600020905b81548152906001019060200180831161030d57829003601f168201915b5050505050905090565b6000336103428185856105b6565b5060019392505050565b60003361035a858285610736565b6103658585856107f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061034290829086906103b7908790610fdf565b6105b6565b6103c4610a58565b806000036104195760405162461bcd60e51b815260206004820152600b60248201527f616d6f756e74203d3d203000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6104238282610abf565b5050565b6104313382610bc5565b50565b61043c610a58565b6104466000610d76565b565b6060600480546102b190610f5d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105015760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610410565b61036582868684036105b6565b6000336103428185856107f3565b610524610a58565b73ffffffffffffffffffffffffffffffffffffffff81166105ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610410565b61043181610d76565b73ffffffffffffffffffffffffffffffffffffffff831661063e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff82166106c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107ed57818110156107e05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610410565b6107ed84848484036105b6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff82166109055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109a15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906109e5908490610fdf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a4b91815260200190565b60405180910390a36107ed565b60055473ffffffffffffffffffffffffffffffffffffffff1633146104465760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610410565b73ffffffffffffffffffffffffffffffffffffffff8216610b225760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610410565b8060026000828254610b349190610fdf565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610b6e908490610fdf565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610c4e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610cea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610410565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d26908490610ff7565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610729565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610e1a57858101830151858201604001528201610dfe565b81811115610e2c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e8457600080fd5b919050565b60008060408385031215610e9c57600080fd5b610ea583610e60565b946020939093013593505050565b600080600060608486031215610ec857600080fd5b610ed184610e60565b9250610edf60208501610e60565b9150604084013590509250925092565b600060208284031215610f0157600080fd5b5035919050565b600060208284031215610f1a57600080fd5b610f2382610e60565b9392505050565b60008060408385031215610f3d57600080fd5b610f4683610e60565b9150610f5460208401610e60565b90509250929050565b600181811c90821680610f7157607f821691505b602082108103610faa577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610ff257610ff2610fb0565b500190565b60008282101561100957611009610fb0565b50039056fea2646970667358221220e05136b3a8ca27c088b40059f87a5a6a4bfe724b1baf5a71e30f69c32c43f32b64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x158 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0xDED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x136 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11A JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11A JUMP JUMPDEST PUSH2 0x136 PUSH2 0x166 CALLDATASIZE PUSH1 0x4 PUSH2 0xEB3 JUMP JUMPDEST PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11A JUMP JUMPDEST PUSH2 0x136 PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x370 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x3BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A0 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0xEEF JUMP JUMPDEST PUSH2 0x427 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0xF08 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x434 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11A JUMP JUMPDEST PUSH2 0x10D PUSH2 0x448 JUMP JUMPDEST PUSH2 0x136 PUSH2 0x231 CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x457 JUMP JUMPDEST PUSH2 0x136 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x50E JUMP JUMPDEST PUSH2 0x14A PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0xF08 JUMP JUMPDEST PUSH2 0x51C JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x2B1 SWAP1 PUSH2 0xF5D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2DD SWAP1 PUSH2 0xF5D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x32A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2FF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x32A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x30D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x342 DUP2 DUP6 DUP6 PUSH2 0x5B6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x35A DUP6 DUP3 DUP6 PUSH2 0x736 JUMP JUMPDEST PUSH2 0x365 DUP6 DUP6 DUP6 PUSH2 0x7F3 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x342 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x3B7 SWAP1 DUP8 SWAP1 PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x5B6 JUMP JUMPDEST PUSH2 0x3C4 PUSH2 0xA58 JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x419 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E74203D3D2030000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x423 DUP3 DUP3 PUSH2 0xABF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x431 CALLER DUP3 PUSH2 0xBC5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x43C PUSH2 0xA58 JUMP JUMPDEST PUSH2 0x446 PUSH1 0x0 PUSH2 0xD76 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x2B1 SWAP1 PUSH2 0xF5D JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH2 0x365 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x342 DUP2 DUP6 DUP6 PUSH2 0x7F3 JUMP JUMPDEST PUSH2 0x524 PUSH2 0xA58 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x5AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH2 0x431 DUP2 PUSH2 0xD76 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x63E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x6C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x7ED JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x7E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x410 JUMP JUMPDEST PUSH2 0x7ED DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x5B6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x87C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x905 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x9A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x9E5 SWAP1 DUP5 SWAP1 PUSH2 0xFDF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xA4B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x7ED JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x446 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x410 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xB34 SWAP2 SWAP1 PUSH2 0xFDF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xB6E SWAP1 DUP5 SWAP1 PUSH2 0xFDF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xCEA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x410 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP4 DUP4 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xD26 SWAP1 DUP5 SWAP1 PUSH2 0xFF7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x729 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE1A JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xDFE JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEA5 DUP4 PUSH2 0xE60 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED1 DUP5 PUSH2 0xE60 JUMP JUMPDEST SWAP3 POP PUSH2 0xEDF PUSH1 0x20 DUP6 ADD PUSH2 0xE60 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF23 DUP3 PUSH2 0xE60 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF46 DUP4 PUSH2 0xE60 JUMP JUMPDEST SWAP2 POP PUSH2 0xF54 PUSH1 0x20 DUP5 ADD PUSH2 0xE60 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF71 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xFAA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xFF2 JUMPI PUSH2 0xFF2 PUSH2 0xFB0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1009 JUMPI PUSH2 0x1009 PUSH2 0xFB0 JUMP JUMPDEST POP SUB SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 MLOAD CALLDATASIZE 0xB3 0xA8 0xCA 0x27 0xC0 DUP9 0xB4 STOP MSIZE 0xF8 PUSH27 0x5A6A4BFE724B1BAF5A71E30F69C32C43F32B64736F6C634300080E STOP CALLER ","sourceMap":"168:400:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1300:14:54;;1293:22;1275:41;;1263:2;1248:18;4433:197:1;1135:187:54;3244:106:1;3331:12;;3244:106;;;1473:25:54;;;1461:2;1446:18;3244:106:1;1327:177:54;5192:286:1;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1984:36:54;;1972:2;1957:18;3093:91:1;1842:184:54;5873:234:1;;;;;;:::i;:::-;;:::i;323:154:20:-;;;;;;:::i;:::-;;:::i;:::-;;483:83;;;;;;:::i;:::-;;:::i;3408:125:1:-;;;;;;:::i;:::-;3508:18;;3482:7;3508:18;;;;;;;;;;;;3408:125;1831:101:0;;;:::i;1201:85::-;1273:6;;1201:85;;1273:6;;;;2553:74:54;;2541:2;2526:18;1201:85:0;2407:226:54;2367:102:1;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;4091:18;;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149;2081:198:0;;;;;;:::i;:::-;;:::i;2156:98:1:-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:9;4570:32:1;719:10:9;4586:7:1;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:1;;4433:197;-1:-1:-1;;;4433:197:1:o;5192:286::-;5319:4;719:10:9;5375:38:1;5391:4;719:10:9;5406:6:1;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:1;;5192:286;-1:-1:-1;;;;5192:286:1:o;5873:234::-;719:10:9;5961:4:1;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5961:4;;719:10:9;6015:64:1;;719:10:9;;4091:27:1;;6040:38;;6068:10;;6040:38;:::i;:::-;6015:8;:64::i;323:154:20:-;1094:13:0;:11;:13::i;:::-;409:6:20::1;419:1;409:11:::0;401:35:::1;;;::::0;-1:-1:-1;;;401:35:20;;3869:2:54;401:35:20::1;::::0;::::1;3851:21:54::0;3908:2;3888:18;;;3881:30;3947:13;3927:18;;;3920:41;3978:18;;401:35:20::1;;;;;;;;;446:24;452:9;463:6;446:5;:24::i;:::-;323:154:::0;;:::o;483:83::-;532:27;719:10:9;552:6:20;532:5;:27::i;:::-;483:83;:::o;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;2367:102:1:-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;719:10:9;6687:4:1;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6687:4;;719:10:9;6831:15:1;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:1;;4209:2:54;6803:85:1;;;4191:21:54;4248:2;4228:18;;;4221:30;4287:34;4267:18;;;4260:62;4358:7;4338:18;;;4331:35;4383:19;;6803:85:1;4007:401:54;6803:85:1;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:9;3862:28:1;719:10:9;3879:2:1;3883:6;3862:9;:28::i;2081:198:0:-;1094:13;:11;:13::i;:::-;2169:22:::1;::::0;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:0;;4615:2:54;2161:73:0::1;::::0;::::1;4597:21:54::0;4654:2;4634:18;;;4627:30;4693:34;4673:18;;;4666:62;4764:8;4744:18;;;4737:36;4790:19;;2161:73:0::1;4413:402:54::0;2161:73:0::1;2244:28;2263:8;2244:18;:28::i;10110:370:1:-:0;10241:19;;;10233:68;;;;-1:-1:-1;;;10233:68:1;;5022:2:54;10233:68:1;;;5004:21:54;5061:2;5041:18;;;5034:30;5100:34;5080:18;;;5073:62;5171:6;5151:18;;;5144:34;5195:19;;10233:68:1;4820:400:54;10233:68:1;10319:21;;;10311:68;;;;-1:-1:-1;;;10311:68:1;;5427:2:54;10311:68:1;;;5409:21:54;5466:2;5446:18;;;5439:30;5505:34;5485:18;;;5478:62;5576:4;5556:18;;;5549:32;5598:19;;10311:68:1;5225:398:54;10311:68:1;10390:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;1473:25:54;;;10441:32:1;;1446:18:54;10441:32:1;;;;;;;;10110:370;;;:::o;10761:441::-;4091:18;;;;10891:24;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10977:17;10957:37;;10953:243;;11038:6;11018:16;:26;;11010:68;;;;-1:-1:-1;;;11010:68:1;;5830:2:54;11010:68:1;;;5812:21:54;5869:2;5849:18;;;5842:30;5908:31;5888:18;;;5881:59;5957:18;;11010:68:1;5628:353:54;11010:68:1;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;7601:18;;;7593:68;;;;-1:-1:-1;;;7593:68:1;;6188:2:54;7593:68:1;;;6170:21:54;6227:2;6207:18;;;6200:30;6266:34;6246:18;;;6239:62;6337:7;6317:18;;;6310:35;6362:19;;7593:68:1;5986:401:54;7593:68:1;7679:16;;;7671:64;;;;-1:-1:-1;;;7671:64:1;;6594:2:54;7671:64:1;;;6576:21:54;6633:2;6613:18;;;6606:30;6672:34;6652:18;;;6645:62;6743:5;6723:18;;;6716:33;6766:19;;7671:64:1;6392:399:54;7671:64:1;7817:15;;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;-1:-1:-1;;;7842:72:1;;6998:2:54;7842:72:1;;;6980:21:54;7037:2;7017:18;;;7010:30;7076:34;7056:18;;;7049:62;7147:8;7127:18;;;7120:36;7173:19;;7842:72:1;6796:402:54;7842:72:1;7948:15;;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;8045:26;;8054:4;8045:26;;;8064:6;8045:26;;;;1473:25:54;;1461:2;1446:18;;1327:177;8045:26:1;;;;;;;;8082:37;9111:576;1359:130:0;1273:6;;1422:23;1273:6;719:10:9;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;7405:2:54;1414:68:0;;;7387:21:54;;;7424:18;;;7417:30;7483:34;7463:18;;;7456:62;7535:18;;1414:68:0;7203:356:54;8402:389:1;8485:21;;;8477:65;;;;-1:-1:-1;;;8477:65:1;;7766:2:54;8477:65:1;;;7748:21:54;7805:2;7785:18;;;7778:30;7844:33;7824:18;;;7817:61;7895:18;;8477:65:1;7564:355:54;8477:65:1;8629:6;8613:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;8645:18:1;;;:9;:18;;;;;;;;;;:28;;8667:6;;8645:9;:28;;8667:6;;8645:28;:::i;:::-;;;;-1:-1:-1;;8688:37:1;;1473:25:54;;;8688:37:1;;;;8705:1;;8688:37;;1461:2:54;1446:18;8688:37:1;;;;;;;323:154:20;;:::o;9111:576:1:-;9194:21;;;9186:67;;;;-1:-1:-1;;;9186:67:1;;8126:2:54;9186:67:1;;;8108:21:54;8165:2;8145:18;;;8138:30;8204:34;8184:18;;;8177:62;8275:3;8255:18;;;8248:31;8296:19;;9186:67:1;7924:397:54;9186:67:1;9349:18;;;9324:22;9349:18;;;;;;;;;;;9385:24;;;;9377:71;;;;-1:-1:-1;;;9377:71:1;;8528:2:54;9377:71:1;;;8510:21:54;8567:2;8547:18;;;8540:30;8606:34;8586:18;;;8579:62;8677:4;8657:18;;;8650:32;8699:19;;9377:71:1;8326:398:54;9377:71:1;9482:18;;;:9;:18;;;;;;;;;;9503:23;;;9482:44;;9546:12;:22;;9520:6;;9482:9;9546:22;;9520:6;;9546:22;:::i;:::-;;;;-1:-1:-1;;9584:37:1;;1473:25:54;;;9610:1:1;;9584:37;;;;;;1461:2:54;1446:18;9584:37:1;1327:177:54;2433:187:0;2525:6;;;;2541:17;;;;;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;14:656:54:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:54;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:54:o;675:196::-;743:20;;803:42;792:54;;782:65;;772:93;;861:1;858;851:12;772:93;675:196;;;:::o;876:254::-;944:6;952;1005:2;993:9;984:7;980:23;976:32;973:52;;;1021:1;1018;1011:12;973:52;1044:29;1063:9;1044:29;:::i;:::-;1034:39;1120:2;1105:18;;;;1092:32;;-1:-1:-1;;;876:254:54:o;1509:328::-;1586:6;1594;1602;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;1694:29;1713:9;1694:29;:::i;:::-;1684:39;;1742:38;1776:2;1765:9;1761:18;1742:38;:::i;:::-;1732:48;;1827:2;1816:9;1812:18;1799:32;1789:42;;1509:328;;;;;:::o;2031:180::-;2090:6;2143:2;2131:9;2122:7;2118:23;2114:32;2111:52;;;2159:1;2156;2149:12;2111:52;-1:-1:-1;2182:23:54;;2031:180;-1:-1:-1;2031:180:54:o;2216:186::-;2275:6;2328:2;2316:9;2307:7;2303:23;2299:32;2296:52;;;2344:1;2341;2334:12;2296:52;2367:29;2386:9;2367:29;:::i;:::-;2357:39;2216:186;-1:-1:-1;;;2216:186:54:o;2638:260::-;2706:6;2714;2767:2;2755:9;2746:7;2742:23;2738:32;2735:52;;;2783:1;2780;2773:12;2735:52;2806:29;2825:9;2806:29;:::i;:::-;2796:39;;2854:38;2888:2;2877:9;2873:18;2854:38;:::i;:::-;2844:48;;2638:260;;;;;:::o;2903:437::-;2982:1;2978:12;;;;3025;;;3046:61;;3100:4;3092:6;3088:17;3078:27;;3046:61;3153:2;3145:6;3142:14;3122:18;3119:38;3116:218;;3190:77;3187:1;3180:88;3291:4;3288:1;3281:15;3319:4;3316:1;3309:15;3116:218;;2903:437;;;:::o;3345:184::-;3397:77;3394:1;3387:88;3494:4;3491:1;3484:15;3518:4;3515:1;3508:15;3534:128;3574:3;3605:1;3601:6;3598:1;3595:13;3592:39;;;3611:18;;:::i;:::-;-1:-1:-1;3647:9:54;;3534:128::o;8729:125::-;8769:4;8797:1;8794;8791:8;8788:34;;;8802:18;;:::i;:::-;-1:-1:-1;8839:9:54;;8729:125::o"},"gasEstimates":{"creation":{"codeDepositCost":"832800","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"24600","balanceOf(address)":"2539","burn(uint256)":"50902","decimals()":"200","decreaseAllowance(address,uint256)":"26863","increaseAllowance(address,uint256)":"26931","mint(address,uint256)":"infinite","name()":"infinite","owner()":"2356","renounceOwnership()":"infinite","symbol()":"infinite","totalSupply()":"2349","transfer(address,uint256)":"51142","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"28361"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/helper/GenericERC20.sol\":\"GenericERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _transferOwnership(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n    mapping(address => uint256) private _balances;\\n\\n    mapping(address => mapping(address => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * The default value of {decimals} is 18. To select a different value for\\n     * {decimals} you should overload it.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n     * overridden;\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual override returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual override returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `amount`.\\n     */\\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `amount`.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) public virtual override returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, amount);\\n        _transfer(from, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, allowance(owner, spender) + addedValue);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `spender` must have allowance for the caller of at least\\n     * `subtractedValue`.\\n     */\\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        uint256 currentAllowance = allowance(owner, spender);\\n        require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n        unchecked {\\n            _approve(owner, spender, currentAllowance - subtractedValue);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves `amount` of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {\\n        require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n        require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, amount);\\n\\n        uint256 fromBalance = _balances[from];\\n        require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n        unchecked {\\n            _balances[from] = fromBalance - amount;\\n        }\\n        _balances[to] += amount;\\n\\n        emit Transfer(from, to, amount);\\n\\n        _afterTokenTransfer(from, to, amount);\\n    }\\n\\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n     * the total supply.\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function _mint(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n        _beforeTokenTransfer(address(0), account, amount);\\n\\n        _totalSupply += amount;\\n        _balances[account] += amount;\\n        emit Transfer(address(0), account, amount);\\n\\n        _afterTokenTransfer(address(0), account, amount);\\n    }\\n\\n    /**\\n     * @dev Destroys `amount` tokens from `account`, reducing the\\n     * total supply.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     * - `account` must have at least `amount` tokens.\\n     */\\n    function _burn(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n        _beforeTokenTransfer(account, address(0), amount);\\n\\n        uint256 accountBalance = _balances[account];\\n        require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n        unchecked {\\n            _balances[account] = accountBalance - amount;\\n        }\\n        _totalSupply -= amount;\\n\\n        emit Transfer(account, address(0), amount);\\n\\n        _afterTokenTransfer(account, address(0), amount);\\n    }\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     */\\n    function _approve(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n        require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n        _allowances[owner][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n     *\\n     * Does not update the allowance amount in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Might emit an {Approval} event.\\n     */\\n    function _spendAllowance(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * will be transferred to `to`.\\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * has been transferred to `to`.\\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/helper/GenericERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract GenericERC20 is ERC20, Ownable {\\n\\n    constructor(\\n        string memory name_,\\n        string memory symbol_\\n    ) ERC20(name_, symbol_) {}\\n\\n    function mint(address recipient, uint256 amount) external onlyOwner {\\n        require(amount != 0, \\\"amount == 0\\\");\\n        _mint(recipient, amount);\\n    }\\n\\n    function burn(uint256 amount) external {\\n        _burn(_msgSender(), amount);\\n    }\\n}\",\"keccak256\":\"0x674fca78138ad58ccb4f94c0ef621233ef37357b481a8ac9c05b8823af22bfd9\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":128,"contract":"contracts/helper/GenericERC20.sol:GenericERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":134,"contract":"contracts/helper/GenericERC20.sol:GenericERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":136,"contract":"contracts/helper/GenericERC20.sol:GenericERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":138,"contract":"contracts/helper/GenericERC20.sol:GenericERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":140,"contract":"contracts/helper/GenericERC20.sol:GenericERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":7,"contract":"contracts/helper/GenericERC20.sol:GenericERC20","label":"_owner","offset":0,"slot":"5","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/ConduitControllerInterface.sol":{"ConduitControllerInterface":{"abi":[{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"CallerIsNotNewPotentialOwner","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"CallerIsNotOwner","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"ChannelOutOfRange","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"ConduitAlreadyExists","type":"error"},{"inputs":[],"name":"InvalidCreator","type":"error"},{"inputs":[],"name":"InvalidInitialOwner","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"address","name":"newPotentialOwner","type":"address"}],"name":"NewPotentialOwnerAlreadySet","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"NewPotentialOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoConduit","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"NoPotentialOwnerCurrentlySet","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"conduit","type":"address"},{"indexed":false,"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"name":"NewConduit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"conduit","type":"address"},{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newPotentialOwner","type":"address"}],"name":"PotentialOwnerUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"initialOwner","type":"address"}],"name":"createConduit","outputs":[{"internalType":"address","name":"conduit","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"uint256","name":"channelIndex","type":"uint256"}],"name":"getChannel","outputs":[{"internalType":"address","name":"channel","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"address","name":"channel","type":"address"}],"name":"getChannelStatus","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"getChannels","outputs":[{"internalType":"address[]","name":"channels","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"name":"getConduit","outputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getConduitCodeHashes","outputs":[{"internalType":"bytes32","name":"creationCodeHash","type":"bytes32"},{"internalType":"bytes32","name":"runtimeCodeHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"getKey","outputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"getPotentialOwner","outputs":[{"internalType":"address","name":"potentialOwner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"getTotalChannels","outputs":[{"internalType":"uint256","name":"totalChannels","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"address","name":"newPotentialOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"},{"internalType":"address","name":"channel","type":"address"},{"internalType":"bool","name":"isOpen","type":"bool"}],"name":"updateChannel","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"0age","errors":{"CallerIsNotNewPotentialOwner(address)":[{"details":"Revert with an error when attempting to claim ownership of a conduit      with a caller that is not the current potential owner for the      conduit in question."}],"CallerIsNotOwner(address)":[{"details":"Revert with an error when attempting to update channels or transfer      ownership of a conduit when the caller is not the owner of the      conduit in question."}],"ChannelOutOfRange(address)":[{"details":"Revert with an error when attempting to retrieve a channel using an      index that is out of range."}],"ConduitAlreadyExists(address)":[{"details":"Revert with an error when attempting to create a conduit that      already exists."}],"InvalidCreator()":[{"details":"Revert with an error when attempting to create a new conduit using a      conduit key where the first twenty bytes of the key do not match the      address of the caller."}],"InvalidInitialOwner()":[{"details":"Revert with an error when attempting to create a new conduit when no      initial owner address is supplied."}],"NewPotentialOwnerAlreadySet(address,address)":[{"details":"Revert with an error when attempting to set a new potential owner      that is already set."}],"NewPotentialOwnerIsZeroAddress(address)":[{"details":"Revert with an error when attempting to register a new potential      owner and supplying the null address."}],"NoConduit()":[{"details":"Revert with an error when attempting to interact with a conduit that      does not yet exist."}],"NoPotentialOwnerCurrentlySet(address)":[{"details":"Revert with an error when attempting to cancel ownership transfer      when no new potential owner is currently set."}]},"events":{"NewConduit(address,bytes32)":{"details":"Emit an event whenever a new conduit is created.","params":{"conduit":"The newly created conduit.","conduitKey":"The conduit key used to create the new conduit."}},"OwnershipTransferred(address,address,address)":{"details":"Emit an event whenever conduit ownership is transferred.","params":{"conduit":"The conduit for which ownership has been                      transferred.","newOwner":"The new owner of the conduit.","previousOwner":"The previous owner of the conduit."}},"PotentialOwnerUpdated(address)":{"details":"Emit an event whenever a conduit owner registers a new potential      owner for that conduit.","params":{"newPotentialOwner":"The new potential owner of the conduit."}}},"kind":"dev","methods":{"acceptOwnership(address)":{"params":{"conduit":"The conduit for which to accept ownership."}},"cancelOwnershipTransfer(address)":{"params":{"conduit":"The conduit for which to cancel ownership transfer."}},"createConduit(bytes32,address)":{"params":{"conduitKey":"The conduit key used to deploy the conduit. Note that                     the first twenty bytes of the conduit key must match                     the caller of this contract.","initialOwner":"The initial owner to set for the new conduit."},"returns":{"conduit":"The address of the newly deployed conduit."}},"getChannel(address,uint256)":{"params":{"channelIndex":"The index of the channel in question.","conduit":"The conduit for which to retrieve the open channel."},"returns":{"channel":"The open channel, if any, at the specified channel index."}},"getChannelStatus(address,address)":{"params":{"channel":"The channel for which to retrieve the status.","conduit":"The conduit for which to retrieve the channel status."},"returns":{"isOpen":"The status of the channel on the given conduit."}},"getChannels(address)":{"params":{"conduit":"The conduit for which to retrieve open channels."},"returns":{"channels":"An array of open channels on the given conduit."}},"getConduit(bytes32)":{"params":{"conduitKey":"The conduit key used to derive the conduit."},"returns":{"conduit":"The derived address of the conduit.","exists":" A boolean indicating whether the derived conduit has been                 deployed or not."}},"getConduitCodeHashes()":{"details":"Retrieve the conduit creation code and runtime code hashes."},"getKey(address)":{"params":{"conduit":"The conduit for which to retrieve the associated conduit                key."},"returns":{"conduitKey":"The conduit key used to deploy the supplied conduit."}},"getPotentialOwner(address)":{"params":{"conduit":"The conduit for which to retrieve the potential owner."},"returns":{"potentialOwner":"The potential owner, if any, for the conduit."}},"getTotalChannels(address)":{"params":{"conduit":"The conduit for which to retrieve the total channel count."},"returns":{"totalChannels":"The total number of open channels for the conduit."}},"ownerOf(address)":{"params":{"conduit":"The conduit for which to retrieve the associated owner."},"returns":{"owner":"The owner of the supplied conduit."}},"transferOwnership(address,address)":{"params":{"conduit":"The conduit for which to initiate ownership transfer.","newPotentialOwner":"The new potential owner of the conduit."}},"updateChannel(address,address,bool)":{"params":{"channel":"The channel to open or close on the conduit.","conduit":"The conduit for which to open or close the channel.","isOpen":"A boolean indicating whether to open or close the channel."}}},"title":"ConduitControllerInterface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"acceptOwnership(address)":"51710e45","cancelOwnershipTransfer(address)":"7b37e561","createConduit(bytes32,address)":"794593bc","getChannel(address,uint256)":"027cc764","getChannelStatus(address,address)":"33bc8572","getChannels(address)":"8b9e028b","getConduit(bytes32)":"6e9bfd9f","getConduitCodeHashes()":"0a96ad39","getKey(address)":"93790f44","getPotentialOwner(address)":"906c87cc","getTotalChannels(address)":"4e3f9580","ownerOf(address)":"14afd79e","transferOwnership(address,address)":"6d435421","updateChannel(address,address,bool)":"13ad9cab"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"CallerIsNotNewPotentialOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"CallerIsNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ChannelOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ConduitAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"NewPotentialOwnerAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"NewPotentialOwnerIsZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoConduit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"NoPotentialOwnerCurrentlySet\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"name\":\"NewConduit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"PotentialOwnerUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"cancelOwnershipTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"createConduit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"channelIndex\",\"type\":\"uint256\"}],\"name\":\"getChannel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"name\":\"getChannelStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getChannels\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"channels\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"name\":\"getConduit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConduitCodeHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"creationCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"runtimeCodeHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getPotentialOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"potentialOwner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getTotalChannels\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalChannels\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"updateChannel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"CallerIsNotNewPotentialOwner(address)\":[{\"details\":\"Revert with an error when attempting to claim ownership of a conduit      with a caller that is not the current potential owner for the      conduit in question.\"}],\"CallerIsNotOwner(address)\":[{\"details\":\"Revert with an error when attempting to update channels or transfer      ownership of a conduit when the caller is not the owner of the      conduit in question.\"}],\"ChannelOutOfRange(address)\":[{\"details\":\"Revert with an error when attempting to retrieve a channel using an      index that is out of range.\"}],\"ConduitAlreadyExists(address)\":[{\"details\":\"Revert with an error when attempting to create a conduit that      already exists.\"}],\"InvalidCreator()\":[{\"details\":\"Revert with an error when attempting to create a new conduit using a      conduit key where the first twenty bytes of the key do not match the      address of the caller.\"}],\"InvalidInitialOwner()\":[{\"details\":\"Revert with an error when attempting to create a new conduit when no      initial owner address is supplied.\"}],\"NewPotentialOwnerAlreadySet(address,address)\":[{\"details\":\"Revert with an error when attempting to set a new potential owner      that is already set.\"}],\"NewPotentialOwnerIsZeroAddress(address)\":[{\"details\":\"Revert with an error when attempting to register a new potential      owner and supplying the null address.\"}],\"NoConduit()\":[{\"details\":\"Revert with an error when attempting to interact with a conduit that      does not yet exist.\"}],\"NoPotentialOwnerCurrentlySet(address)\":[{\"details\":\"Revert with an error when attempting to cancel ownership transfer      when no new potential owner is currently set.\"}]},\"events\":{\"NewConduit(address,bytes32)\":{\"details\":\"Emit an event whenever a new conduit is created.\",\"params\":{\"conduit\":\"The newly created conduit.\",\"conduitKey\":\"The conduit key used to create the new conduit.\"}},\"OwnershipTransferred(address,address,address)\":{\"details\":\"Emit an event whenever conduit ownership is transferred.\",\"params\":{\"conduit\":\"The conduit for which ownership has been                      transferred.\",\"newOwner\":\"The new owner of the conduit.\",\"previousOwner\":\"The previous owner of the conduit.\"}},\"PotentialOwnerUpdated(address)\":{\"details\":\"Emit an event whenever a conduit owner registers a new potential      owner for that conduit.\",\"params\":{\"newPotentialOwner\":\"The new potential owner of the conduit.\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership(address)\":{\"params\":{\"conduit\":\"The conduit for which to accept ownership.\"}},\"cancelOwnershipTransfer(address)\":{\"params\":{\"conduit\":\"The conduit for which to cancel ownership transfer.\"}},\"createConduit(bytes32,address)\":{\"params\":{\"conduitKey\":\"The conduit key used to deploy the conduit. Note that                     the first twenty bytes of the conduit key must match                     the caller of this contract.\",\"initialOwner\":\"The initial owner to set for the new conduit.\"},\"returns\":{\"conduit\":\"The address of the newly deployed conduit.\"}},\"getChannel(address,uint256)\":{\"params\":{\"channelIndex\":\"The index of the channel in question.\",\"conduit\":\"The conduit for which to retrieve the open channel.\"},\"returns\":{\"channel\":\"The open channel, if any, at the specified channel index.\"}},\"getChannelStatus(address,address)\":{\"params\":{\"channel\":\"The channel for which to retrieve the status.\",\"conduit\":\"The conduit for which to retrieve the channel status.\"},\"returns\":{\"isOpen\":\"The status of the channel on the given conduit.\"}},\"getChannels(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve open channels.\"},\"returns\":{\"channels\":\"An array of open channels on the given conduit.\"}},\"getConduit(bytes32)\":{\"params\":{\"conduitKey\":\"The conduit key used to derive the conduit.\"},\"returns\":{\"conduit\":\"The derived address of the conduit.\",\"exists\":\" A boolean indicating whether the derived conduit has been                 deployed or not.\"}},\"getConduitCodeHashes()\":{\"details\":\"Retrieve the conduit creation code and runtime code hashes.\"},\"getKey(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the associated conduit                key.\"},\"returns\":{\"conduitKey\":\"The conduit key used to deploy the supplied conduit.\"}},\"getPotentialOwner(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the potential owner.\"},\"returns\":{\"potentialOwner\":\"The potential owner, if any, for the conduit.\"}},\"getTotalChannels(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the total channel count.\"},\"returns\":{\"totalChannels\":\"The total number of open channels for the conduit.\"}},\"ownerOf(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the associated owner.\"},\"returns\":{\"owner\":\"The owner of the supplied conduit.\"}},\"transferOwnership(address,address)\":{\"params\":{\"conduit\":\"The conduit for which to initiate ownership transfer.\",\"newPotentialOwner\":\"The new potential owner of the conduit.\"}},\"updateChannel(address,address,bool)\":{\"params\":{\"channel\":\"The channel to open or close on the conduit.\",\"conduit\":\"The conduit for which to open or close the channel.\",\"isOpen\":\"A boolean indicating whether to open or close the channel.\"}}},\"title\":\"ConduitControllerInterface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOwnership(address)\":{\"notice\":\"Accept ownership of a supplied conduit. Only accounts that the         current owner has set as the new potential owner may call this         function.\"},\"cancelOwnershipTransfer(address)\":{\"notice\":\"Clear the currently set potential owner, if any, from a conduit.         Only the owner of the conduit in question may call this function.\"},\"createConduit(bytes32,address)\":{\"notice\":\"Deploy a new conduit using a supplied conduit key and assigning         an initial owner for the deployed conduit. Note that the first         twenty bytes of the supplied conduit key must match the caller         and that a new conduit cannot be created if one has already been         deployed using the same conduit key.\"},\"getChannel(address,uint256)\":{\"notice\":\"Retrieve an open channel at a specific index for a given conduit.         Note that the index of a channel can change as a result of other         channels being closed on the conduit.\"},\"getChannelStatus(address,address)\":{\"notice\":\"Retrieve the status (either open or closed) of a given channel on         a conduit.\"},\"getChannels(address)\":{\"notice\":\"Retrieve all open channels for a given conduit. Note that calling         this function for a conduit with many channels will revert with         an out-of-gas error.\"},\"getConduit(bytes32)\":{\"notice\":\"Derive the conduit associated with a given conduit key and         determine whether that conduit exists (i.e. whether it has been         deployed).\"},\"getKey(address)\":{\"notice\":\"Retrieve the conduit key for a deployed conduit via reverse         lookup.\"},\"getPotentialOwner(address)\":{\"notice\":\"Retrieve the potential owner, if any, for a given conduit. The         current owner may set a new potential owner via         `transferOwnership` and that owner may then accept ownership of         the conduit in question via `acceptOwnership`.\"},\"getTotalChannels(address)\":{\"notice\":\"Retrieve the total number of open channels for a given conduit.\"},\"ownerOf(address)\":{\"notice\":\"Retrieve the current owner of a deployed conduit.\"},\"transferOwnership(address,address)\":{\"notice\":\"Initiate conduit ownership transfer by assigning a new potential         owner for the given conduit. Once set, the new potential owner         may call `acceptOwnership` to claim ownership of the conduit.         Only the owner of the conduit in question may call this function.\"},\"updateChannel(address,address,bool)\":{\"notice\":\"Open or close a channel on a given conduit, thereby allowing the         specified account to execute transfers against that conduit.         Extreme care must be taken when updating channels, as malicious         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155         tokens where the token holder has granted the conduit approval.         Only the owner of the conduit in question may call this function.\"}},\"notice\":\"ConduitControllerInterface contains all external function interfaces,         structs, events, and errors for the conduit controller.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ConduitControllerInterface.sol\":\"ConduitControllerInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"acceptOwnership(address)":{"notice":"Accept ownership of a supplied conduit. Only accounts that the         current owner has set as the new potential owner may call this         function."},"cancelOwnershipTransfer(address)":{"notice":"Clear the currently set potential owner, if any, from a conduit.         Only the owner of the conduit in question may call this function."},"createConduit(bytes32,address)":{"notice":"Deploy a new conduit using a supplied conduit key and assigning         an initial owner for the deployed conduit. Note that the first         twenty bytes of the supplied conduit key must match the caller         and that a new conduit cannot be created if one has already been         deployed using the same conduit key."},"getChannel(address,uint256)":{"notice":"Retrieve an open channel at a specific index for a given conduit.         Note that the index of a channel can change as a result of other         channels being closed on the conduit."},"getChannelStatus(address,address)":{"notice":"Retrieve the status (either open or closed) of a given channel on         a conduit."},"getChannels(address)":{"notice":"Retrieve all open channels for a given conduit. Note that calling         this function for a conduit with many channels will revert with         an out-of-gas error."},"getConduit(bytes32)":{"notice":"Derive the conduit associated with a given conduit key and         determine whether that conduit exists (i.e. whether it has been         deployed)."},"getKey(address)":{"notice":"Retrieve the conduit key for a deployed conduit via reverse         lookup."},"getPotentialOwner(address)":{"notice":"Retrieve the potential owner, if any, for a given conduit. The         current owner may set a new potential owner via         `transferOwnership` and that owner may then accept ownership of         the conduit in question via `acceptOwnership`."},"getTotalChannels(address)":{"notice":"Retrieve the total number of open channels for a given conduit."},"ownerOf(address)":{"notice":"Retrieve the current owner of a deployed conduit."},"transferOwnership(address,address)":{"notice":"Initiate conduit ownership transfer by assigning a new potential         owner for the given conduit. Once set, the new potential owner         may call `acceptOwnership` to claim ownership of the conduit.         Only the owner of the conduit in question may call this function."},"updateChannel(address,address,bool)":{"notice":"Open or close a channel on a given conduit, thereby allowing the         specified account to execute transfers against that conduit.         Extreme care must be taken when updating channels, as malicious         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155         tokens where the token holder has granted the conduit approval.         Only the owner of the conduit in question may call this function."}},"notice":"ConduitControllerInterface contains all external function interfaces,         structs, events, and errors for the conduit controller.","version":1}}},"contracts/interfaces/ConduitInterface.sol":{"ConduitInterface":{"abi":[{"inputs":[{"internalType":"address","name":"channel","type":"address"}],"name":"ChannelClosed","type":"error"},{"inputs":[{"internalType":"address","name":"channel","type":"address"},{"internalType":"bool","name":"isOpen","type":"bool"}],"name":"ChannelStatusAlreadySet","type":"error"},{"inputs":[],"name":"InvalidController","type":"error"},{"inputs":[],"name":"InvalidItemType","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"channel","type":"address"},{"indexed":false,"internalType":"bool","name":"open","type":"bool"}],"name":"ChannelUpdated","type":"event"},{"inputs":[{"components":[{"internalType":"enum ConduitItemType","name":"itemType","type":"uint8"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ConduitTransfer[]","name":"transfers","type":"tuple[]"}],"name":"execute","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"internalType":"struct ConduitBatch1155Transfer[]","name":"batch1155Transfers","type":"tuple[]"}],"name":"executeBatch1155","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ConduitItemType","name":"itemType","type":"uint8"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ConduitTransfer[]","name":"standardTransfers","type":"tuple[]"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"internalType":"struct ConduitBatch1155Transfer[]","name":"batch1155Transfers","type":"tuple[]"}],"name":"executeWithBatch1155","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"channel","type":"address"},{"internalType":"bool","name":"isOpen","type":"bool"}],"name":"updateChannel","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"0age","errors":{"ChannelClosed(address)":[{"details":"Revert with an error when attempting to execute transfers using a      caller that does not have an open channel."}],"ChannelStatusAlreadySet(address,bool)":[{"details":"Revert with an error when attempting to update a channel to the      current status of that channel."}],"InvalidController()":[{"details":"Revert with an error when attempting to update the status of a      channel from a caller that is not the conduit controller."}],"InvalidItemType()":[{"details":"Revert with an error when attempting to execute a transfer for an      item that does not have an ERC20/721/1155 item type."}]},"events":{"ChannelUpdated(address,bool)":{"details":"Emit an event whenever a channel is opened or closed.","params":{"channel":"The channel that has been updated.","open":"A boolean indicating whether the conduit is open or not."}}},"kind":"dev","methods":{"execute((uint8,address,address,address,uint256,uint256)[])":{"params":{"transfers":"The ERC20/721/1155 transfers to perform."},"returns":{"magicValue":"A magic value indicating that the transfers were                    performed successfully."}},"executeBatch1155((address,address,address,uint256[],uint256[])[])":{"params":{"batch1155Transfers":"The 1155 batch transfers to perform."},"returns":{"magicValue":"A magic value indicating that the transfers were                    performed successfully."}},"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])":{"params":{"batch1155Transfers":"The 1155 batch transfers to perform.","standardTransfers":"The ERC20/721/1155 transfers to perform."},"returns":{"magicValue":"A magic value indicating that the transfers were                    performed successfully."}},"updateChannel(address,bool)":{"params":{"channel":"The channel to open or close.","isOpen":"The status of the channel (either open or closed)."}}},"title":"ConduitInterface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"execute((uint8,address,address,address,uint256,uint256)[])":"4ce34aa2","executeBatch1155((address,address,address,uint256[],uint256[])[])":"8df25d92","executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])":"899e104c","updateChannel(address,bool)":"c4e8fcb5"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"name\":\"ChannelClosed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"ChannelStatusAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidController\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidItemType\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"}],\"name\":\"ChannelUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ConduitItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ConduitTransfer[]\",\"name\":\"transfers\",\"type\":\"tuple[]\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ConduitBatch1155Transfer[]\",\"name\":\"batch1155Transfers\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch1155\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ConduitItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ConduitTransfer[]\",\"name\":\"standardTransfers\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ConduitBatch1155Transfer[]\",\"name\":\"batch1155Transfers\",\"type\":\"tuple[]\"}],\"name\":\"executeWithBatch1155\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"updateChannel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"ChannelClosed(address)\":[{\"details\":\"Revert with an error when attempting to execute transfers using a      caller that does not have an open channel.\"}],\"ChannelStatusAlreadySet(address,bool)\":[{\"details\":\"Revert with an error when attempting to update a channel to the      current status of that channel.\"}],\"InvalidController()\":[{\"details\":\"Revert with an error when attempting to update the status of a      channel from a caller that is not the conduit controller.\"}],\"InvalidItemType()\":[{\"details\":\"Revert with an error when attempting to execute a transfer for an      item that does not have an ERC20/721/1155 item type.\"}]},\"events\":{\"ChannelUpdated(address,bool)\":{\"details\":\"Emit an event whenever a channel is opened or closed.\",\"params\":{\"channel\":\"The channel that has been updated.\",\"open\":\"A boolean indicating whether the conduit is open or not.\"}}},\"kind\":\"dev\",\"methods\":{\"execute((uint8,address,address,address,uint256,uint256)[])\":{\"params\":{\"transfers\":\"The ERC20/721/1155 transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"executeBatch1155((address,address,address,uint256[],uint256[])[])\":{\"params\":{\"batch1155Transfers\":\"The 1155 batch transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])\":{\"params\":{\"batch1155Transfers\":\"The 1155 batch transfers to perform.\",\"standardTransfers\":\"The ERC20/721/1155 transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"updateChannel(address,bool)\":{\"params\":{\"channel\":\"The channel to open or close.\",\"isOpen\":\"The status of the channel (either open or closed).\"}}},\"title\":\"ConduitInterface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"execute((uint8,address,address,address,uint256,uint256)[])\":{\"notice\":\"Execute a sequence of ERC20/721/1155 transfers. Only a caller         with an open channel can call this function.\"},\"executeBatch1155((address,address,address,uint256[],uint256[])[])\":{\"notice\":\"Execute a sequence of batch 1155 transfers. Only a caller with an         open channel can call this function.\"},\"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])\":{\"notice\":\"Execute a sequence of transfers, both single and batch 1155. Only         a caller with an open channel can call this function.\"},\"updateChannel(address,bool)\":{\"notice\":\"Open or close a given channel. Only callable by the controller.\"}},\"notice\":\"ConduitInterface contains all external function interfaces, events,         and errors for conduit contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ConduitInterface.sol\":\"ConduitInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/conduit/lib/ConduitEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ConduitItemType {\\n    NATIVE, // unused\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\\n\",\"keccak256\":\"0x1a84850bbff4b820573334c70ee0797462f20fd8c9b86fdebeacc85ecb1963a6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitItemType } from \\\"./ConduitEnums.sol\\\";\\n\\nstruct ConduitTransfer {\\n    ConduitItemType itemType;\\n    address token;\\n    address from;\\n    address to;\\n    uint256 identifier;\\n    uint256 amount;\\n}\\n\\nstruct ConduitBatch1155Transfer {\\n    address token;\\n    address from;\\n    address to;\\n    uint256[] ids;\\n    uint256[] amounts;\\n}\\n\",\"keccak256\":\"0xe3e87c74dd79c59293e49b7236cc7befdc19886bb79af5fe53208b1772fd24f9\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title ConduitInterface\\n * @author 0age\\n * @notice ConduitInterface contains all external function interfaces, events,\\n *         and errors for conduit contracts.\\n */\\ninterface ConduitInterface {\\n    /**\\n     * @dev Revert with an error when attempting to execute transfers using a\\n     *      caller that does not have an open channel.\\n     */\\n    error ChannelClosed(address channel);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update a channel to the\\n     *      current status of that channel.\\n     */\\n    error ChannelStatusAlreadySet(address channel, bool isOpen);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute a transfer for an\\n     *      item that does not have an ERC20/721/1155 item type.\\n     */\\n    error InvalidItemType();\\n\\n    /**\\n     * @dev Revert with an error when attempting to update the status of a\\n     *      channel from a caller that is not the conduit controller.\\n     */\\n    error InvalidController();\\n\\n    /**\\n     * @dev Emit an event whenever a channel is opened or closed.\\n     *\\n     * @param channel The channel that has been updated.\\n     * @param open    A boolean indicating whether the conduit is open or not.\\n     */\\n    event ChannelUpdated(address indexed channel, bool open);\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\\n     *         open channel can call this function.\\n     *\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\\n     *         a caller with an open channel can call this function.\\n     *\\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external;\\n}\\n\",\"keccak256\":\"0x628e23ec7e820e8ac59c0999211bb022bb5c5581a5bc6bd39465d6419d7d85b5\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"execute((uint8,address,address,address,uint256,uint256)[])":{"notice":"Execute a sequence of ERC20/721/1155 transfers. Only a caller         with an open channel can call this function."},"executeBatch1155((address,address,address,uint256[],uint256[])[])":{"notice":"Execute a sequence of batch 1155 transfers. Only a caller with an         open channel can call this function."},"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])":{"notice":"Execute a sequence of transfers, both single and batch 1155. Only         a caller with an open channel can call this function."},"updateChannel(address,bool)":{"notice":"Open or close a given channel. Only callable by the controller."}},"notice":"ConduitInterface contains all external function interfaces, events,         and errors for conduit contracts.","version":1}}},"contracts/interfaces/ConsiderationEventsAndErrors.sol":{"ConsiderationEventsAndErrors":{"abi":[{"inputs":[],"name":"BadFraction","type":"error"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"},{"internalType":"uint256","name":"considerationIndex","type":"uint256"},{"internalType":"uint256","name":"shortfallAmount","type":"uint256"}],"name":"ConsiderationNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherTransferGenericFailure","type":"error"},{"inputs":[],"name":"InsufficientEtherSupplied","type":"error"},{"inputs":[],"name":"InvalidBasicOrderParameterEncoding","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidCallToConduit","type":"error"},{"inputs":[],"name":"InvalidCanceller","type":"error"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidConduit","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidMsgValue","type":"error"},{"inputs":[],"name":"InvalidNativeOfferItem","type":"error"},{"inputs":[],"name":"InvalidOrderParameters","type":"error"},{"inputs":[],"name":"InvalidTime","type":"error"},{"inputs":[],"name":"MissingOriginalConsiderationItems","type":"error"},{"inputs":[],"name":"NoSpecifiedOrdersAvailable","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFilled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFinalized","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderInvalidRepayParameters","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderIsCancelled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotValidated","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderPartiallyFilled","type":"error"},{"inputs":[],"name":"PartialFillsNotEnabledForOrder","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCounter","type":"uint256"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"CounterIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderBroken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"},{"indexed":false,"internalType":"uint256","name":"shadowId","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payTimes","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finalized","type":"bool"}],"name":"OrderRepaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderValidated","type":"event"}],"devdoc":{"author":"0age","errors":{"BadFraction()":[{"details":"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator."}],"ConsiderationNotMet(uint256,uint256,uint256)":[{"details":"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.","params":{"considerationIndex":"The index of the consideration item on the                           order.","orderIndex":"The index of the order with the consideration                           item with a shortfall.","shortfallAmount":"The unfulfilled consideration amount."}}],"EtherTransferGenericFailure(address,uint256)":[{"details":"Revert with an error when an ether transfer reverts."}],"InsufficientEtherSupplied()":[{"details":"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders."}],"InvalidBasicOrderParameterEncoding()":[{"details":"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding."}],"InvalidCallToConduit(address)":[{"details":"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return."}],"InvalidCanceller()":[{"details":"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone."}],"InvalidConduit(bytes32,address)":[{"details":"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed)."}],"InvalidMsgValue(uint256)":[{"details":"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route."}],"InvalidNativeOfferItem()":[{"details":"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders."}],"InvalidTime()":[{"details":"Revert with an error when attempting to fill an order outside the      specified start time and end time."}],"MissingOriginalConsiderationItems()":[{"details":"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array."}],"NoSpecifiedOrdersAvailable()":[{"details":"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable."}],"OrderAlreadyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has      already been fully filled.","params":{"orderHash":"The order hash on which a fill was attempted."}}],"OrderIsCancelled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has been      cancelled.","params":{"orderHash":"The hash of the cancelled order."}}],"OrderPartiallyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill a basic order that has      been partially filled.","params":{"orderHash":"The hash of the partially used order."}}],"PartialFillsNotEnabledForOrder()":[{"details":"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type."}]},"events":{"CounterIncremented(uint256,address)":{"details":"Emit an event whenever a counter for a given offerer is incremented.","params":{"newCounter":"The new counter for the offerer.","offerer":"The offerer in question."}},"OrderCancelled(bytes32,address)":{"details":"Emit an event whenever an order is successfully cancelled.","params":{"offerer":"The offerer of the cancelled order.","orderHash":"The hash of the cancelled order."}},"OrderValidated(bytes32,address)":{"details":"Emit an event whenever an order is explicitly validated. Note that      this event will not be emitted on partial fills even though they do      validate the order as part of partial fulfillment.","params":{"offerer":"The offerer of the validated order.","orderHash":"The hash of the validated order."}}},"kind":"dev","methods":{},"title":"ConsiderationEventsAndErrors","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.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNativeOfferItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrderParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderInvalidRepayParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotValidated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"CounterIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderBroken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"name\":\"OrderRepaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidNativeOfferItem()\":[{\"details\":\"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}]},\"events\":{\"CounterIncremented(uint256,address)\":{\"details\":\"Emit an event whenever a counter for a given offerer is incremented.\",\"params\":{\"newCounter\":\"The new counter for the offerer.\",\"offerer\":\"The offerer in question.\"}},\"OrderCancelled(bytes32,address)\":{\"details\":\"Emit an event whenever an order is successfully cancelled.\",\"params\":{\"offerer\":\"The offerer of the cancelled order.\",\"orderHash\":\"The hash of the cancelled order.\"}},\"OrderValidated(bytes32,address)\":{\"details\":\"Emit an event whenever an order is explicitly validated. Note that      this event will not be emitted on partial fills even though they do      validate the order as part of partial fulfillment.\",\"params\":{\"offerer\":\"The offerer of the validated order.\",\"orderHash\":\"The hash of the validated order.\"}}},\"kind\":\"dev\",\"methods\":{},\"title\":\"ConsiderationEventsAndErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ConsiderationEventsAndErrors contains all events and errors.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":\"ConsiderationEventsAndErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConsiderationEventsAndErrors\\n * @author 0age\\n * @notice ConsiderationEventsAndErrors contains all events and errors.\\n */\\ninterface ConsiderationEventsAndErrors {\\n\\n    event OrderFulfilled(\\n        bytes32 orderHash,\\n        address indexed offerer,\\n        uint256 shadowId\\n    );\\n\\n    event OrderRepaid(\\n        bytes32 orderHash,\\n        uint256 payTimes,\\n        bool finalized\\n    );\\n\\n    event OrderBroken(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is successfully cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     * @param offerer   The offerer of the cancelled order.\\n     */\\n    event OrderCancelled(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is explicitly validated. Note that\\n     *      this event will not be emitted on partial fills even though they do\\n     *      validate the order as part of partial fulfillment.\\n     *\\n     * @param orderHash The hash of the validated order.\\n     * @param offerer   The offerer of the validated order.\\n     */\\n    event OrderValidated(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\\n     *\\n     * @param newCounter The new counter for the offerer.\\n     * @param offerer  The offerer in question.\\n     */\\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has\\n     *      already been fully filled.\\n     *\\n     * @param orderHash The order hash on which a fill was attempted.\\n     */\\n    error OrderAlreadyFilled(bytes32 orderHash);\\n\\n    error OrderAlreadyFinalized(bytes32 orderHash);\\n\\n    error OrderAlreadyStarted(bytes32 orderHash);\\n\\n    error OrderNotStarted(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order outside the\\n     *      specified start time and end time.\\n     */\\n    error InvalidTime();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order referencing an\\n     *      invalid conduit (i.e. one that has not been deployed).\\n     */\\n    error InvalidConduit(bytes32 conduitKey, address conduit);\\n\\n    /**\\n     * @dev Revert with an error when an order is supplied for fulfillment with\\n     *      a consideration array that is shorter than the original array.\\n     */\\n    error MissingOriginalConsiderationItems();\\n\\n    /**\\n     * @dev Revert with an error when a call to a conduit fails with revert data\\n     *      that is too expensive to return.\\n     */\\n    error InvalidCallToConduit(address conduit);\\n\\n    /**\\n     * @dev Revert with an error if a consideration amount has not been fully\\n     *      zeroed out after applying all fulfillments.\\n     *\\n     * @param orderIndex         The index of the order with the consideration\\n     *                           item with a shortfall.\\n     * @param considerationIndex The index of the consideration item on the\\n     *                           order.\\n     * @param shortfallAmount    The unfulfilled consideration amount.\\n     */\\n    error ConsiderationNotMet(\\n        uint256 orderIndex,\\n        uint256 considerationIndex,\\n        uint256 shortfallAmount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when insufficient ether is supplied as part of\\n     *      msg.value when fulfilling orders.\\n     */\\n    error InsufficientEtherSupplied();\\n\\n    /**\\n     * @dev Revert with an error when an ether transfer reverts.\\n     */\\n    error EtherTransferGenericFailure(address account, uint256 amount);\\n\\n    /**\\n     * @dev Revert with an error when a partial fill is attempted on an order\\n     *      that does not specify partial fill support in its order type.\\n     */\\n    error PartialFillsNotEnabledForOrder();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has been\\n     *      cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     */\\n    error OrderIsCancelled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order that has\\n     *      been partially filled.\\n     *\\n     * @param orderHash The hash of the partially used order.\\n     */\\n    error OrderPartiallyFilled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel an order as a caller\\n     *      other than the indicated offerer or zone.\\n     */\\n    error InvalidCanceller();\\n\\n    /**\\n     * @dev Revert with an error when supplying a fraction with a value of zero\\n     *      for the numerator or denominator, or one where the numerator exceeds\\n     *      the denominator.\\n     */\\n    error BadFraction();\\n\\n    /**\\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\\n     *      non-payable basic order route or does not supply any callvalue to a\\n     *      payable basic order route.\\n     */\\n    error InvalidMsgValue(uint256 value);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order using\\n     *      calldata not produced by default ABI encoding.\\n     */\\n    error InvalidBasicOrderParameterEncoding();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill any number of\\n     *      available orders when none are fulfillable.\\n     */\\n    error NoSpecifiedOrdersAvailable();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order with an\\n     *      offer for ETH outside of matching orders.\\n     */\\n    error InvalidNativeOfferItem();\\n\\n    error OrderNotValidated(bytes32 orderHash);\\n\\n    error OrderExpired(bytes32 orderHash);\\n\\n    error OrderNotExpired(bytes32 orderHash);\\n\\n    error OrderInvalidRepayParameters(bytes32 orderHash);\\n\\n    error InvalidOrderParameters();\\n}\\n\",\"keccak256\":\"0x71a166db3dbdc44218081f02a9fe0de3cf2d3d9680ac88ef68c0b376eb1a3e97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"ConsiderationEventsAndErrors contains all events and errors.","version":1}}},"contracts/interfaces/EIP1271Interface.sol":{"EIP1271Interface":{"abi":[{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/EIP1271Interface.sol\":\"EIP1271Interface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/EIP1271Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface EIP1271Interface {\\n    function isValidSignature(bytes32 digest, bytes calldata signature)\\n        external\\n        view\\n        returns (bytes4);\\n}\",\"keccak256\":\"0xba82a40106e4565fda2909937d8ab23dc45622fead50d439ee09994d678828e0\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IERC4907.sol":{"IERC4907":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"UpdateUser","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"expires","type":"uint256"}],"name":"setUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"userExpires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"userOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(uint256)":"42966c68","mint(address,address,uint256)":"c6c3bbe6","setUser(uint256,address,uint256)":"1b8a910d","userExpires(uint256)":"8fc88c48","userOf(uint256)":"c2f1f14a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"UpdateUser\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expires\",\"type\":\"uint256\"}],\"name\":\"setUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"userExpires\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"userOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC4907.sol\":\"IERC4907\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC4907.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface IERC4907 {\\n\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint256 expires);\\n\\n    function mint(address to, address tokenAddress, uint256 tokenId) external returns (uint256);\\n\\n    function burn(uint256 tokenId) external;\\n\\n    function setUser(uint256 tokenId, address user, uint256 expires) external;\\n\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\",\"keccak256\":\"0x80ec8ade8571e20468caafaebc024f694b756e57d5073e86d7fb936fef673627\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/MathUtil.sol":{"MathUtil":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220207e0cbcac61b84fbe07472131db5398c6c27a812d4b50336c089a13043ab3fa64736f6c634300080e0033","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 KECCAK256 PUSH31 0xCBCAC61B84FBE07472131DB5398C6C27A812D4B50336C089A13043AB3FA64 PUSH20 0x6F6C634300080E00330000000000000000000000 ","sourceMap":"58:129:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:129:26;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220207e0cbcac61b84fbe07472131db5398c6c27a812d4b50336c089a13043ab3fa64736f6c634300080e0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 PUSH31 0xCBCAC61B84FBE07472131DB5398C6C27A812D4B50336C089A13043AB3FA64 PUSH20 0x6F6C634300080E00330000000000000000000000 ","sourceMap":"58:129:26:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"min(uint256,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/MathUtil.sol\":\"MathUtil\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/MathUtil.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nlibrary MathUtil {\\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a < b ? a : b;\\n    }\\n}\",\"keccak256\":\"0x0983b0d0158cc9d8b3ecf561ca51a853aeedd24bb4519a72125f18dc10ffc9f2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/ReentrancyErrors.sol":{"ReentrancyErrors":{"abi":[{"inputs":[],"name":"NoReentrantCalls","type":"error"}],"devdoc":{"author":"0age","errors":{"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}]},"kind":"dev","methods":{},"title":"ReentrancyErrors","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.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"ReentrancyErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ReentrancyErrors contains errors related to reentrancy.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ReentrancyErrors.sol\":\"ReentrancyErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"ReentrancyErrors contains errors related to reentrancy.","version":1}}},"contracts/interfaces/SignatureVerificationErrors.sol":{"SignatureVerificationErrors":{"abi":[{"inputs":[],"name":"BadContractSignature","type":"error"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"}],"name":"BadSignatureV","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"}],"devdoc":{"author":"0age","errors":{"BadContractSignature()":[{"details":"Revert with an error when an EIP-1271 call to an account fails."}],"BadSignatureV(uint8)":[{"details":"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.","params":{"v":"The invalid v value."}}],"InvalidSignature()":[{"details":"Revert with an error when a signer cannot be recovered from the      supplied signature."}],"InvalidSigner()":[{"details":"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract."}]},"kind":"dev","methods":{},"title":"SignatureVerificationErrors","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.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SignatureVerificationErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"SignatureVerificationErrors contains all errors related to signature         verification.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/SignatureVerificationErrors.sol\":\"SignatureVerificationErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/SignatureVerificationErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title SignatureVerificationErrors\\n * @author 0age\\n * @notice SignatureVerificationErrors contains all errors related to signature\\n *         verification.\\n */\\ninterface SignatureVerificationErrors {\\n    /**\\n     * @dev Revert with an error when a signature that does not contain a v\\n     *      value of 27 or 28 has been supplied.\\n     *\\n     * @param v The invalid v value.\\n     */\\n    error BadSignatureV(uint8 v);\\n\\n    /**\\n     * @dev Revert with an error when the signer recovered by the supplied\\n     *      signature does not match the offerer or an allowed EIP-1271 signer\\n     *      as specified by the offerer in the event they are a contract.\\n     */\\n    error InvalidSigner();\\n\\n    /**\\n     * @dev Revert with an error when a signer cannot be recovered from the\\n     *      supplied signature.\\n     */\\n    error InvalidSignature();\\n\\n    /**\\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\\n     */\\n    error BadContractSignature();\\n}\\n\",\"keccak256\":\"0xd0f5b26469ba6cd303e5ea9b53cf6b7c25cb00918097eb59a263678b51197381\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"SignatureVerificationErrors contains all errors related to signature         verification.","version":1}}},"contracts/interfaces/TokenTransferrerErrors.sol":{"TokenTransferrerErrors":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"}],"devdoc":{"errors":{"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{},"title":"TokenTransferrerErrors","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.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"TokenTransferrerErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/TokenTransferrerErrors.sol\":\"TokenTransferrerErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/Assertions.sol":{"Assertions":{"abi":[{"inputs":[{"internalType":"address","name":"conduitController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadFraction","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"},{"internalType":"uint256","name":"considerationIndex","type":"uint256"},{"internalType":"uint256","name":"shortfallAmount","type":"uint256"}],"name":"ConsiderationNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherTransferGenericFailure","type":"error"},{"inputs":[],"name":"InsufficientEtherSupplied","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidBasicOrderParameterEncoding","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidCallToConduit","type":"error"},{"inputs":[],"name":"InvalidCanceller","type":"error"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidConduit","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidMsgValue","type":"error"},{"inputs":[],"name":"InvalidNativeOfferItem","type":"error"},{"inputs":[],"name":"InvalidOrderParameters","type":"error"},{"inputs":[],"name":"InvalidTime","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[],"name":"MissingOriginalConsiderationItems","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[],"name":"NoReentrantCalls","type":"error"},{"inputs":[],"name":"NoSpecifiedOrdersAvailable","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFilled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFinalized","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderInvalidRepayParameters","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderIsCancelled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotValidated","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderPartiallyFilled","type":"error"},{"inputs":[],"name":"PartialFillsNotEnabledForOrder","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCounter","type":"uint256"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"CounterIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderBroken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"},{"indexed":false,"internalType":"uint256","name":"shadowId","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payTimes","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finalized","type":"bool"}],"name":"OrderRepaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderValidated","type":"event"}],"devdoc":{"errors":{"BadFraction()":[{"details":"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator."}],"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"ConsiderationNotMet(uint256,uint256,uint256)":[{"details":"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.","params":{"considerationIndex":"The index of the consideration item on the                           order.","orderIndex":"The index of the order with the consideration                           item with a shortfall.","shortfallAmount":"The unfulfilled consideration amount."}}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"EtherTransferGenericFailure(address,uint256)":[{"details":"Revert with an error when an ether transfer reverts."}],"InsufficientEtherSupplied()":[{"details":"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders."}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidBasicOrderParameterEncoding()":[{"details":"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding."}],"InvalidCallToConduit(address)":[{"details":"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return."}],"InvalidCanceller()":[{"details":"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone."}],"InvalidConduit(bytes32,address)":[{"details":"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed)."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"InvalidMsgValue(uint256)":[{"details":"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route."}],"InvalidNativeOfferItem()":[{"details":"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders."}],"InvalidTime()":[{"details":"Revert with an error when attempting to fill an order outside the      specified start time and end time."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"MissingOriginalConsiderationItems()":[{"details":"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}],"NoSpecifiedOrdersAvailable()":[{"details":"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable."}],"OrderAlreadyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has      already been fully filled.","params":{"orderHash":"The order hash on which a fill was attempted."}}],"OrderIsCancelled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has been      cancelled.","params":{"orderHash":"The hash of the cancelled order."}}],"OrderPartiallyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill a basic order that has      been partially filled.","params":{"orderHash":"The hash of the partially used order."}}],"PartialFillsNotEnabledForOrder()":[{"details":"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type."}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4348":{"entryPoint":null,"id":4348,"parameterSlots":1,"returnSlots":0},"@_4654":{"entryPoint":null,"id":4654,"parameterSlots":1,"returnSlots":0},"@_5935":{"entryPoint":null,"id":5935,"parameterSlots":1,"returnSlots":0},"@_7732":{"entryPoint":null,"id":7732,"parameterSlots":0,"returnSlots":0},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_4760":{"entryPoint":270,"id":4760,"parameterSlots":0,"returnSlots":4},"@_nameString_4683":{"entryPoint":null,"id":4683,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":1122,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_bytes32_fromMemory":{"entryPoint":1170,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_stringliteral_0c2a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e4b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_41ba":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_59d7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5c66":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7afc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89a9":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9c70":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b48f":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bab2":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_cfcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6455:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:54","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:54"},"nodeType":"YulFunctionCall","src":"143:12:54"},"nodeType":"YulExpressionStatement","src":"143:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:54"},"nodeType":"YulFunctionCall","src":"112:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:54"},"nodeType":"YulFunctionCall","src":"108:32:54"},"nodeType":"YulIf","src":"105:52:54"},{"nodeType":"YulVariableDeclaration","src":"166:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:54"},"nodeType":"YulFunctionCall","src":"179:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:54"},"nodeType":"YulFunctionCall","src":"260:12:54"},"nodeType":"YulExpressionStatement","src":"260:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:54"},"nodeType":"YulFunctionCall","src":"239:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:54"},"nodeType":"YulFunctionCall","src":"235:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:54"},"nodeType":"YulFunctionCall","src":"224:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:54"},"nodeType":"YulFunctionCall","src":"214:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:54"},"nodeType":"YulFunctionCall","src":"207:50:54"},"nodeType":"YulIf","src":"204:70:54"},{"nodeType":"YulAssignment","src":"283:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:54"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:54","type":""}],"src":"14:290:54"},{"body":{"nodeType":"YulBlock","src":"407:147:54","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:54"},"nodeType":"YulFunctionCall","src":"455:12:54"},"nodeType":"YulExpressionStatement","src":"455:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:54"},"nodeType":"YulFunctionCall","src":"424:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:54"},"nodeType":"YulFunctionCall","src":"420:32:54"},"nodeType":"YulIf","src":"417:52:54"},{"nodeType":"YulAssignment","src":"478:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:54"},"nodeType":"YulFunctionCall","src":"488:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:54"}]},{"nodeType":"YulAssignment","src":"513:35:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:54"},"nodeType":"YulFunctionCall","src":"529:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:54"},"nodeType":"YulFunctionCall","src":"523:25:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:54","type":""}],"src":"309:245:54"},{"body":{"nodeType":"YulBlock","src":"614:76:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:54"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:54","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:54"},"nodeType":"YulFunctionCall","src":"624:32:54"},"nodeType":"YulExpressionStatement","src":"624:32:54"},{"nodeType":"YulAssignment","src":"665:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:54","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:54"},"nodeType":"YulFunctionCall","src":"672:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:54"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:54","type":""}],"src":"559:131:54"},{"body":{"nodeType":"YulBlock","src":"750:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:54"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:54","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:54"},"nodeType":"YulFunctionCall","src":"760:31:54"},"nodeType":"YulExpressionStatement","src":"760:31:54"},{"nodeType":"YulAssignment","src":"800:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:54"},"nodeType":"YulFunctionCall","src":"807:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:54"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:54","type":""}],"src":"695:130:54"},{"body":{"nodeType":"YulBlock","src":"885:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:54"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:54","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:54"},"nodeType":"YulFunctionCall","src":"895:30:54"},"nodeType":"YulExpressionStatement","src":"895:30:54"},{"nodeType":"YulAssignment","src":"934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:54"},"nodeType":"YulFunctionCall","src":"941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:54"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:54","type":""}],"src":"830:129:54"},{"body":{"nodeType":"YulBlock","src":"1019:73:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:54"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:54","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:54"},"nodeType":"YulFunctionCall","src":"1029:29:54"},"nodeType":"YulExpressionStatement","src":"1029:29:54"},{"nodeType":"YulAssignment","src":"1067:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:54","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:54"},"nodeType":"YulFunctionCall","src":"1074:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:54"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:54","type":""}],"src":"964:128:54"},{"body":{"nodeType":"YulBlock","src":"1152:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:54"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:54","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:54"},"nodeType":"YulFunctionCall","src":"1162:31:54"},"nodeType":"YulExpressionStatement","src":"1162:31:54"},{"nodeType":"YulAssignment","src":"1202:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:54"},"nodeType":"YulFunctionCall","src":"1209:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:54"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:54","type":""}],"src":"1097:130:54"},{"body":{"nodeType":"YulBlock","src":"1287:71:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:54"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:54","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:54"},"nodeType":"YulFunctionCall","src":"1297:27:54"},"nodeType":"YulExpressionStatement","src":"1297:27:54"},{"nodeType":"YulAssignment","src":"1333:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:54","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:54"},"nodeType":"YulFunctionCall","src":"1340:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:54"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:54","type":""}],"src":"1232:126:54"},{"body":{"nodeType":"YulBlock","src":"1418:79:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:54"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:54","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:54"},"nodeType":"YulFunctionCall","src":"1428:35:54"},"nodeType":"YulExpressionStatement","src":"1428:35:54"},{"nodeType":"YulAssignment","src":"1472:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:54","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:54"},"nodeType":"YulFunctionCall","src":"1479:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:54"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:54","type":""}],"src":"1363:134:54"},{"body":{"nodeType":"YulBlock","src":"1557:72:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:54"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:54","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:54"},"nodeType":"YulFunctionCall","src":"1567:28:54"},"nodeType":"YulExpressionStatement","src":"1567:28:54"},{"nodeType":"YulAssignment","src":"1604:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:54"},"nodeType":"YulFunctionCall","src":"1611:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:54"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:54","type":""}],"src":"1502:127:54"},{"body":{"nodeType":"YulBlock","src":"1689:78:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:54"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:54","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:54"},"nodeType":"YulFunctionCall","src":"1699:34:54"},"nodeType":"YulExpressionStatement","src":"1699:34:54"},{"nodeType":"YulAssignment","src":"1742:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:54","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:54"},"nodeType":"YulFunctionCall","src":"1749:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:54"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:54","type":""}],"src":"1634:133:54"},{"body":{"nodeType":"YulBlock","src":"1827:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:54"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:54","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:54"},"nodeType":"YulFunctionCall","src":"1837:30:54"},"nodeType":"YulExpressionStatement","src":"1837:30:54"},{"nodeType":"YulAssignment","src":"1876:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:54"},"nodeType":"YulFunctionCall","src":"1883:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:54"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:54","type":""}],"src":"1772:129:54"},{"body":{"nodeType":"YulBlock","src":"1961:59:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:54"},"nodeType":"YulFunctionCall","src":"1971:16:54"},"nodeType":"YulExpressionStatement","src":"1971:16:54"},{"nodeType":"YulAssignment","src":"1996:18:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:54"},"nodeType":"YulFunctionCall","src":"2003:11:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:54"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:54","type":""}],"src":"1906:114:54"},{"body":{"nodeType":"YulBlock","src":"4136:815:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:54"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:54","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:54"},"nodeType":"YulFunctionCall","src":"4146:31:54"},"nodeType":"YulExpressionStatement","src":"4146:31:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:54"},"nodeType":"YulFunctionCall","src":"4193:12:54"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:54","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:54"},"nodeType":"YulFunctionCall","src":"4186:40:54"},"nodeType":"YulExpressionStatement","src":"4186:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:54"},"nodeType":"YulFunctionCall","src":"4242:12:54"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:54","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:54"},"nodeType":"YulFunctionCall","src":"4235:38:54"},"nodeType":"YulExpressionStatement","src":"4235:38:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:54","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:54"},"nodeType":"YulFunctionCall","src":"4289:12:54"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:54","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:54"},"nodeType":"YulFunctionCall","src":"4282:43:54"},"nodeType":"YulExpressionStatement","src":"4282:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:54","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:54"},"nodeType":"YulFunctionCall","src":"4341:12:54"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:54","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:54"},"nodeType":"YulFunctionCall","src":"4334:41:54"},"nodeType":"YulExpressionStatement","src":"4334:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:54"},"nodeType":"YulFunctionCall","src":"4391:12:54"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:54","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:54"},"nodeType":"YulFunctionCall","src":"4384:39:54"},"nodeType":"YulExpressionStatement","src":"4384:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:54","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:54"},"nodeType":"YulFunctionCall","src":"4439:12:54"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:54","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:54"},"nodeType":"YulFunctionCall","src":"4432:41:54"},"nodeType":"YulExpressionStatement","src":"4432:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:54","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:54"},"nodeType":"YulFunctionCall","src":"4489:13:54"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:54","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:54"},"nodeType":"YulFunctionCall","src":"4482:43:54"},"nodeType":"YulExpressionStatement","src":"4482:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:54","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:54"},"nodeType":"YulFunctionCall","src":"4541:13:54"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:54","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:54"},"nodeType":"YulFunctionCall","src":"4534:41:54"},"nodeType":"YulExpressionStatement","src":"4534:41:54"},{"nodeType":"YulAssignment","src":"4584:361:54","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:54","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:54"},"nodeType":"YulFunctionCall","src":"4921:13:54"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:54"},"nodeType":"YulFunctionCall","src":"4891:44:54"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:54"},"nodeType":"YulFunctionCall","src":"4861:75:54"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:54"},"nodeType":"YulFunctionCall","src":"4831:106:54"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:54"},"nodeType":"YulFunctionCall","src":"4801:137:54"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:54"},"nodeType":"YulFunctionCall","src":"4771:168:54"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:54"},"nodeType":"YulFunctionCall","src":"4741:199:54"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:54"},"nodeType":"YulFunctionCall","src":"4711:230:54"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:54"},"nodeType":"YulFunctionCall","src":"4681:261:54"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:54"},"nodeType":"YulFunctionCall","src":"4651:292:54"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:54"},"nodeType":"YulFunctionCall","src":"4621:323:54"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:54"},"nodeType":"YulFunctionCall","src":"4591:354:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4120:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:54","type":""}],"src":"2025:2926:54"},{"body":{"nodeType":"YulBlock","src":"5653:306:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:54"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:54","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:54"},"nodeType":"YulFunctionCall","src":"5663:28:54"},"nodeType":"YulExpressionStatement","src":"5663:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:54"},"nodeType":"YulFunctionCall","src":"5707:12:54"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:54","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:54"},"nodeType":"YulFunctionCall","src":"5700:36:54"},"nodeType":"YulExpressionStatement","src":"5700:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:54","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:54"},"nodeType":"YulFunctionCall","src":"5752:12:54"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:54","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:54"},"nodeType":"YulFunctionCall","src":"5745:39:54"},"nodeType":"YulExpressionStatement","src":"5745:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:54","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:54"},"nodeType":"YulFunctionCall","src":"5800:12:54"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:54","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:54"},"nodeType":"YulFunctionCall","src":"5793:40:54"},"nodeType":"YulExpressionStatement","src":"5793:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:54","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:54"},"nodeType":"YulFunctionCall","src":"5849:12:54"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:54","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:54"},"nodeType":"YulFunctionCall","src":"5842:49:54"},"nodeType":"YulExpressionStatement","src":"5842:49:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:54","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:54"},"nodeType":"YulFunctionCall","src":"5907:12:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:54"},"nodeType":"YulFunctionCall","src":"5900:25:54"},"nodeType":"YulExpressionStatement","src":"5900:25:54"},{"nodeType":"YulAssignment","src":"5934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:54"},"nodeType":"YulFunctionCall","src":"5941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5637:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:54","type":""}],"src":"4956:1003:54"},{"body":{"nodeType":"YulBlock","src":"6177:276:54","statements":[{"nodeType":"YulAssignment","src":"6187:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:54"},"nodeType":"YulFunctionCall","src":"6195:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:54"},"nodeType":"YulFunctionCall","src":"6223:25:54"},"nodeType":"YulExpressionStatement","src":"6223:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:54"},"nodeType":"YulFunctionCall","src":"6264:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:54"},"nodeType":"YulFunctionCall","src":"6257:34:54"},"nodeType":"YulExpressionStatement","src":"6257:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:54"},"nodeType":"YulFunctionCall","src":"6307:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:54"},"nodeType":"YulFunctionCall","src":"6300:34:54"},"nodeType":"YulExpressionStatement","src":"6300:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:54"},"nodeType":"YulFunctionCall","src":"6350:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:54"},"nodeType":"YulFunctionCall","src":"6343:34:54"},"nodeType":"YulExpressionStatement","src":"6343:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:54"},"nodeType":"YulFunctionCall","src":"6393:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:54"},"nodeType":"YulFunctionCall","src":"6430:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:54"},"nodeType":"YulFunctionCall","src":"6426:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:54"},"nodeType":"YulFunctionCall","src":"6414:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:54"},"nodeType":"YulFunctionCall","src":"6386:61:54"},"nodeType":"YulExpressionStatement","src":"6386:61:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6114:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:54","type":""}],"src":"5964:489:54"}]},"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_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_9c70(pos) -> end\n    {\n        mstore(pos, \"uint256 duration,\")\n        end := add(pos, 17)\n    }\n    function abi_encode_stringliteral_bab2(pos) -> end\n    {\n        mstore(pos, \"uint256 periods,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_1e4b(pos) -> end\n    {\n        mstore(pos, \"uint256 amount,\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_89a9(pos) -> end\n    {\n        mstore(pos, \"uint256 ratio,\")\n        end := add(pos, 14)\n    }\n    function abi_encode_stringliteral_5c66(pos) -> end\n    {\n        mstore(pos, \"uint256 royalty,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_b48f(pos) -> end\n    {\n        mstore(pos, \"uint256 fee,\")\n        end := add(pos, 12)\n    }\n    function abi_encode_stringliteral_0c2a(pos) -> end\n    {\n        mstore(pos, \"uint256 withdrawFee,\")\n        end := add(pos, 20)\n    }\n    function abi_encode_stringliteral_7afc(pos) -> end\n    {\n        mstore(pos, \"uint256 salt,\")\n        end := add(pos, 13)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral_41ba(pos) -> end\n    {\n        mstore(pos, \"uint256 counter\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address token,\")\n        mstore(add(pos, 46), \"uint256 identifier,\")\n        mstore(add(pos, 65), \"address currency,\")\n        mstore(add(pos, 82), \"address artist,\")\n        mstore(add(pos, 97), \"address platform,\")\n        mstore(add(pos, 114), \"uint256 startTime,\")\n        mstore(add(pos, 132), \"uint256 endTime,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral_41ba(abi_encode_stringliteral_cfcd(abi_encode_stringliteral_7afc(abi_encode_stringliteral_0c2a(abi_encode_stringliteral_b48f(abi_encode_stringliteral_5c66(abi_encode_stringliteral_89a9(abi_encode_stringliteral_1e4b(abi_encode_stringliteral_bab2(abi_encode_stringliteral_9c70(add(pos, 148))))))))))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"61018060405234801561001157600080fd5b5060405161054038038061054083398101604081905261003091610462565b808061003a61010e565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fc9190610492565b506101605250506001600055506104b6565b600080808061013d60408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3945060009161039791016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b60006020828403121561047457600080fd5b81516001600160a01b038116811461048b57600080fd5b9392505050565b600080604083850312156104a557600080fd5b505080516020909101519092909150565b60805160a05160c05160e05161010051610120516101405161016051603f6105016000396000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220e615afca829cad215d15a2a297d9ea5e726bb2ad87689207b099ebfc182beaa664736f6c634300080e0033","opcodes":"PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x540 CODESIZE SUB DUP1 PUSH2 0x540 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x462 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x3A PUSH2 0x10E JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD8 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 0xFC SWAP2 SWAP1 PUSH2 0x492 JUMP JUMPDEST POP PUSH2 0x160 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x4B6 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x13D PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x312E3 PUSH1 0xEC SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP6 POP PUSH32 0xE6BBD6277E1BF288EED5E8D1780F9A50B239E86B153736BCEEBCCF4EA79D90B3 SWAP5 POP PUSH1 0x0 SWAP2 PUSH2 0x397 SWAP2 ADD PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL DUP2 MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0x10 DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965722C00000000000000000000000000 PUSH1 0x2E DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC818DD5C9C995B98DE4B PUSH1 0x7A SHL PUSH1 0x41 DUP3 ADD MSTORE PUSH15 0x1859191C995CDCC8185C9D1A5CDD0B PUSH1 0x8A SHL PUSH1 0x52 DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC81C1B185D199BDC9B4B PUSH1 0x7A SHL PUSH1 0x61 DUP3 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH1 0x72 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88191D5C985D1A5BDB8B PUSH1 0x7A SHL PUSH1 0x94 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C195C9A5BD91CCB PUSH1 0x82 SHL PUSH1 0xA5 DUP3 ADD MSTORE PUSH15 0x1D5A5B9D0C8D4D88185B5BDD5B9D0B PUSH1 0x8A SHL PUSH1 0xB5 DUP3 ADD MSTORE PUSH14 0x1D5A5B9D0C8D4D881C985D1A5BCB PUSH1 0x92 SHL PUSH1 0xC4 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C9BDE585B1D1E4B PUSH1 0x82 SHL PUSH1 0xD2 DUP3 ADD MSTORE PUSH12 0x1D5A5B9D0C8D4D881999594B PUSH1 0xA2 SHL PUSH1 0xE2 DUP3 ADD MSTORE PUSH32 0x75696E743235362077697468647261774665652C000000000000000000000000 PUSH1 0xEE DUP3 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x102 DUP3 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x10F DUP3 ADD MSTORE PUSH15 0x3AB4B73A191A9B1031B7BAB73A32B9 PUSH1 0x89 SHL PUSH2 0x122 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH2 0x131 DUP3 ADD MSTORE PUSH2 0x132 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x48B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH1 0x3F PUSH2 0x501 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 ISZERO 0xAF 0xCA DUP3 SWAP13 0xAD 0x21 0x5D ISZERO LOG2 LOG2 SWAP8 0xD9 0xEA 0x5E PUSH19 0x6BB2AD87689207B099EBFC182BEAA664736F6C PUSH4 0x4300080E STOP CALLER ","sourceMap":"266:402:30:-:0;;;366:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;432:17;;786:19:32;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:32;;-1:-1:-1;1203:187:32;;;6223:25:54;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:54;;6300:34;;;;6350:18;;;6343:34;1371:4:32;6393:19:54;;;6386:61;1203:187:32;;;;;;;;;;6195:19:54;;1203:187:32;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:32;;;;;;1032:42;;;-1:-1:-1;;;1032:42:32;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:32;;-1:-1:-1;;2345:1:33;658:16:42;:31;-1:-1:-1;266:402:30;;1527:1491:32;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:32;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:32;;;;1909:724;1778:31;;-1:-1:-1;1834:23:32;;-1:-1:-1;;;1909:724:32;;;-1:-1:-1;;;4146:31:54;;-1:-1:-1;;;4202:2:54;4193:12;;4186:40;-1:-1:-1;;;4251:2:54;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:54;4341:12;;4334:41;-1:-1:-1;;;4400:2:54;4391:12;;4384:39;-1:-1:-1;;;4448:2:54;4439:12;;4432:41;-1:-1:-1;;;4498:3:54;4489:13;;4482:43;-1:-1:-1;;;4550:3:54;4541:13;;4534:41;-1:-1:-1;;;4930:3:54;4921:13;;624:32;-1:-1:-1;;;672:12:54;;;760:31;-1:-1:-1;;;807:12:54;;;895:30;-1:-1:-1;;;941:12:54;;;1029:29;-1:-1:-1;;;1074:12:54;;;1162:31;-1:-1:-1;;;1209:12:54;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:54;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:54;;;1837:30;-1:-1:-1;;;1883:12:54;;;1971:16;2003:11;;;2025:2926;1909:724:32;;;;-1:-1:-1;;1909:724:32;;;;;;;;;;-1:-1:-1;;;1909:724:32;2690:248;;5663:28:54;-1:-1:-1;;;5707:12:54;;;5700:36;-1:-1:-1;;;5752:12:54;;;5745:39;-1:-1:-1;;;5800:12:54;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:54;;;5900:25;1909:724:32;-1:-1:-1;5941:12:54;;2690:248:32;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:54:-;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:54;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:54:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:54;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:54:o;5964:489::-;266:402:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220e615afca829cad215d15a2a297d9ea5e726bb2ad87689207b099ebfc182beaa664736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 ISZERO 0xAF 0xCA DUP3 SWAP13 0xAD 0x21 0x5D ISZERO LOG2 LOG2 SWAP8 0xD9 0xEA 0x5E PUSH19 0x6BB2AD87689207B099EBFC182BEAA664736F6C PUSH4 0x4300080E STOP CALLER ","sourceMap":"266:402:30:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"infinite","totalCost":"infinite"},"internal":{"_assertNonZeroAmount(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNativeOfferItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrderParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderInvalidRepayParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotValidated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"CounterIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderBroken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"name\":\"OrderRepaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"errors\":{\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidNativeOfferItem()\":[{\"details\":\"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/Assertions.sol\":\"Assertions\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConsiderationEventsAndErrors\\n * @author 0age\\n * @notice ConsiderationEventsAndErrors contains all events and errors.\\n */\\ninterface ConsiderationEventsAndErrors {\\n\\n    event OrderFulfilled(\\n        bytes32 orderHash,\\n        address indexed offerer,\\n        uint256 shadowId\\n    );\\n\\n    event OrderRepaid(\\n        bytes32 orderHash,\\n        uint256 payTimes,\\n        bool finalized\\n    );\\n\\n    event OrderBroken(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is successfully cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     * @param offerer   The offerer of the cancelled order.\\n     */\\n    event OrderCancelled(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is explicitly validated. Note that\\n     *      this event will not be emitted on partial fills even though they do\\n     *      validate the order as part of partial fulfillment.\\n     *\\n     * @param orderHash The hash of the validated order.\\n     * @param offerer   The offerer of the validated order.\\n     */\\n    event OrderValidated(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\\n     *\\n     * @param newCounter The new counter for the offerer.\\n     * @param offerer  The offerer in question.\\n     */\\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has\\n     *      already been fully filled.\\n     *\\n     * @param orderHash The order hash on which a fill was attempted.\\n     */\\n    error OrderAlreadyFilled(bytes32 orderHash);\\n\\n    error OrderAlreadyFinalized(bytes32 orderHash);\\n\\n    error OrderAlreadyStarted(bytes32 orderHash);\\n\\n    error OrderNotStarted(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order outside the\\n     *      specified start time and end time.\\n     */\\n    error InvalidTime();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order referencing an\\n     *      invalid conduit (i.e. one that has not been deployed).\\n     */\\n    error InvalidConduit(bytes32 conduitKey, address conduit);\\n\\n    /**\\n     * @dev Revert with an error when an order is supplied for fulfillment with\\n     *      a consideration array that is shorter than the original array.\\n     */\\n    error MissingOriginalConsiderationItems();\\n\\n    /**\\n     * @dev Revert with an error when a call to a conduit fails with revert data\\n     *      that is too expensive to return.\\n     */\\n    error InvalidCallToConduit(address conduit);\\n\\n    /**\\n     * @dev Revert with an error if a consideration amount has not been fully\\n     *      zeroed out after applying all fulfillments.\\n     *\\n     * @param orderIndex         The index of the order with the consideration\\n     *                           item with a shortfall.\\n     * @param considerationIndex The index of the consideration item on the\\n     *                           order.\\n     * @param shortfallAmount    The unfulfilled consideration amount.\\n     */\\n    error ConsiderationNotMet(\\n        uint256 orderIndex,\\n        uint256 considerationIndex,\\n        uint256 shortfallAmount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when insufficient ether is supplied as part of\\n     *      msg.value when fulfilling orders.\\n     */\\n    error InsufficientEtherSupplied();\\n\\n    /**\\n     * @dev Revert with an error when an ether transfer reverts.\\n     */\\n    error EtherTransferGenericFailure(address account, uint256 amount);\\n\\n    /**\\n     * @dev Revert with an error when a partial fill is attempted on an order\\n     *      that does not specify partial fill support in its order type.\\n     */\\n    error PartialFillsNotEnabledForOrder();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has been\\n     *      cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     */\\n    error OrderIsCancelled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order that has\\n     *      been partially filled.\\n     *\\n     * @param orderHash The hash of the partially used order.\\n     */\\n    error OrderPartiallyFilled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel an order as a caller\\n     *      other than the indicated offerer or zone.\\n     */\\n    error InvalidCanceller();\\n\\n    /**\\n     * @dev Revert with an error when supplying a fraction with a value of zero\\n     *      for the numerator or denominator, or one where the numerator exceeds\\n     *      the denominator.\\n     */\\n    error BadFraction();\\n\\n    /**\\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\\n     *      non-payable basic order route or does not supply any callvalue to a\\n     *      payable basic order route.\\n     */\\n    error InvalidMsgValue(uint256 value);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order using\\n     *      calldata not produced by default ABI encoding.\\n     */\\n    error InvalidBasicOrderParameterEncoding();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill any number of\\n     *      available orders when none are fulfillable.\\n     */\\n    error NoSpecifiedOrdersAvailable();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order with an\\n     *      offer for ETH outside of matching orders.\\n     */\\n    error InvalidNativeOfferItem();\\n\\n    error OrderNotValidated(bytes32 orderHash);\\n\\n    error OrderExpired(bytes32 orderHash);\\n\\n    error OrderNotExpired(bytes32 orderHash);\\n\\n    error OrderInvalidRepayParameters(bytes32 orderHash);\\n\\n    error InvalidOrderParameters();\\n}\\n\",\"keccak256\":\"0x71a166db3dbdc44218081f02a9fe0de3cf2d3d9680ac88ef68c0b376eb1a3e97\",\"license\":\"MIT\"},\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/Assertions.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { GettersAndDerivers } from \\\"./GettersAndDerivers.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { CounterManager } from \\\"./CounterManager.sol\\\";\\n\\ncontract Assertions is\\n    GettersAndDerivers,\\n    CounterManager,\\n    TokenTransferrerErrors\\n{\\n    constructor(address conduitController)\\n        GettersAndDerivers(conduitController)\\n    {}\\n\\n    function _assertNonZeroAmount(uint256 amount) internal pure {\\n        // Revert if the supplied amount is equal to zero.\\n        if (amount == 0) {\\n            revert MissingItemAmount();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5841bbb4c48b541f692567567de5672939afc452bc940ef69a9d0726697d6414\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\ncontract ConsiderationBase {\\n    bytes32 internal immutable _NAME_HASH;\\n    bytes32 internal immutable _VERSION_HASH;\\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\\n    bytes32 internal immutable _ORDER_TYPEHASH;\\n    uint256 internal immutable _CHAIN_ID;\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n\\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n\\n    constructor(address conduitController) {\\n        (\\n            _NAME_HASH,\\n            _VERSION_HASH,\\n            _EIP_712_DOMAIN_TYPEHASH,\\n            _ORDER_TYPEHASH\\n        ) = _deriveTypehashes();\\n\\n        _CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\\n\\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\\n\\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\\n        );\\n    }\\n\\n    function _deriveDomainSeparator() internal view returns (bytes32) {\\n        return keccak256(\\n            abi.encode(\\n                _EIP_712_DOMAIN_TYPEHASH,\\n                _NAME_HASH,\\n                _VERSION_HASH,\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    function _nameString() internal pure virtual returns (string memory) {\\n        return \\\"Consideration\\\";\\n    }\\n\\n    function _deriveTypehashes()\\n        internal\\n        pure\\n        returns (\\n            bytes32 nameHash,\\n            bytes32 versionHash,\\n            bytes32 eip712DomainTypehash,\\n            bytes32 orderTypehash\\n        )\\n    {\\n        nameHash = keccak256(bytes(_nameString()));\\n\\n        versionHash = keccak256(bytes(\\\"1.0\\\"));\\n\\n        bytes memory orderComponentsTypeString = abi.encodePacked(\\n            \\\"OrderComponents(\\\",\\n                \\\"address offerer,\\\",\\n                \\\"address token,\\\",\\n                \\\"uint256 identifier,\\\",\\n                \\\"address currency,\\\",\\n                \\\"address artist,\\\",\\n                \\\"address platform,\\\",\\n                \\\"uint256 startTime,\\\",\\n                \\\"uint256 endTime,\\\",\\n                \\\"uint256 duration,\\\",\\n                \\\"uint256 periods,\\\",\\n                \\\"uint256 amount,\\\",\\n                \\\"uint256 ratio,\\\",\\n                \\\"uint256 royalty,\\\",\\n                \\\"uint256 fee,\\\",\\n                \\\"uint256 withdrawFee,\\\",\\n                \\\"uint256 salt,\\\",\\n                \\\"bytes32 conduitKey,\\\",\\n                \\\"uint256 counter\\\",\\n            \\\")\\\"\\n        );\\n\\n        eip712DomainTypehash = keccak256(\\n            abi.encodePacked(\\n                \\\"EIP712Domain(\\\",\\n                    \\\"string name,\\\",\\n                    \\\"string version,\\\",\\n                    \\\"uint256 chainId,\\\",\\n                    \\\"address verifyingContract\\\",\\n                \\\")\\\"\\n            )\\n        );\\n\\n        orderTypehash = keccak256(orderComponentsTypeString);\\n    }\\n}\",\"keccak256\":\"0x9cd33c5b8bd60301ea09c0305587414ef38f6898fa7a1e0dfb217dd26091d106\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nstruct OrderComponents {\\n    address offerer;\\n    address token;\\n    uint256 identifier;\\n    address currency;\\n    address artist;\\n    address platform;\\n    uint256 startTime;\\n    uint256 endTime;\\n    uint256 duration;\\n    uint256 periods;\\n    uint256 amount;\\n    uint256 ratio;\\n    uint256 royalty;\\n    uint256 fee;\\n    uint256 withdrawFee;\\n    uint256 salt;\\n    bytes32 conduitKey;\\n    uint256 counter;\\n}\\n\\nstruct OrderParameters {\\n    address offerer;    // 0x00\\n    address token;      // 0x20\\n    uint256 identifier; // 0x40\\n    address currency;   // 0x60\\n    address artist;     // 0x80\\n    address platform;   // 0xa0\\n    uint256 startTime;  // 0xc0\\n    uint256 endTime;    // 0xe0\\n    uint256 duration;   // 0x100\\n    uint256 periods;    // 0x120\\n    uint256 amount;     // 0x140\\n    uint256 ratio;      // 0x160\\n    uint256 royalty;    // 0x180\\n    uint256 fee;        // 0x1a0\\n    uint256 withdrawFee;// 0x1c0\\n    uint256 salt;       // 0x1e0\\n    bytes32 conduitKey; // 0x200\\n}\\n\\nstruct Order {\\n    OrderParameters parameters;\\n    bytes signature;\\n}\\n\\nstruct OrderStatus {\\n    bool isValidated;\\n    bool isCancelled;\\n    bool isFinalized;\\n    bool isBroken;\\n    address fulfiller;\\n    uint256 startedAt;\\n    uint256 shadowId;\\n    uint256 paidTimes;\\n}\",\"keccak256\":\"0xe0a311247127b5bbaf92415e092bec717f990ed8cfe6dec710046d755db38048\",\"license\":\"MIT\"},\"contracts/lib/CounterManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConsiderationEventsAndErrors\\n} from \\\"../interfaces/ConsiderationEventsAndErrors.sol\\\";\\n\\nimport { ReentrancyGuard } from \\\"./ReentrancyGuard.sol\\\";\\n\\ncontract CounterManager is ConsiderationEventsAndErrors, ReentrancyGuard {\\n\\n    mapping(address => uint256) private _counters;\\n\\n    function _incrementCounter() internal returns (uint256 newCounter) {\\n        _assertNonReentrant();\\n\\n        unchecked {\\n            newCounter = ++_counters[msg.sender];\\n        }\\n\\n        emit CounterIncremented(newCounter, msg.sender);\\n    }\\n\\n    function _getCounter(address offerer)\\n        internal\\n        view\\n        returns (uint256 currentCounter)\\n    {\\n        currentCounter = _counters[offerer];\\n    }\\n}\\n\",\"keccak256\":\"0xf07f27dab21fe6607342bc513064c81f10729cf4b9f41e6173ae66d6a4b7a25a\",\"license\":\"MIT\"},\"contracts/lib/GettersAndDerivers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderParameters } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { ConsiderationBase } from \\\"./ConsiderationBase.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract GettersAndDerivers is ConsiderationBase {\\n\\n    constructor(address conduitController)\\n        ConsiderationBase(conduitController)\\n    {}\\n\\n    function _deriveOrderHash(\\n        OrderParameters memory orderParameters,\\n        uint256 counter\\n    ) internal view returns (bytes32 orderHash) {\\n        bytes32 typeHash = _ORDER_TYPEHASH;\\n\\n        assembly {\\n            let typeHashPtr := sub(orderParameters, OneWord)\\n\\n            let previousValue := mload(typeHashPtr)\\n\\n            mstore(typeHashPtr, typeHash)\\n\\n            let counterPtr := add(\\n                orderParameters,\\n                OrderParameters_counter_offset\\n            )\\n\\n            let counterDataPtr := mload(counterPtr)\\n\\n            mstore(counterPtr, counter)\\n\\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\\n\\n            mstore(typeHashPtr, previousValue)\\n\\n            mstore(counterPtr, counterDataPtr)\\n        }\\n    }\\n\\n    function _deriveConduit(bytes32 conduitKey)\\n        internal\\n        view\\n        returns (address conduit)\\n    {\\n        // Read conduit controller address from runtime and place on the stack.\\n        address conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Read conduit creation code hash from runtime and place on the stack.\\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\\n\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Retrieve the free memory pointer; it will be replaced afterwards.\\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Place the control character and the conduit controller in scratch\\n            // space; note that eleven bytes at the beginning are left unused.\\n            mstore(0, or(MaskOverByteTwelve, conduitController))\\n\\n            // Place the conduit key in the next region of scratch space.\\n            mstore(OneWord, conduitKey)\\n\\n            // Place conduit creation code hash in free memory pointer location.\\n            mstore(TwoWords, conduitCreationCodeHash)\\n\\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\\n            conduit := and(\\n                // Hash the relevant region.\\n                keccak256(\\n                    // The region starts at memory pointer 11.\\n                    Create2AddressDerivation_ptr,\\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\\n                    Create2AddressDerivation_length\\n                ),\\n                // The address equals the last twenty bytes of the hash.\\n                MaskOverLastTwentyBytes\\n            )\\n\\n            // Restore the free memory pointer.\\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to get the EIP-712 domain separator. If the\\n     *      chainId matches the chainId set on deployment, the cached domain\\n     *      separator will be returned; otherwise, it will be derived from\\n     *      scratch.\\n     *\\n     * @return The domain separator.\\n     */\\n    function _domainSeparator() internal view returns (bytes32) {\\n        // prettier-ignore\\n        return block.chainid == _CHAIN_ID\\n            ? _DOMAIN_SEPARATOR\\n            : _deriveDomainSeparator();\\n    }\\n\\n    /**\\n     * @dev Internal view function to retrieve configuration information for\\n     *      this contract.\\n     *\\n     * @return version           The contract version.\\n     * @return domainSeparator   The domain separator for this contract.\\n     * @return conduitController The conduit Controller set for this contract.\\n     */\\n    function _information()\\n        internal\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        // Derive the domain separator.\\n        domainSeparator = _domainSeparator();\\n\\n        // Declare variable as immutables cannot be accessed within assembly.\\n        conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Allocate a string with the intended length.\\n        version = new string(Version_length);\\n\\n        // Set the version as data on the newly allocated string.\\n        assembly {\\n            mstore(add(version, OneWord), shl(Version_shift, Version))\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to efficiently derive an digest to sign for\\n     *      an order in accordance with EIP-712.\\n     *\\n     * @param domainSeparator The domain separator.\\n     * @param orderHash       The order hash.\\n     *\\n     * @return value The hash.\\n     */\\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\\n        internal\\n        pure\\n        returns (bytes32 value)\\n    {\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Place the EIP-712 prefix at the start of scratch space.\\n            mstore(0, EIP_712_PREFIX)\\n\\n            // Place the domain separator in the next region of scratch space.\\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\\n\\n            // Place the order hash in scratch space, spilling into the first\\n            // two bytes of the free memory pointer \\u2014 this should never be set\\n            // as memory cannot be expanded to that size, and will be zeroed out\\n            // after the hash is performed.\\n            mstore(EIP712_OrderHash_offset, orderHash)\\n\\n            // Hash the relevant region (65 bytes).\\n            value := keccak256(0, EIP712_DigestPayload_size)\\n\\n            // Clear out the dirtied bits in the memory pointer.\\n            mstore(EIP712_OrderHash_offset, 0)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5c0866572e7dfe34edad443a82e35851c4d3631cc9c5957994d68e41516dd6c4\",\"license\":\"MIT\"},\"contracts/lib/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ReentrancyErrors } from \\\"../interfaces/ReentrancyErrors.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title ReentrancyGuard\\n * @author 0age\\n * @notice ReentrancyGuard contains a storage variable and related functionality\\n *         for protecting against reentrancy.\\n */\\ncontract ReentrancyGuard is ReentrancyErrors {\\n    // Prevent reentrant calls on protected functions.\\n    uint256 private _reentrancyGuard;\\n\\n    /**\\n     * @dev Initialize the reentrancy guard during deployment.\\n     */\\n    constructor() {\\n        // Initialize the reentrancy guard in a cleared state.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to ensure that the sentinel value for the\\n     *      reentrancy guard is not currently set and, if not, to set the\\n     *      sentinel value for the reentrancy guard.\\n     */\\n    function _setReentrancyGuard() internal {\\n        // Ensure that the reentrancy guard is not already set.\\n        _assertNonReentrant();\\n\\n        // Set the reentrancy guard.\\n        _reentrancyGuard = _ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to unset the reentrancy guard sentinel value.\\n     */\\n    function _clearReentrancyGuard() internal {\\n        // Clear the reentrancy guard.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal view function to ensure that the sentinel value for the\\n            reentrancy guard is not currently set.\\n     */\\n    function _assertNonReentrant() internal view {\\n        // Ensure that the reentrancy guard is not currently set.\\n        if (_reentrancyGuard != _NOT_ENTERED) {\\n            revert NoReentrantCalls();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa52711c788a24071f8a872ea5ee3030f0f8f592abf8f0d5577707e585a7628d5\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7723,"contract":"contracts/lib/Assertions.sol:Assertions","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":5403,"contract":"contracts/lib/Assertions.sol:Assertions","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/Consideration.sol":{"Consideration":{"abi":[{"inputs":[{"internalType":"address","name":"conduitController","type":"address"},{"internalType":"address","name":"shadowToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadContractSignature","type":"error"},{"inputs":[],"name":"BadFraction","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"}],"name":"BadSignatureV","type":"error"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"},{"internalType":"uint256","name":"considerationIndex","type":"uint256"},{"internalType":"uint256","name":"shortfallAmount","type":"uint256"}],"name":"ConsiderationNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherTransferGenericFailure","type":"error"},{"inputs":[],"name":"InsufficientEtherSupplied","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidBasicOrderParameterEncoding","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidCallToConduit","type":"error"},{"inputs":[],"name":"InvalidCanceller","type":"error"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidConduit","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidMsgValue","type":"error"},{"inputs":[],"name":"InvalidNativeOfferItem","type":"error"},{"inputs":[],"name":"InvalidOrderParameters","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidTime","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[],"name":"MissingOriginalConsiderationItems","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[],"name":"NoReentrantCalls","type":"error"},{"inputs":[],"name":"NoSpecifiedOrdersAvailable","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFilled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFinalized","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderInvalidRepayParameters","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderIsCancelled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotValidated","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderPartiallyFilled","type":"error"},{"inputs":[],"name":"PartialFillsNotEnabledForOrder","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCounter","type":"uint256"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"CounterIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderBroken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"},{"indexed":false,"internalType":"uint256","name":"shadowId","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payTimes","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finalized","type":"bool"}],"name":"OrderRepaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderValidated","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"internalType":"struct OrderParameters","name":"parameters","type":"tuple"}],"name":"breakOrder","outputs":[{"internalType":"bool","name":"broken","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"uint256","name":"counter","type":"uint256"}],"internalType":"struct OrderComponents[]","name":"orders","type":"tuple[]"}],"name":"cancel","outputs":[{"internalType":"bool","name":"cancelled","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"internalType":"struct OrderParameters","name":"parameters","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct Order","name":"order","type":"tuple"},{"internalType":"bytes32","name":"fulfillerConduitKey","type":"bytes32"}],"name":"fulfillOrder","outputs":[{"internalType":"bool","name":"fulfilled","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"offerer","type":"address"}],"name":"getCounter","outputs":[{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"uint256","name":"counter","type":"uint256"}],"internalType":"struct OrderComponents","name":"order","type":"tuple"}],"name":"getOrderHash","outputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"getOrderStatus","outputs":[{"internalType":"bool","name":"isValidated","type":"bool"},{"internalType":"bool","name":"isCancelled","type":"bool"},{"internalType":"bool","name":"isFinalized","type":"bool"},{"internalType":"bool","name":"isBroken","type":"bool"},{"internalType":"address","name":"fulfiller","type":"address"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"shadowId","type":"uint256"},{"internalType":"uint256","name":"paidTimes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementCounter","outputs":[{"internalType":"uint256","name":"newCounter","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"information","outputs":[{"internalType":"string","name":"version","type":"string"},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"internalType":"address","name":"conduitController","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"internalType":"struct OrderParameters","name":"parameters","type":"tuple"},{"internalType":"bytes32","name":"fulfillerConduitKey","type":"bytes32"},{"internalType":"uint256","name":"payTimes","type":"uint256"}],"name":"repayOrder","outputs":[{"internalType":"bool","name":"repaid","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"shadowToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"address","name":"artist","type":"address"},{"internalType":"address","name":"platform","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"royalty","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"withdrawFee","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes32","name":"conduitKey","type":"bytes32"}],"internalType":"struct OrderParameters","name":"parameters","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct Order[]","name":"orders","type":"tuple[]"}],"name":"validate","outputs":[{"internalType":"bool","name":"validated","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"BadContractSignature()":[{"details":"Revert with an error when an EIP-1271 call to an account fails."}],"BadFraction()":[{"details":"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator."}],"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"BadSignatureV(uint8)":[{"details":"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.","params":{"v":"The invalid v value."}}],"ConsiderationNotMet(uint256,uint256,uint256)":[{"details":"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.","params":{"considerationIndex":"The index of the consideration item on the                           order.","orderIndex":"The index of the order with the consideration                           item with a shortfall.","shortfallAmount":"The unfulfilled consideration amount."}}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"EtherTransferGenericFailure(address,uint256)":[{"details":"Revert with an error when an ether transfer reverts."}],"InsufficientEtherSupplied()":[{"details":"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders."}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidBasicOrderParameterEncoding()":[{"details":"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding."}],"InvalidCallToConduit(address)":[{"details":"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return."}],"InvalidCanceller()":[{"details":"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone."}],"InvalidConduit(bytes32,address)":[{"details":"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed)."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"InvalidMsgValue(uint256)":[{"details":"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route."}],"InvalidNativeOfferItem()":[{"details":"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders."}],"InvalidSignature()":[{"details":"Revert with an error when a signer cannot be recovered from the      supplied signature."}],"InvalidSigner()":[{"details":"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract."}],"InvalidTime()":[{"details":"Revert with an error when attempting to fill an order outside the      specified start time and end time."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"MissingOriginalConsiderationItems()":[{"details":"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}],"NoSpecifiedOrdersAvailable()":[{"details":"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable."}],"OrderAlreadyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has      already been fully filled.","params":{"orderHash":"The order hash on which a fill was attempted."}}],"OrderIsCancelled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has been      cancelled.","params":{"orderHash":"The hash of the cancelled order."}}],"OrderPartiallyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill a basic order that has      been partially filled.","params":{"orderHash":"The hash of the partially used order."}}],"PartialFillsNotEnabledForOrder()":[{"details":"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type."}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4348":{"entryPoint":null,"id":4348,"parameterSlots":1,"returnSlots":0},"@_4391":{"entryPoint":null,"id":4391,"parameterSlots":2,"returnSlots":0},"@_4654":{"entryPoint":null,"id":4654,"parameterSlots":1,"returnSlots":0},"@_5470":{"entryPoint":null,"id":5470,"parameterSlots":1,"returnSlots":0},"@_5935":{"entryPoint":null,"id":5935,"parameterSlots":1,"returnSlots":0},"@_6106":{"entryPoint":null,"id":6106,"parameterSlots":2,"returnSlots":0},"@_6921":{"entryPoint":null,"id":6921,"parameterSlots":2,"returnSlots":0},"@_7732":{"entryPoint":null,"id":7732,"parameterSlots":0,"returnSlots":0},"@_7800":{"entryPoint":null,"id":7800,"parameterSlots":1,"returnSlots":0},"@_8290":{"entryPoint":null,"id":8290,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_4760":{"entryPoint":311,"id":4760,"parameterSlots":0,"returnSlots":4},"@_nameString_4683":{"entryPoint":null,"id":4683,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":1165,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":1194,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32_fromMemory":{"entryPoint":1250,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_stringliteral_0c2a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e4b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_41ba":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_59d7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5c66":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7afc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89a9":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9c70":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b48f":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bab2":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_cfcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6640:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:54","statements":[{"nodeType":"YulAssignment","src":"84:22:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:54"},"nodeType":"YulFunctionCall","src":"93:13:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:54"}]},{"body":{"nodeType":"YulBlock","src":"169:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:54"},"nodeType":"YulFunctionCall","src":"171:12:54"},"nodeType":"YulExpressionStatement","src":"171:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:54"},"nodeType":"YulFunctionCall","src":"150:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:54"},"nodeType":"YulFunctionCall","src":"146:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:54"},"nodeType":"YulFunctionCall","src":"135:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:54"},"nodeType":"YulFunctionCall","src":"125:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:54"},"nodeType":"YulFunctionCall","src":"118:50:54"},"nodeType":"YulIf","src":"115:70:54"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:54","type":""}],"src":"14:177:54"},{"body":{"nodeType":"YulBlock","src":"294:195:54","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:54"},"nodeType":"YulFunctionCall","src":"342:12:54"},"nodeType":"YulExpressionStatement","src":"342:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:54"},"nodeType":"YulFunctionCall","src":"311:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:54"},"nodeType":"YulFunctionCall","src":"307:32:54"},"nodeType":"YulIf","src":"304:52:54"},{"nodeType":"YulAssignment","src":"365:50:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:54"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:54"},"nodeType":"YulFunctionCall","src":"375:40:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:54"}]},{"nodeType":"YulAssignment","src":"424:59:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:54"},"nodeType":"YulFunctionCall","src":"464:18:54"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:54"},"nodeType":"YulFunctionCall","src":"434:49:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:54","type":""}],"src":"196:293:54"},{"body":{"nodeType":"YulBlock","src":"592:147:54","statements":[{"body":{"nodeType":"YulBlock","src":"638:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"647:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"650:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"640:6:54"},"nodeType":"YulFunctionCall","src":"640:12:54"},"nodeType":"YulExpressionStatement","src":"640:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"613:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"609:3:54"},"nodeType":"YulFunctionCall","src":"609:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"634:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"605:3:54"},"nodeType":"YulFunctionCall","src":"605:32:54"},"nodeType":"YulIf","src":"602:52:54"},{"nodeType":"YulAssignment","src":"663:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"679:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"673:5:54"},"nodeType":"YulFunctionCall","src":"673:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"663:6:54"}]},{"nodeType":"YulAssignment","src":"698:35:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"718:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"729:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"714:3:54"},"nodeType":"YulFunctionCall","src":"714:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"708:5:54"},"nodeType":"YulFunctionCall","src":"708:25:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"698:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"550:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"561:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"573:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"581:6:54","type":""}],"src":"494:245:54"},{"body":{"nodeType":"YulBlock","src":"799:76:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"816:3:54"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"821:19:54","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:54"},"nodeType":"YulFunctionCall","src":"809:32:54"},"nodeType":"YulExpressionStatement","src":"809:32:54"},{"nodeType":"YulAssignment","src":"850:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"861:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"866:2:54","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"857:3:54"},"nodeType":"YulFunctionCall","src":"857:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"850:3:54"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"783:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"791:3:54","type":""}],"src":"744:131:54"},{"body":{"nodeType":"YulBlock","src":"935:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"952:3:54"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"957:18:54","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"945:6:54"},"nodeType":"YulFunctionCall","src":"945:31:54"},"nodeType":"YulExpressionStatement","src":"945:31:54"},{"nodeType":"YulAssignment","src":"985:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"996:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1001:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"992:3:54"},"nodeType":"YulFunctionCall","src":"992:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"985:3:54"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"919:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"927:3:54","type":""}],"src":"880:130:54"},{"body":{"nodeType":"YulBlock","src":"1070:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1087:3:54"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"1092:17:54","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1080:6:54"},"nodeType":"YulFunctionCall","src":"1080:30:54"},"nodeType":"YulExpressionStatement","src":"1080:30:54"},{"nodeType":"YulAssignment","src":"1119:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1130:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1135:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:54"},"nodeType":"YulFunctionCall","src":"1126:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1119:3:54"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1054:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1062:3:54","type":""}],"src":"1015:129:54"},{"body":{"nodeType":"YulBlock","src":"1204:73:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1221:3:54"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1226:16:54","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1214:6:54"},"nodeType":"YulFunctionCall","src":"1214:29:54"},"nodeType":"YulExpressionStatement","src":"1214:29:54"},{"nodeType":"YulAssignment","src":"1252:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1268:2:54","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:54"},"nodeType":"YulFunctionCall","src":"1259:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1252:3:54"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1188:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1196:3:54","type":""}],"src":"1149:128:54"},{"body":{"nodeType":"YulBlock","src":"1337:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1354:3:54"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1359:18:54","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1347:6:54"},"nodeType":"YulFunctionCall","src":"1347:31:54"},"nodeType":"YulExpressionStatement","src":"1347:31:54"},{"nodeType":"YulAssignment","src":"1387:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1398:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1394:3:54"},"nodeType":"YulFunctionCall","src":"1394:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1387:3:54"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1321:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1329:3:54","type":""}],"src":"1282:130:54"},{"body":{"nodeType":"YulBlock","src":"1472:71:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1489:3:54"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1494:14:54","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1482:6:54"},"nodeType":"YulFunctionCall","src":"1482:27:54"},"nodeType":"YulExpressionStatement","src":"1482:27:54"},{"nodeType":"YulAssignment","src":"1518:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1529:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1534:2:54","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1525:3:54"},"nodeType":"YulFunctionCall","src":"1525:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1518:3:54"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1456:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1464:3:54","type":""}],"src":"1417:126:54"},{"body":{"nodeType":"YulBlock","src":"1603:79:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1620:3:54"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1625:22:54","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1613:6:54"},"nodeType":"YulFunctionCall","src":"1613:35:54"},"nodeType":"YulExpressionStatement","src":"1613:35:54"},{"nodeType":"YulAssignment","src":"1657:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1668:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1673:2:54","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1664:3:54"},"nodeType":"YulFunctionCall","src":"1664:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1657:3:54"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1587:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1595:3:54","type":""}],"src":"1548:134:54"},{"body":{"nodeType":"YulBlock","src":"1742:72:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:54"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1764:15:54","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:54"},"nodeType":"YulFunctionCall","src":"1752:28:54"},"nodeType":"YulExpressionStatement","src":"1752:28:54"},{"nodeType":"YulAssignment","src":"1789:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1800:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1796:3:54"},"nodeType":"YulFunctionCall","src":"1796:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1789:3:54"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1726:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1734:3:54","type":""}],"src":"1687:127:54"},{"body":{"nodeType":"YulBlock","src":"1874:78:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1891:3:54"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1896:21:54","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1884:6:54"},"nodeType":"YulFunctionCall","src":"1884:34:54"},"nodeType":"YulExpressionStatement","src":"1884:34:54"},{"nodeType":"YulAssignment","src":"1927:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1938:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:54","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1934:3:54"},"nodeType":"YulFunctionCall","src":"1934:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1927:3:54"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1858:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1866:3:54","type":""}],"src":"1819:133:54"},{"body":{"nodeType":"YulBlock","src":"2012:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2029:3:54"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"2034:17:54","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2022:6:54"},"nodeType":"YulFunctionCall","src":"2022:30:54"},"nodeType":"YulExpressionStatement","src":"2022:30:54"},{"nodeType":"YulAssignment","src":"2061:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2072:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2077:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2068:3:54"},"nodeType":"YulFunctionCall","src":"2068:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2061:3:54"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2004:3:54","type":""}],"src":"1957:129:54"},{"body":{"nodeType":"YulBlock","src":"2146:59:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2163:3:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"2168:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2156:6:54"},"nodeType":"YulFunctionCall","src":"2156:16:54"},"nodeType":"YulExpressionStatement","src":"2156:16:54"},{"nodeType":"YulAssignment","src":"2181:18:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2192:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2197:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:54"},"nodeType":"YulFunctionCall","src":"2188:11:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2181:3:54"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2130:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2138:3:54","type":""}],"src":"2091:114:54"},{"body":{"nodeType":"YulBlock","src":"4321:815:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4338:3:54"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4343:18:54","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:54"},"nodeType":"YulFunctionCall","src":"4331:31:54"},"nodeType":"YulExpressionStatement","src":"4331:31:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4382:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4387:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4378:3:54"},"nodeType":"YulFunctionCall","src":"4378:12:54"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4392:18:54","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4371:6:54"},"nodeType":"YulFunctionCall","src":"4371:40:54"},"nodeType":"YulExpressionStatement","src":"4371:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4431:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4436:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4427:3:54"},"nodeType":"YulFunctionCall","src":"4427:12:54"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4441:16:54","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4420:6:54"},"nodeType":"YulFunctionCall","src":"4420:38:54"},"nodeType":"YulExpressionStatement","src":"4420:38:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4478:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4483:2:54","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4474:3:54"},"nodeType":"YulFunctionCall","src":"4474:12:54"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4488:21:54","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4467:6:54"},"nodeType":"YulFunctionCall","src":"4467:43:54"},"nodeType":"YulExpressionStatement","src":"4467:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4530:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4535:2:54","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4526:3:54"},"nodeType":"YulFunctionCall","src":"4526:12:54"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4540:19:54","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4519:6:54"},"nodeType":"YulFunctionCall","src":"4519:41:54"},"nodeType":"YulExpressionStatement","src":"4519:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4580:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4585:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4576:3:54"},"nodeType":"YulFunctionCall","src":"4576:12:54"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4590:17:54","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:54"},"nodeType":"YulFunctionCall","src":"4569:39:54"},"nodeType":"YulExpressionStatement","src":"4569:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4628:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4633:2:54","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4624:3:54"},"nodeType":"YulFunctionCall","src":"4624:12:54"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4638:19:54","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4617:6:54"},"nodeType":"YulFunctionCall","src":"4617:41:54"},"nodeType":"YulExpressionStatement","src":"4617:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4678:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4683:3:54","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:54"},"nodeType":"YulFunctionCall","src":"4674:13:54"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4689:20:54","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:54"},"nodeType":"YulFunctionCall","src":"4667:43:54"},"nodeType":"YulExpressionStatement","src":"4667:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4730:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4735:3:54","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:54"},"nodeType":"YulFunctionCall","src":"4726:13:54"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4741:18:54","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4719:6:54"},"nodeType":"YulFunctionCall","src":"4719:41:54"},"nodeType":"YulExpressionStatement","src":"4719:41:54"},{"nodeType":"YulAssignment","src":"4769:361:54","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5110:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5115:3:54","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:54"},"nodeType":"YulFunctionCall","src":"5106:13:54"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"5076:29:54"},"nodeType":"YulFunctionCall","src":"5076:44:54"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"5046:29:54"},"nodeType":"YulFunctionCall","src":"5046:75:54"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"5016:29:54"},"nodeType":"YulFunctionCall","src":"5016:106:54"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4986:29:54"},"nodeType":"YulFunctionCall","src":"4986:137:54"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4956:29:54"},"nodeType":"YulFunctionCall","src":"4956:168:54"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4926:29:54"},"nodeType":"YulFunctionCall","src":"4926:199:54"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4896:29:54"},"nodeType":"YulFunctionCall","src":"4896:230:54"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4866:29:54"},"nodeType":"YulFunctionCall","src":"4866:261:54"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4836:29:54"},"nodeType":"YulFunctionCall","src":"4836:292:54"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4806:29:54"},"nodeType":"YulFunctionCall","src":"4806:323:54"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4776:29:54"},"nodeType":"YulFunctionCall","src":"4776:354:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4769:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4305:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4313:3:54","type":""}],"src":"2210:2926:54"},{"body":{"nodeType":"YulBlock","src":"5838:306:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5855:3:54"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5860:15:54","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5848:6:54"},"nodeType":"YulFunctionCall","src":"5848:28:54"},"nodeType":"YulExpressionStatement","src":"5848:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5896:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5901:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:54"},"nodeType":"YulFunctionCall","src":"5892:12:54"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5906:14:54","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:54"},"nodeType":"YulFunctionCall","src":"5885:36:54"},"nodeType":"YulExpressionStatement","src":"5885:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5941:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5946:2:54","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5937:3:54"},"nodeType":"YulFunctionCall","src":"5937:12:54"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5951:17:54","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5930:6:54"},"nodeType":"YulFunctionCall","src":"5930:39:54"},"nodeType":"YulExpressionStatement","src":"5930:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5989:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5994:2:54","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5985:3:54"},"nodeType":"YulFunctionCall","src":"5985:12:54"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5999:18:54","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5978:6:54"},"nodeType":"YulFunctionCall","src":"5978:40:54"},"nodeType":"YulExpressionStatement","src":"5978:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6038:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6043:2:54","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6034:3:54"},"nodeType":"YulFunctionCall","src":"6034:12:54"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6048:27:54","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6027:6:54"},"nodeType":"YulFunctionCall","src":"6027:49:54"},"nodeType":"YulExpressionStatement","src":"6027:49:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6096:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6101:2:54","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6092:3:54"},"nodeType":"YulFunctionCall","src":"6092:12:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"6106:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6085:6:54"},"nodeType":"YulFunctionCall","src":"6085:25:54"},"nodeType":"YulExpressionStatement","src":"6085:25:54"},{"nodeType":"YulAssignment","src":"6119:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6130:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6135:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:54"},"nodeType":"YulFunctionCall","src":"6126:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6119:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5822:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5830:3:54","type":""}],"src":"5141:1003:54"},{"body":{"nodeType":"YulBlock","src":"6362:276:54","statements":[{"nodeType":"YulAssignment","src":"6372:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6384:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6395:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:54"},"nodeType":"YulFunctionCall","src":"6380:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6372:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6415:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"6426:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:54"},"nodeType":"YulFunctionCall","src":"6408:25:54"},"nodeType":"YulExpressionStatement","src":"6408:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6453:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6464:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6449:3:54"},"nodeType":"YulFunctionCall","src":"6449:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"6469:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6442:6:54"},"nodeType":"YulFunctionCall","src":"6442:34:54"},"nodeType":"YulExpressionStatement","src":"6442:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6496:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6507:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:54"},"nodeType":"YulFunctionCall","src":"6492:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6512:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6485:6:54"},"nodeType":"YulFunctionCall","src":"6485:34:54"},"nodeType":"YulExpressionStatement","src":"6485:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6539:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6550:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6535:3:54"},"nodeType":"YulFunctionCall","src":"6535:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"6555:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6528:6:54"},"nodeType":"YulFunctionCall","src":"6528:34:54"},"nodeType":"YulExpressionStatement","src":"6528:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6593:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6578:3:54"},"nodeType":"YulFunctionCall","src":"6578:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6603:6:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6624:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6615:3:54"},"nodeType":"YulFunctionCall","src":"6615:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6628:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:54"},"nodeType":"YulFunctionCall","src":"6611:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6599:3:54"},"nodeType":"YulFunctionCall","src":"6599:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6571:6:54"},"nodeType":"YulFunctionCall","src":"6571:61:54"},"nodeType":"YulExpressionStatement","src":"6571:61:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6299:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6310:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6318:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6326:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6334:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6342:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6353:4:54","type":""}],"src":"6149:489:54"}]},"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 abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_9c70(pos) -> end\n    {\n        mstore(pos, \"uint256 duration,\")\n        end := add(pos, 17)\n    }\n    function abi_encode_stringliteral_bab2(pos) -> end\n    {\n        mstore(pos, \"uint256 periods,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_1e4b(pos) -> end\n    {\n        mstore(pos, \"uint256 amount,\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_89a9(pos) -> end\n    {\n        mstore(pos, \"uint256 ratio,\")\n        end := add(pos, 14)\n    }\n    function abi_encode_stringliteral_5c66(pos) -> end\n    {\n        mstore(pos, \"uint256 royalty,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_b48f(pos) -> end\n    {\n        mstore(pos, \"uint256 fee,\")\n        end := add(pos, 12)\n    }\n    function abi_encode_stringliteral_0c2a(pos) -> end\n    {\n        mstore(pos, \"uint256 withdrawFee,\")\n        end := add(pos, 20)\n    }\n    function abi_encode_stringliteral_7afc(pos) -> end\n    {\n        mstore(pos, \"uint256 salt,\")\n        end := add(pos, 13)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral_41ba(pos) -> end\n    {\n        mstore(pos, \"uint256 counter\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address token,\")\n        mstore(add(pos, 46), \"uint256 identifier,\")\n        mstore(add(pos, 65), \"address currency,\")\n        mstore(add(pos, 82), \"address artist,\")\n        mstore(add(pos, 97), \"address platform,\")\n        mstore(add(pos, 114), \"uint256 startTime,\")\n        mstore(add(pos, 132), \"uint256 endTime,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral_41ba(abi_encode_stringliteral_cfcd(abi_encode_stringliteral_7afc(abi_encode_stringliteral_0c2a(abi_encode_stringliteral_b48f(abi_encode_stringliteral_5c66(abi_encode_stringliteral_89a9(abi_encode_stringliteral_1e4b(abi_encode_stringliteral_bab2(abi_encode_stringliteral_9c70(add(pos, 148))))))))))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6101a06040523480156200001257600080fd5b506040516200380b3803806200380b8339810160408190526200003591620004aa565b818181818082808080806200004962000137565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa158015620000e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010e9190620004e2565b5061016052505060016000555050506001600160a01b0316610180525062000507945050505050565b60008080806200016760408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b39450600091620003c291016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b80516001600160a01b0381168114620004a557600080fd5b919050565b60008060408385031215620004be57600080fd5b620004c9836200048d565b9150620004d9602084016200048d565b90509250929050565b60008060408385031215620004f657600080fd5b505080516020909101519092909150565b60805160a05160c05160e0516101005161012051610140516101605161018051613269620005a26000396000818161026e015281816120260152818161270a0152818161279001526129d8015260006120e2015260008181610ef601526120a001526000611dbc01526000611cec01526000818161051d01526107c701526000611d1a01526000611d6801526000611d4001526132696000f3fe6080604052600436106100bc5760003560e01c8063b86ae9e111610074578063f07ec3731161004e578063f07ec37314610218578063f47b774014610238578063ffc5d97a1461025c57600080fd5b8063b86ae9e1146101d2578063be92d18e146101f2578063d9e534111461020557600080fd5b80635b34b966116100a55780635b34b9661461016f5780639432cc1d14610192578063a3210e7c146101b257600080fd5b806322378003146100c157806346423aa7146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004612c46565b6102b5565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610116610111366004612cbb565b6102c8565b604080519815158952961515602089015294151595870195909552911515606086015273ffffffffffffffffffffffffffffffffffffffff16608085015260a084015260c083019190915260e0820152610100016100ed565b34801561017b57600080fd5b5061018461035b565b6040519081526020016100ed565b34801561019e57600080fd5b506100e16101ad366004612cd4565b61036a565b3480156101be57600080fd5b506100e16101cd366004612d51565b610376565b3480156101de57600080fd5b506101846101ed366004612d81565b610387565b6100e1610200366004612d9e565b610556565b6100e1610213366004612de3565b610562565b34801561022457600080fd5b50610184610233366004612e43565b610577565b34801561024457600080fd5b5061024d6105a2565b6040516100ed93929190612e5e565b34801561026857600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b60006102c183836105ba565b9392505050565b600080600080600080600080610340896000908152600260208190526040909120805460018201549282015460039092015460ff8083169561010084048216956201000085048316956301000000860490931694640100000000900473ffffffffffffffffffffffffffffffffffffffff1693909291565b97509750975097509750975097509750919395975091939597565b600061036561090a565b905090565b60006102c18383610967565b600061038182610b27565b92915050565b60408051610220810190915260009061038190806103a86020860186612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260408086013560208301520161040a6080860160608701612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260200161043560a0860160808701612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260200161046060c0860160a08701612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460c0013581526020018460e00135815260200184610100013581526020018461012001358152602001846101400135815260200184610160013581526020018461018001358152602001846101a001358152602001846101c001358152602001846101e0013581526020018461020001358152508361022001357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60006102c18383610c2c565b600061056f848484610dad565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610381565b60606000806105af610ed5565b925092509250909192565b60006105c4610f50565b6000808084815b818110156108fc57368888838181106105e6576105e6612ef7565b90506020028101906105f89190612f26565b9050806106086020820182612e43565b94506108006040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018360200160208101906106489190612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260408085013560208301520161067c6080850160608601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106a760a0850160808601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106d260c0850160a08601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018360c0013581526020018360e00135815260200183610100013581526020018361012001358152602001836101400135815260200183610160013581526020018361018001358152602001836101a001358152602001836101c001358152602001836101e0013581526020018361020001358152506107a08360000160208101906107789190612e43565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60008181526002602052604090209750955061081f8688600180610f8e565b50865460ff166108f257610876858761083c610220860186612f64565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d092505050565b86547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117875560405173ffffffffffffffffffffffffffffffffffffffff8616907f09e126c208c7c6b8de91fb519ff46ef1f6eb471f6376862ca4de42ea000026d6906108e99089815260200190565b60405180910390a25b50506001016105cb565b506001979650505050505050565b6000610914610f50565b503360008181526001602081815260409283902080549092019182905591518181529092917f721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f910160405180910390a290565b6000610971610f50565b60008083815b81811015610b1a573687878381811061099257610992612ef7565b610240029190910191506109ab90506020820182612e43565b93503373ffffffffffffffffffffffffffffffffffffffff8516146109fc576040517f80ec737400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a3c6040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e43565b6000818152600260205260409020600181015490975090915015610a94576040517f9633f278000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010017865560405173ffffffffffffffffffffffffffffffffffffffff8616907fa6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba5275390610b089084815260200190565b60405180910390a25050600101610977565b5060019695505050505050565b600080600080610b3885600161114d565b92509250925080610b4e57506000949350505050565b610b7f6002610b636040880160208901612e43565b30610b7160208a018a612e43565b60408a013560016000611299565b6000610b916080870160608801612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610bbb57610bb68583611388565b610bc5565b610bc58583611425565b610bd26020860186612e43565b73ffffffffffffffffffffffffffffffffffffffff167fe68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada84604051610c1991815260200190565b60405180910390a2506001949350505050565b600080600080610c3d8660016114dd565b92509250925081610c545760009350505050610381565b856000610c648260018084611654565b90506000610c786080840160608501612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610cd757610cc86002610ca86040850160208601612e43565b610cb56020860186612e43565b3086604001356001886102000135611299565b610cd28282611843565b610d3a565b604080516020808252818301909252600091602082018180368337019050509050610d2c610d0b6040850160208601612e43565b610d186020860186612e43565b3086604001356001886102000135876118fc565b610d3883838a84611962565b505b610d476020830183612e43565b73ffffffffffffffffffffffffffffffffffffffff167f8fb2c26b66af59de39b1b2f4e1fba157f4408a9b52495599333e37e3191b08698685604051610d97929190918252602082015260400190565b60405180910390a2506001979650505050505050565b6000806000806000610dc188876001611a83565b929650909450909250905080610dde5760009450505050506102c1565b506000610dee8887600085611654565b90506000610e0260808a0160608b01612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610e2c57610e278882611843565b610e5b565b604080516020808252818301909252600091602082018180368337019050509050610e5989838a84611962565b505b8115610e8657610e866002610e7660408b0160208c01612e43565b308660408d013560016000611299565b60408051858152602081018890528315158183015290517f6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d389181900360600190a1506001979650505050505050565b6060600080610ee2611ce8565b6040805160038082528183019092529193507f0000000000000000000000000000000000000000000000000000000000000000925060208201818036833750507f312e3100000000000000000000000000000000000000000000000000000000006020830152509391925090565b600160005414610f8c576040517f7fa8a98700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8254600090610100900460ff1615610fe3578115610fdb576040517f1a51557400000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b50600061056f565b835462010000900460ff161561102e578115610fdb576040517f836f8ef900000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b821561107e57600384015415611079578115610fdb576040517f9633f27800000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b6110c5565b83600301546000036110c5578115610fdb576040517fe567c93e00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8416036110f257505050565b600061113a6110ff611ce8565b7f1901000000000000000000000000000000000000000000000000000000000000600090815260029190915260228581526042822091905290565b9050611147848284611dde565b50505050565b6000808061117361116336879003870187613021565b6107a06107786020890189612e43565b600081815260026020526040902080549194509060ff166111d35784156111c9576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b5060009050611292565b806003015492506111e78482600088610f8e565b6111f5575060009050611292565b4261120561010088013585613144565b82600101546112149190613181565b11156112555784156111c9576040517f031ea4cb00000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b6112628160020154611ff7565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1663010100001790555060015b9250925092565b801561130e57600060405190507f4ce34aa200000000000000000000000000000000000000000000000000000000815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e4820152611308828261010461209a565b5061137f565b600287600381111561132257611322613199565b036113725781600114611361576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136d86868686612236565b61137f565b61137f8686868686612345565b50505050505050565b6113bc6113986020840184612e43565b826113ad6101208601356101808701356131c8565b6113b79190613144565b612477565b6000816113d36101208501356101408601356131c8565b6113dd9190613144565b90506127106113f161016085013583613144565b6113fb91906131c8565b6114059082613203565b905061142061141a60c0850160a08601612e43565b82612477565b505050565b6114696114386080840160608501612e43565b6114456020850185612e43565b8361145a6101208701356101808801356131c8565b6114649190613144565b6124ec565b6000816114806101208501356101408601356131c8565b61148a9190613144565b905061271061149e61016085013583613144565b6114a891906131c8565b6114b29082613203565b90506114206114c76080850160608601612e43565b6114d760c0860160a08701612e43565b836124ec565b60008080846114f560c082013560e083013587612654565b611509575060009250829150819050611292565b6002816101200135101561155f57841561154f576040517f0a199cb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009250829150819050611292565b61158161157136839003830183613021565b6107a06107786020850185612e43565b600081815260026020526040902090945061159f8582600189610f8e565b6115b25750600092508291506112929050565b805460ff166115da576115da6115cb6020840184612e43565b8661083c6102208b018b612f64565b6115fe336115ee6040850160208601612e43565b84604001358561010001356126b3565b815460017fffffffffffffffff000000000000000000000000000000000000000000ff00009091163364010000000002178117835542818401556002830182905560039092018290559497909650939450505050565b61167f6040518060800160405280600081526020016000815260200160008152602001600081525090565b60008061169186610120890135613203565b6101c088013560408501529050831561177d576116b86101208801356101808901356131c8565b6116c29082613144565b6116d190610180890135613203565b91506116e76101208801356101408901356131c8565b6116f19082613144565b61170090610140890135613203565b835260408301518290826127106101608b01356117276101208d01356101408e01356131c8565b6117319190613144565b61173b91906131c8565b6117459190613144565b611754906101408b0135613203565b61175e9190613203565b6117689190613203565b60208401526101808701356060840152611839565b6117916101208801356101808901356131c8565b61179b9087613144565b91506117b16101208801356101408901356131c8565b6117bb9087613144565b80845260408401518391612710906117d9906101608c013590613144565b6117e391906131c8565b6117ed9190613203565b6117f79190613203565b6020840152841561183957866101a00135836000018181516118199190613181565b9052506040830180516101a08901359190611835908390613181565b9052505b5050949350505050565b80513490811015611880576040517f1a783b8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189a6118906020850185612e43565b8360200151612477565b6118b76118ad60c0850160a08601612e43565b8360400151612477565b6060820151156118de576118de6118d460a0850160808601612e43565b8360600151612477565b81516118ea9082613203565b90508015611420576114203382612477565b6119068183612860565b816119515782600114611945576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136d87878787612236565b61137f828260028a8a8a8a8a61287f565b3360006119756080870160608801612e43565b9050611998818361198c60c08a0160a08b01612e43565b88604001518888612918565b6060850151156119c3576119c381836119b760a08a0160808b01612e43565b88606001518888612918565b606085015160408601518651600092916119dc91613203565b6119e69190613203565b905085602001518110611a3f57611a118284611a0560208b018b612e43565b89602001518989612918565b6020860151611a209082613203565b90508015611a3657611a36828430848989612918565b61136d84612953565b611a598284611a5160208b018b612e43565b848989612918565b611a6284612953565b61137f82611a7360208a018a612e43565b8389602001516114649190613203565b6000808080611aaa611a9a36899003890189613021565b6107a061077860208b018b612e43565b600081815260026020526040902080549195509060ff16611b10578515611b00576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b5060009250829150819050611cdf565b611b1d8582600089610f8e565b611b31575060009250829150819050611cdf565b876101200135878260030154611b479190613181565b1180611b535750600187105b15611b93578515611b00576040517fc8910ec000000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b428861010001358260030154611ba99190613144565b8260010154611bb89190613181565b1015611bf9578515611b00576040517f2e775cae00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b86816003016000828254611c0d9190613181565b909155505060038101546101208901359003611c655780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000178155600281015460019250611c6090611ff7565b611cb9565b805460028201546003830154611cb992640100000000900473ffffffffffffffffffffffffffffffffffffffff169190611ca5906101008d013590613144565b8460010154611cb49190613181565b61297c565b54640100000000900473ffffffffffffffffffffffffffffffffffffffff169250600191505b93509350935093565b60007f00000000000000000000000000000000000000000000000000000000000000004614611db957610365604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000526000825160208403805182604103600060018211611e65576040880151606089015160001a96508215611e4357601b8160ff1c0196507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811660408a01525b8689528985526020600060808760015afa508385528589526040890152506000515b8914891515169550859050611fbc57604082526044860380516040880380517f1626ba7e0000000000000000000000000000000000000000000000000000000084528a82526020600060648901868f5afa98508815611fb2577f1626ba7e0000000000000000000000000000000000000000000000000000000060005114611fb2578b3b15611f18577f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6001876041031115611f4e577f8baa579f0000000000000000000000000000000000000000000000000000000060005260046000fd5b640101000000881a611f88577f1f003d0a000000000000000000000000000000000000000000000000000000006000528760045260246000fd5b7f815e1d640000000000000000000000000000000000000000000000000000000060005260046000fd5b8486529190925290525b505050508061114757611fcd612a30565b7f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561207f57600080fd5b505af1158015612093573d6000803e3d6000fd5b5050505050565b604080517f000000000000000000000000000000000000000000000000000000000000000074ff000000000000000000000000000000000000000017600090815260208690527f000000000000000000000000000000000000000000000000000000000000000083526055600b209190925273ffffffffffffffffffffffffffffffffffffffff169050600080600080526020600085876000875af191506000519050816121945761214a612a30565b6040517fd13d53d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610a8b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f4ce34aa2000000000000000000000000000000000000000000000000000000001461222e576040517f1cf99b260000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff84166024820152604401610a8b565b505050505050565b833b61226a577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af180612336573d156122f7576020601f3d01046020830481600302818311156122de57818303600302610200838002858002030401015b5a6020820110156122f3573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b612379577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af18061245b573d1561241d576020601f3d010460208604816003028183111561240457818303600302610200838002858002030401015b5a602082011015612419573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b61248081612a78565b600080600080600085875af19050806114205761249b612a30565b6040517f470c7c1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610a8b565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528260045281602452602060006044600080885af1803d15601f3d116001600051141617163d151581166126455780863b151516612645578061261757816125dd573d1561259e576020601f3d010460208404816003028183111561258557818303600302610200838002858002030401015b5a60208201101561259a573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452306024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528560045230602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528560045260246000fd5b50506040525050600060605250565b6000428411806126645750428311155b156126a95781156126a1576040517f6f7eac2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006102c1565b5060019392505050565b6040517fc6c3bbe600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301526044820184905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063c6c3bbe6906064016020604051808303816000875af1158015612753573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612777919061321a565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663e030565e82886127c14288613181565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff909116602483015267ffffffffffffffff166044820152606401600060405180830381600087803b15801561283e57600080fd5b505af1158015612852573d6000803e3d6000fd5b509298975050505050505050565b600061286d836020015190565b90508181146114205761142083612953565b600060208851036128d35750604080885260208089018a90527f4ce34aa2000000000000000000000000000000000000000000000000000000009189019190915260448801526001606488018190526128e2565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61292183612a78565b61292b8183612860565b816129415761293c86868686612ab5565b61222e565b61222e8282600189898960008a61287f565b604081511461295f5750565b600061296c826020015190565b90506129788183612c22565b5050565b6040517fe030565e0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff848116602483015267ffffffffffffffff831660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e030565e90606401600060405180830381600087803b158015612a1c57600080fd5b505af115801561137f573d6000803e3d6000fd5b3d15610f8c576020601f3d01046020604051048160030281831115612a6357818303600302610200838002858002030401015b5a602082011015611420573d6000803e3d6000fd5b80600003612ab2576040517f91b3e51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116612c125780873b151516612c125780612be45781612baa573d15612b6b576020601f3d0104602084048160030281831115612b5257818303600302610200838002858002030401015b5a602082011015612b67573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b6064810151604082019060c002604401612c3d84838361209a565b50506020905250565b60008060208385031215612c5957600080fd5b823567ffffffffffffffff80821115612c7157600080fd5b818501915085601f830112612c8557600080fd5b813581811115612c9457600080fd5b8660208260051b8501011115612ca957600080fd5b60209290920196919550909350505050565b600060208284031215612ccd57600080fd5b5035919050565b60008060208385031215612ce757600080fd5b823567ffffffffffffffff80821115612cff57600080fd5b818501915085601f830112612d1357600080fd5b813581811115612d2257600080fd5b86602061024083028501011115612ca957600080fd5b60006102208284031215612d4b57600080fd5b50919050565b60006102208284031215612d6457600080fd5b6102c18383612d38565b60006102408284031215612d4b57600080fd5b60006102408284031215612d9457600080fd5b6102c18383612d6e565b60008060408385031215612db157600080fd5b823567ffffffffffffffff811115612dc857600080fd5b612dd485828601612d6e565b95602094909401359450505050565b60008060006102608486031215612df957600080fd5b612e038585612d38565b956102208501359550610240909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612e3e57600080fd5b919050565b600060208284031215612e5557600080fd5b6102c182612e1a565b606081526000845180606084015260005b81811015612e8c5760208188018101516080868401015201612e6f565b81811115612e9e576000608083860101525b5060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1833603018112612f5a57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f9957600080fd5b83018035915067ffffffffffffffff821115612fb457600080fd5b602001915036819003821315612fc957600080fd5b9250929050565b604051610220810167ffffffffffffffff8111828210171561301b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610220828403121561303457600080fd5b61303c612fd0565b61304583612e1a565b815261305360208401612e1a565b60208201526040830135604082015261306e60608401612e1a565b606082015261307f60808401612e1a565b608082015261309060a08401612e1a565b60a082015260c0838101359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561317c5761317c613115565b500290565b6000821982111561319457613194613115565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000826131fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561321557613215613115565b500390565b60006020828403121561322c57600080fd5b505191905056fea2646970667358221220575964513e40dbfaa7b6b915f4bf502e6b092bd7cad7f2a61129ea3398f79abd64736f6c634300080e0033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x380B CODESIZE SUB DUP1 PUSH3 0x380B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x4AA JUMP JUMPDEST DUP2 DUP2 DUP2 DUP2 DUP1 DUP3 DUP1 DUP1 DUP1 DUP1 PUSH3 0x49 PUSH3 0x137 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xE8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x10E SWAP2 SWAP1 PUSH3 0x4E2 JUMP JUMPDEST POP PUSH2 0x160 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x180 MSTORE POP PUSH3 0x507 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH3 0x167 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x312E3 PUSH1 0xEC SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP6 POP PUSH32 0xE6BBD6277E1BF288EED5E8D1780F9A50B239E86B153736BCEEBCCF4EA79D90B3 SWAP5 POP PUSH1 0x0 SWAP2 PUSH3 0x3C2 SWAP2 ADD PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL DUP2 MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0x10 DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965722C00000000000000000000000000 PUSH1 0x2E DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC818DD5C9C995B98DE4B PUSH1 0x7A SHL PUSH1 0x41 DUP3 ADD MSTORE PUSH15 0x1859191C995CDCC8185C9D1A5CDD0B PUSH1 0x8A SHL PUSH1 0x52 DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC81C1B185D199BDC9B4B PUSH1 0x7A SHL PUSH1 0x61 DUP3 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH1 0x72 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88191D5C985D1A5BDB8B PUSH1 0x7A SHL PUSH1 0x94 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C195C9A5BD91CCB PUSH1 0x82 SHL PUSH1 0xA5 DUP3 ADD MSTORE PUSH15 0x1D5A5B9D0C8D4D88185B5BDD5B9D0B PUSH1 0x8A SHL PUSH1 0xB5 DUP3 ADD MSTORE PUSH14 0x1D5A5B9D0C8D4D881C985D1A5BCB PUSH1 0x92 SHL PUSH1 0xC4 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C9BDE585B1D1E4B PUSH1 0x82 SHL PUSH1 0xD2 DUP3 ADD MSTORE PUSH12 0x1D5A5B9D0C8D4D881999594B PUSH1 0xA2 SHL PUSH1 0xE2 DUP3 ADD MSTORE PUSH32 0x75696E743235362077697468647261774665652C000000000000000000000000 PUSH1 0xEE DUP3 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x102 DUP3 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x10F DUP3 ADD MSTORE PUSH15 0x3AB4B73A191A9B1031B7BAB73A32B9 PUSH1 0x89 SHL PUSH2 0x122 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH2 0x131 DUP3 ADD MSTORE PUSH2 0x132 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x4C9 DUP4 PUSH3 0x48D JUMP JUMPDEST SWAP2 POP PUSH3 0x4D9 PUSH1 0x20 DUP5 ADD PUSH3 0x48D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x3269 PUSH3 0x5A2 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x26E ADD MSTORE DUP2 DUP2 PUSH2 0x2026 ADD MSTORE DUP2 DUP2 PUSH2 0x270A ADD MSTORE DUP2 DUP2 PUSH2 0x2790 ADD MSTORE PUSH2 0x29D8 ADD MSTORE PUSH1 0x0 PUSH2 0x20E2 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0xEF6 ADD MSTORE PUSH2 0x20A0 ADD MSTORE PUSH1 0x0 PUSH2 0x1DBC ADD MSTORE PUSH1 0x0 PUSH2 0x1CEC ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x51D ADD MSTORE PUSH2 0x7C7 ADD MSTORE PUSH1 0x0 PUSH2 0x1D1A ADD MSTORE PUSH1 0x0 PUSH2 0x1D68 ADD MSTORE PUSH1 0x0 PUSH2 0x1D40 ADD MSTORE PUSH2 0x3269 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB86AE9E1 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xF07EC373 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xF07EC373 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0xF47B7740 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xFFC5D97A EQ PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB86AE9E1 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xBE92D18E EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xD9E53411 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5B34B966 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x5B34B966 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x9432CC1D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0xA3210E7C EQ PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x22378003 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x46423AA7 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x2C46 JUMP JUMPDEST PUSH2 0x2B5 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 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CBB JUMP JUMPDEST PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 ISZERO ISZERO DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE SWAP5 ISZERO ISZERO SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP7 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x35B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x2CD4 JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x2D51 JUMP JUMPDEST PUSH2 0x376 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2D81 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9E JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DE3 JUMP JUMPDEST PUSH2 0x562 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E5E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x5BA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x340 DUP10 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP3 ADD SLOAD PUSH1 0x3 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP6 PUSH2 0x100 DUP5 DIV DUP3 AND SWAP6 PUSH3 0x10000 DUP6 DIV DUP4 AND SWAP6 PUSH4 0x1000000 DUP7 DIV SWAP1 SWAP4 AND SWAP5 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP1 SWAP3 SWAP2 JUMP JUMPDEST SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x365 PUSH2 0x90A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x381 DUP3 PUSH2 0xB27 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x220 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x381 SWAP1 DUP1 PUSH2 0x3A8 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x40A PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x460 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x140 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x180 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1A0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1C0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1E0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x200 ADD CALLDATALOAD DUP2 MSTORE POP DUP4 PUSH2 0x220 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE PUSH2 0x220 SWAP1 SWAP4 ADD DUP1 MLOAD SWAP3 DUP2 MSTORE PUSH2 0x260 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0xC2C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F DUP5 DUP5 DUP5 PUSH2 0xDAD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x381 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x5AF PUSH2 0xED5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8FC JUMPI CALLDATASIZE DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI PUSH2 0x5E6 PUSH2 0x2EF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5F8 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x608 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E43 JUMP JUMPDEST SWAP5 POP PUSH2 0x800 PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x648 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x67C PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x140 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x180 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1A0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1C0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1E0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x200 ADD CALLDATALOAD DUP2 MSTORE POP PUSH2 0x7A0 DUP4 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x778 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE PUSH2 0x220 SWAP1 SWAP4 ADD DUP1 MLOAD SWAP3 DUP2 MSTORE PUSH2 0x260 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP8 POP SWAP6 POP PUSH2 0x81F DUP7 DUP9 PUSH1 0x1 DUP1 PUSH2 0xF8E JUMP JUMPDEST POP DUP7 SLOAD PUSH1 0xFF AND PUSH2 0x8F2 JUMPI PUSH2 0x876 DUP6 DUP8 PUSH2 0x83C PUSH2 0x220 DUP7 ADD DUP7 PUSH2 0x2F64 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x10D0 SWAP3 POP POP POP JUMP JUMPDEST DUP7 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR DUP8 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0x9E126C208C7C6B8DE91FB519FF46EF1F6EB471F6376862CA4DE42EA000026D6 SWAP1 PUSH2 0x8E9 SWAP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x5CB JUMP JUMPDEST POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x914 PUSH2 0xF50 JUMP JUMPDEST POP CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SWAP2 MLOAD DUP2 DUP2 MSTORE SWAP1 SWAP3 SWAP2 PUSH32 0x721C20121297512B72821B97F5326877EA8ECF4BB9948FEA5BFCB6453074D37F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x971 PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB1A JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x992 JUMPI PUSH2 0x992 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x240 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x9AB SWAP1 POP PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E43 JUMP JUMPDEST SWAP4 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x9FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x80EC737400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3C PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP8 POP SWAP1 SWAP2 POP ISZERO PUSH2 0xA94 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 AND PUSH2 0x100 OR DUP7 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0xA6EB7CDC219E1518CED964E9A34E61D68A94E4F1569DB3E84256BA981BA52753 SWAP1 PUSH2 0xB08 SWAP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 ADD PUSH2 0x977 JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB38 DUP6 PUSH1 0x1 PUSH2 0x114D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP1 PUSH2 0xB4E JUMPI POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB7F PUSH1 0x2 PUSH2 0xB63 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0x2E43 JUMP JUMPDEST ADDRESS PUSH2 0xB71 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB91 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBBB JUMPI PUSH2 0xBB6 DUP6 DUP4 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x1425 JUMP JUMPDEST PUSH2 0xBD2 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xE68E1577BA456C32A752DBE4FA63FBAA46841E7E54BC9667D021B9AF64A1CADA DUP5 PUSH1 0x40 MLOAD PUSH2 0xC19 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xC3D DUP7 PUSH1 0x1 PUSH2 0x14DD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH2 0xC54 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x381 JUMP JUMPDEST DUP6 PUSH1 0x0 PUSH2 0xC64 DUP3 PUSH1 0x1 DUP1 DUP5 PUSH2 0x1654 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC78 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCD7 JUMPI PUSH2 0xCC8 PUSH1 0x2 PUSH2 0xCA8 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0xCB5 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD PUSH2 0x1299 JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP3 PUSH2 0x1843 JUMP JUMPDEST PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xD2C PUSH2 0xD0B PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0xD18 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD DUP8 PUSH2 0x18FC JUMP JUMPDEST PUSH2 0xD38 DUP4 DUP4 DUP11 DUP5 PUSH2 0x1962 JUMP JUMPDEST POP JUMPDEST PUSH2 0xD47 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8FB2C26B66AF59DE39B1B2F4E1FBA157F4408A9B52495599333E37E3191B0869 DUP7 DUP6 PUSH1 0x40 MLOAD PUSH2 0xD97 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xDC1 DUP9 DUP8 PUSH1 0x1 PUSH2 0x1A83 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDDE JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xDEE DUP9 DUP8 PUSH1 0x0 DUP6 PUSH2 0x1654 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE02 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE2C JUMPI PUSH2 0xE27 DUP9 DUP3 PUSH2 0x1843 JUMP JUMPDEST PUSH2 0xE5B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xE59 DUP10 DUP4 DUP11 DUP5 PUSH2 0x1962 JUMP JUMPDEST POP JUMPDEST DUP2 ISZERO PUSH2 0xE86 JUMPI PUSH2 0xE86 PUSH1 0x2 PUSH2 0xE76 PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH32 0x6CB64AA506CC92732FC83160C8EA61203B5A13A8CF92E5B5C7CCC4BA6BB41D38 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0xEE2 PUSH2 0x1CE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP3 POP PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH32 0x312E310000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE POP SWAP4 SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x7FA8A98700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xFE3 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A51557400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x56F JUMP JUMPDEST DUP4 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x102E JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x836F8EF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST DUP3 ISZERO PUSH2 0x107E JUMPI PUSH1 0x3 DUP5 ADD SLOAD ISZERO PUSH2 0x1079 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x10C5 JUMP JUMPDEST DUP4 PUSH1 0x3 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x10C5 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0xE567C93E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SUB PUSH2 0x10F2 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113A PUSH2 0x10FF PUSH2 0x1CE8 JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP6 DUP2 MSTORE PUSH1 0x42 DUP3 KECCAK256 SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1147 DUP5 DUP3 DUP5 PUSH2 0x1DDE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1173 PUSH2 0x1163 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP5 POP SWAP1 PUSH1 0xFF AND PUSH2 0x11D3 JUMPI DUP5 ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4C58FF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD SWAP3 POP PUSH2 0x11E7 DUP5 DUP3 PUSH1 0x0 DUP9 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x11F5 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST TIMESTAMP PUSH2 0x1205 PUSH2 0x100 DUP9 ADD CALLDATALOAD DUP6 PUSH2 0x3144 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1214 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST GT ISZERO PUSH2 0x1255 JUMPI DUP5 ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x31EA4CB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x1262 DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x1FF7 JUMP JUMPDEST DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF AND PUSH4 0x1010000 OR SWAP1 SSTORE POP PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x130E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE DUP8 PUSH1 0x44 DUP3 ADD MSTORE DUP7 PUSH1 0x64 DUP3 ADD MSTORE DUP6 PUSH1 0x84 DUP3 ADD MSTORE DUP5 PUSH1 0xA4 DUP3 ADD MSTORE DUP4 PUSH1 0xC4 DUP3 ADD MSTORE DUP3 PUSH1 0xE4 DUP3 ADD MSTORE PUSH2 0x1308 DUP3 DUP3 PUSH2 0x104 PUSH2 0x209A JUMP JUMPDEST POP PUSH2 0x137F JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1322 JUMPI PUSH2 0x1322 PUSH2 0x3199 JUMP JUMPDEST SUB PUSH2 0x1372 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x1361 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP7 DUP7 DUP7 DUP7 PUSH2 0x2236 JUMP JUMPDEST PUSH2 0x137F JUMP JUMPDEST PUSH2 0x137F DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2345 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13BC PUSH2 0x1398 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E43 JUMP JUMPDEST DUP3 PUSH2 0x13AD PUSH2 0x120 DUP7 ADD CALLDATALOAD PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x13B7 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x13D3 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x13DD SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x13F1 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x13FB SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1405 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP PUSH2 0x1420 PUSH2 0x141A PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP3 PUSH2 0x2477 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1469 PUSH2 0x1438 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x1445 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH2 0x145A PUSH2 0x120 DUP8 ADD CALLDATALOAD PUSH2 0x180 DUP9 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1464 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1480 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x148A SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x149E PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x14A8 SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x14B2 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP PUSH2 0x1420 PUSH2 0x14C7 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x14D7 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 PUSH2 0x14F5 PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD CALLDATALOAD DUP8 PUSH2 0x2654 JUMP JUMPDEST PUSH2 0x1509 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH2 0x120 ADD CALLDATALOAD LT ISZERO PUSH2 0x155F JUMPI DUP5 ISZERO PUSH2 0x154F JUMPI PUSH1 0x40 MLOAD PUSH32 0xA199CB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST PUSH2 0x1581 PUSH2 0x1571 CALLDATASIZE DUP4 SWAP1 SUB DUP4 ADD DUP4 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x159F DUP6 DUP3 PUSH1 0x1 DUP10 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x15B2 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP PUSH2 0x1292 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x15DA JUMPI PUSH2 0x15DA PUSH2 0x15CB PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E43 JUMP JUMPDEST DUP7 PUSH2 0x83C PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x2F64 JUMP JUMPDEST PUSH2 0x15FE CALLER PUSH2 0x15EE PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP6 PUSH2 0x100 ADD CALLDATALOAD PUSH2 0x26B3 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FF0000 SWAP1 SWAP2 AND CALLER PUSH5 0x100000000 MUL OR DUP2 OR DUP4 SSTORE TIMESTAMP DUP2 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP3 ADD DUP3 SWAP1 SSTORE SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH2 0x167F PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1691 DUP7 PUSH2 0x120 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x1C0 DUP9 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP DUP4 ISZERO PUSH2 0x177D JUMPI PUSH2 0x16B8 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x16C2 SWAP1 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x16D1 SWAP1 PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST SWAP2 POP PUSH2 0x16E7 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x16F1 SWAP1 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x1700 SWAP1 PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP3 SWAP1 DUP3 PUSH2 0x2710 PUSH2 0x160 DUP12 ADD CALLDATALOAD PUSH2 0x1727 PUSH2 0x120 DUP14 ADD CALLDATALOAD PUSH2 0x140 DUP15 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1731 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x173B SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1745 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x1754 SWAP1 PUSH2 0x140 DUP12 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x175E SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x1768 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1839 JUMP JUMPDEST PUSH2 0x1791 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x179B SWAP1 DUP8 PUSH2 0x3144 JUMP JUMPDEST SWAP2 POP PUSH2 0x17B1 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x17BB SWAP1 DUP8 PUSH2 0x3144 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP4 SWAP2 PUSH2 0x2710 SWAP1 PUSH2 0x17D9 SWAP1 PUSH2 0x160 DUP13 ADD CALLDATALOAD SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x17E3 SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x17ED SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x17F7 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE DUP5 ISZERO PUSH2 0x1839 JUMPI DUP7 PUSH2 0x1A0 ADD CALLDATALOAD DUP4 PUSH1 0x0 ADD DUP2 DUP2 MLOAD PUSH2 0x1819 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH2 0x1A0 DUP10 ADD CALLDATALOAD SWAP2 SWAP1 PUSH2 0x1835 SWAP1 DUP4 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD CALLVALUE SWAP1 DUP2 LT ISZERO PUSH2 0x1880 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A783B8D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x189A PUSH2 0x1890 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x18B7 PUSH2 0x18AD PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD ISZERO PUSH2 0x18DE JUMPI PUSH2 0x18DE PUSH2 0x18D4 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x18EA SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1420 JUMPI PUSH2 0x1420 CALLER DUP3 PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x1906 DUP2 DUP4 PUSH2 0x2860 JUMP JUMPDEST DUP2 PUSH2 0x1951 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x1945 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP8 DUP8 DUP8 DUP8 PUSH2 0x2236 JUMP JUMPDEST PUSH2 0x137F DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x287F JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1975 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E43 JUMP JUMPDEST SWAP1 POP PUSH2 0x1998 DUP2 DUP4 PUSH2 0x198C PUSH1 0xC0 DUP11 ADD PUSH1 0xA0 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP9 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD ISZERO PUSH2 0x19C3 JUMPI PUSH2 0x19C3 DUP2 DUP4 PUSH2 0x19B7 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD DUP9 DUP9 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x19DC SWAP2 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x19E6 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x20 ADD MLOAD DUP2 LT PUSH2 0x1A3F JUMPI PUSH2 0x1A11 DUP3 DUP5 PUSH2 0x1A05 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD MLOAD DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x1A20 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A36 JUMPI PUSH2 0x1A36 DUP3 DUP5 ADDRESS DUP5 DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0x136D DUP5 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0x1A59 DUP3 DUP5 PUSH2 0x1A51 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST DUP5 DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0x1A62 DUP5 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0x137F DUP3 PUSH2 0x1A73 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E43 JUMP JUMPDEST DUP4 DUP10 PUSH1 0x20 ADD MLOAD PUSH2 0x1464 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AAA PUSH2 0x1A9A CALLDATASIZE DUP10 SWAP1 SUB DUP10 ADD DUP10 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP6 POP SWAP1 PUSH1 0xFF AND PUSH2 0x1B10 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4C58FF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x1B1D DUP6 DUP3 PUSH1 0x0 DUP10 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x1B31 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CDF JUMP JUMPDEST DUP8 PUSH2 0x120 ADD CALLDATALOAD DUP8 DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1B47 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST GT DUP1 PUSH2 0x1B53 JUMPI POP PUSH1 0x1 DUP8 LT JUMPDEST ISZERO PUSH2 0x1B93 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC8910EC000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST TIMESTAMP DUP9 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1BA9 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1BB8 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST LT ISZERO PUSH2 0x1BF9 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E775CAE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST DUP7 DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1C0D SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 SUB PUSH2 0x1C65 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF AND PUSH3 0x10000 OR DUP2 SSTORE PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 SWAP3 POP PUSH2 0x1C60 SWAP1 PUSH2 0x1FF7 JUMP JUMPDEST PUSH2 0x1CB9 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH2 0x1CB9 SWAP3 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x1CA5 SWAP1 PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP1 PUSH2 0x3144 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1CB4 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST PUSH2 0x297C JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH1 0x1 SWAP2 POP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x1DB9 JUMPI PUSH2 0x365 PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH1 0x20 DUP5 SUB DUP1 MLOAD DUP3 PUSH1 0x41 SUB PUSH1 0x0 PUSH1 0x1 DUP3 GT PUSH2 0x1E65 JUMPI PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x0 BYTE SWAP7 POP DUP3 ISZERO PUSH2 0x1E43 JUMPI PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD SWAP7 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x40 DUP11 ADD MSTORE JUMPDEST DUP7 DUP10 MSTORE DUP10 DUP6 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x80 DUP8 PUSH1 0x1 GAS STATICCALL POP DUP4 DUP6 MSTORE DUP6 DUP10 MSTORE PUSH1 0x40 DUP10 ADD MSTORE POP PUSH1 0x0 MLOAD JUMPDEST DUP10 EQ DUP10 ISZERO ISZERO AND SWAP6 POP DUP6 SWAP1 POP PUSH2 0x1FBC JUMPI PUSH1 0x40 DUP3 MSTORE PUSH1 0x44 DUP7 SUB DUP1 MLOAD PUSH1 0x40 DUP9 SUB DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP11 DUP3 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 DUP10 ADD DUP7 DUP16 GAS STATICCALL SWAP9 POP DUP9 ISZERO PUSH2 0x1FB2 JUMPI PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MLOAD EQ PUSH2 0x1FB2 JUMPI DUP12 EXTCODESIZE ISZERO PUSH2 0x1F18 JUMPI PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP8 PUSH1 0x41 SUB GT ISZERO PUSH2 0x1F4E JUMPI PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH5 0x101000000 DUP9 BYTE PUSH2 0x1F88 JUMPI PUSH32 0x1F003D0A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST DUP5 DUP7 MSTORE SWAP2 SWAP1 SWAP3 MSTORE SWAP1 MSTORE JUMPDEST POP POP POP POP DUP1 PUSH2 0x1147 JUMPI PUSH2 0x1FCD PUSH2 0x2A30 JUMP JUMPDEST PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x42966C6800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x42966C68 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x207F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2093 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH21 0xFF0000000000000000000000000000000000000000 OR PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH32 0x0 DUP4 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 SWAP2 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 MSTORE PUSH1 0x20 PUSH1 0x0 DUP6 DUP8 PUSH1 0x0 DUP8 GAS CALL SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP2 PUSH2 0x2194 JUMPI PUSH2 0x214A PUSH2 0x2A30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD13D53D400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x222E JUMPI PUSH1 0x40 MLOAD PUSH32 0x1CF99B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xA8B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x226A JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x2336 JUMPI RETURNDATASIZE ISZERO PUSH2 0x22F7 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x22DE JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x22F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x2379 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x245B JUMPI RETURNDATASIZE ISZERO PUSH2 0x241D JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2404 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x2419 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH2 0x2480 DUP2 PUSH2 0x2A78 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x1420 JUMPI PUSH2 0x249B PUSH2 0x2A30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x470C7C1D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP3 PUSH1 0x4 MSTORE DUP2 PUSH1 0x24 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x44 PUSH1 0x0 DUP1 DUP9 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x2645 JUMPI DUP1 DUP7 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2645 JUMPI DUP1 PUSH2 0x2617 JUMPI DUP2 PUSH2 0x25DD JUMPI RETURNDATASIZE ISZERO PUSH2 0x259E JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2585 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x259A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE ADDRESS PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE ADDRESS PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP JUMP JUMPDEST PUSH1 0x0 TIMESTAMP DUP5 GT DUP1 PUSH2 0x2664 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x26A9 JUMPI DUP2 ISZERO PUSH2 0x26A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6F7EAC2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC6C3BBE600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xC6C3BBE6 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2753 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 0x2777 SWAP2 SWAP1 PUSH2 0x321A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xE030565E DUP3 DUP9 PUSH2 0x27C1 TIMESTAMP DUP9 PUSH2 0x3181 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2852 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x286D DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1420 JUMPI PUSH2 0x1420 DUP4 PUSH2 0x2953 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x28D3 JUMPI POP PUSH1 0x40 DUP1 DUP9 MSTORE PUSH1 0x20 DUP1 DUP10 ADD DUP11 SWAP1 MSTORE PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 SWAP2 DUP10 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x64 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x28E2 JUMP JUMPDEST POP PUSH1 0x64 DUP8 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 MSTORE JUMPDEST PUSH1 0x3C PUSH1 0xC0 DUP3 MUL DUP10 ADD SUB DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE DUP4 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2921 DUP4 PUSH2 0x2A78 JUMP JUMPDEST PUSH2 0x292B DUP2 DUP4 PUSH2 0x2860 JUMP JUMPDEST DUP2 PUSH2 0x2941 JUMPI PUSH2 0x293C DUP7 DUP7 DUP7 DUP7 PUSH2 0x2AB5 JUMP JUMPDEST PUSH2 0x222E JUMP JUMPDEST PUSH2 0x222E DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD EQ PUSH2 0x295F JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296C DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2978 DUP2 DUP4 PUSH2 0x2C22 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE030565E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE030565E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xF8C JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2A63 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x1420 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x2AB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x91B3E51400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x2C12 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2C12 JUMPI DUP1 PUSH2 0x2BE4 JUMPI DUP2 PUSH2 0x2BAA JUMPI RETURNDATASIZE ISZERO PUSH2 0x2B6B JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2B52 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x2B67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST PUSH1 0x64 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0xC0 MUL PUSH1 0x44 ADD PUSH2 0x2C3D DUP5 DUP4 DUP4 PUSH2 0x209A JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2CFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH2 0x240 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2CA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D38 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D6E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DD4 DUP6 DUP3 DUP7 ADD PUSH2 0x2D6E JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x260 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2DF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E03 DUP6 DUP6 PUSH2 0x2D38 JUMP JUMPDEST SWAP6 PUSH2 0x220 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH2 0x240 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2E3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP3 PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E8C JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x2E6F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2E9E JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC1 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2FB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2FC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x301B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303C PUSH2 0x2FD0 JUMP JUMPDEST PUSH2 0x3045 DUP4 PUSH2 0x2E1A JUMP JUMPDEST DUP2 MSTORE PUSH2 0x3053 PUSH1 0x20 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x306E PUSH1 0x60 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x307F PUSH1 0x80 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3090 PUSH1 0xA0 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xE0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x140 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x160 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x180 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1C0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1E0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x200 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x317C JUMPI PUSH2 0x317C PUSH2 0x3115 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3194 JUMPI PUSH2 0x3194 PUSH2 0x3115 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x31FE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3215 JUMPI PUSH2 0x3215 PUSH2 0x3115 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI MSIZE PUSH5 0x513E40DBFA 0xA7 0xB6 0xB9 ISZERO DELEGATECALL 0xBF POP 0x2E PUSH12 0x92BD7CAD7F2A61129EA3398 0xF7 SWAP11 0xBD PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"234:2896:31:-:0;;;341:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;416:17;435:11;416:17;435:11;;416:17;;;;;786:19:32;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:32;;-1:-1:-1;1203:187:32;;;6408:25:54;;;;6449:18;;;6442:34;;;;-1:-1:-1;6492:18:54;;6485:34;;;;6535:18;;;6528:34;1371:4:32;6578:19:54;;;6571:61;1203:187:32;;;;;;;;;;6380:19:54;;1203:187:32;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:32;;;;;;1032:42;;;-1:-1:-1;;;1032:42:32;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:32;;-1:-1:-1;;2345:1:33;658:16:42;:31;-1:-1:-1;;;;;;;;417:20:43;;;-1:-1:-1;234:2896:31;;-1:-1:-1;;;;;234:2896:31;1527:1491:32;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:32;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:32;;;;1909:724;1778:31;;-1:-1:-1;1834:23:32;;-1:-1:-1;;;1909:724:32;;;-1:-1:-1;;;4331:31:54;;-1:-1:-1;;;4387:2:54;4378:12;;4371:40;-1:-1:-1;;;4436:2:54;4427:12;;4420:38;4488:21;4483:2;4474:12;;4467:43;-1:-1:-1;;;4535:2:54;4526:12;;4519:41;-1:-1:-1;;;4585:2:54;4576:12;;4569:39;-1:-1:-1;;;4633:2:54;4624:12;;4617:41;-1:-1:-1;;;4683:3:54;4674:13;;4667:43;-1:-1:-1;;;4735:3:54;4726:13;;4719:41;-1:-1:-1;;;5115:3:54;5106:13;;809:32;-1:-1:-1;;;857:12:54;;;945:31;-1:-1:-1;;;992:12:54;;;1080:30;-1:-1:-1;;;1126:12:54;;;1214:29;-1:-1:-1;;;1259:12:54;;;1347:31;-1:-1:-1;;;1394:12:54;;;1482:27;1625:22;1525:12;;;1613:35;-1:-1:-1;;;1664:12:54;;;1752:28;1896:21;1796:12;;;1884:34;-1:-1:-1;;;1934:12:54;;;2022:30;-1:-1:-1;;;2068:12:54;;;2156:16;2188:11;;;2210:2926;1909:724:32;;;;-1:-1:-1;;1909:724:32;;;;;;;;;;-1:-1:-1;;;1909:724:32;2690:248;;5848:28:54;-1:-1:-1;;;5892:12:54;;;5885:36;-1:-1:-1;;;5937:12:54;;;5930:39;-1:-1:-1;;;5985:12:54;;;5978:40;6048:27;6034:12;;;6027:49;-1:-1:-1;;;6092:12:54;;;6085:25;1909:724:32;-1:-1:-1;6126:12:54;;2690:248:32;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:177:54:-;93:13;;-1:-1:-1;;;;;135:31:54;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:245::-;573:6;581;634:2;622:9;613:7;609:23;605:32;602:52;;;650:1;647;640:12;602:52;-1:-1:-1;;673:16:54;;729:2;714:18;;;708:25;673:16;;708:25;;-1:-1:-1;494:245:54:o;6149:489::-;234:2896:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_assertNonReentrant_7766":{"entryPoint":3920,"id":7766,"parameterSlots":0,"returnSlots":0},"@_assertNonZeroAmount_4362":{"entryPoint":10872,"id":4362,"parameterSlots":1,"returnSlots":0},"@_assertValidSignature_7918":{"entryPoint":7646,"id":7918,"parameterSlots":3,"returnSlots":0},"@_burnToken_7880":{"entryPoint":8183,"id":7880,"parameterSlots":1,"returnSlots":0},"@_calculateDispatch_6264":{"entryPoint":5716,"id":6264,"parameterSlots":4,"returnSlots":1},"@_callConduitUsingOffsets_5861":{"entryPoint":8346,"id":5861,"parameterSlots":3,"returnSlots":0},"@_cancel_7522":{"entryPoint":2407,"id":7522,"parameterSlots":2,"returnSlots":1},"@_deriveConduit_5971":{"entryPoint":null,"id":5971,"parameterSlots":1,"returnSlots":1},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveEIP712Digest_6030":{"entryPoint":null,"id":6030,"parameterSlots":2,"returnSlots":1},"@_deriveOrderHash_5951":{"entryPoint":null,"id":5951,"parameterSlots":2,"returnSlots":1},"@_domainSeparator_5987":{"entryPoint":7400,"id":5987,"parameterSlots":0,"returnSlots":1},"@_extendToken_7867":{"entryPoint":10620,"id":7867,"parameterSlots":3,"returnSlots":0},"@_getAccumulatorConduitKey_5871":{"entryPoint":null,"id":5871,"parameterSlots":1,"returnSlots":1},"@_getCounter_5441":{"entryPoint":null,"id":5441,"parameterSlots":1,"returnSlots":1},"@_getOrderStatus_7712":{"entryPoint":null,"id":7712,"parameterSlots":1,"returnSlots":8},"@_incrementCounter_5427":{"entryPoint":2314,"id":5427,"parameterSlots":0,"returnSlots":1},"@_information_6018":{"entryPoint":3797,"id":6018,"parameterSlots":0,"returnSlots":3},"@_insert_5916":{"entryPoint":10367,"id":5916,"parameterSlots":8,"returnSlots":0},"@_mintToken_7845":{"entryPoint":9907,"id":7845,"parameterSlots":4,"returnSlots":1},"@_performERC1155Transfer_7984":{"entryPoint":9029,"id":7984,"parameterSlots":5,"returnSlots":0},"@_performERC20Transfer_7943":{"entryPoint":10933,"id":7943,"parameterSlots":4,"returnSlots":0},"@_performERC721Transfer_7968":{"entryPoint":8758,"id":7968,"parameterSlots":4,"returnSlots":0},"@_performSelfERC20Transfer_7954":{"entryPoint":9452,"id":7954,"parameterSlots":3,"returnSlots":0},"@_revertWithReasonIfOneIsReturned_6053":{"entryPoint":10800,"id":6053,"parameterSlots":0,"returnSlots":0},"@_transferERC20AndFinalize_6885":{"entryPoint":6498,"id":6885,"parameterSlots":4,"returnSlots":0},"@_transferERC20Broken_6674":{"entryPoint":5157,"id":6674,"parameterSlots":2,"returnSlots":0},"@_transferERC20_5625":{"entryPoint":10520,"id":5625,"parameterSlots":6,"returnSlots":0},"@_transferERC721_5685":{"entryPoint":6396,"id":5685,"parameterSlots":7,"returnSlots":0},"@_transferEthAndFinalize_6754":{"entryPoint":6211,"id":6754,"parameterSlots":2,"returnSlots":0},"@_transferEthBroken_6622":{"entryPoint":5000,"id":6622,"parameterSlots":2,"returnSlots":0},"@_transferEth_5568":{"entryPoint":9335,"id":5568,"parameterSlots":2,"returnSlots":0},"@_transferIndividual721Or1155Item_5539":{"entryPoint":4761,"id":5539,"parameterSlots":7,"returnSlots":0},"@_triggerIfArmedAndNotAccumulatable_5766":{"entryPoint":10336,"id":5766,"parameterSlots":2,"returnSlots":0},"@_triggerIfArmed_5791":{"entryPoint":10579,"id":5791,"parameterSlots":1,"returnSlots":0},"@_trigger_5814":{"entryPoint":11298,"id":5814,"parameterSlots":2,"returnSlots":0},"@_validateAndBreakOrder_6568":{"entryPoint":2855,"id":6568,"parameterSlots":1,"returnSlots":1},"@_validateAndFulfillOrder_6381":{"entryPoint":3116,"id":6381,"parameterSlots":2,"returnSlots":1},"@_validateAndRepayOrder_6494":{"entryPoint":3501,"id":6494,"parameterSlots":3,"returnSlots":1},"@_validateOrderAndUpdateBreakStatus_7384":{"entryPoint":4429,"id":7384,"parameterSlots":2,"returnSlots":3},"@_validateOrderAndUpdateRepayStatus_7271":{"entryPoint":6787,"id":7271,"parameterSlots":3,"returnSlots":4},"@_validateOrderAndUpdateStatus_7085":{"entryPoint":5341,"id":7085,"parameterSlots":2,"returnSlots":3},"@_validate_7665":{"entryPoint":1466,"id":7665,"parameterSlots":2,"returnSlots":1},"@_verifyOrderStatus_8437":{"entryPoint":3982,"id":8437,"parameterSlots":4,"returnSlots":1},"@_verifySignature_8358":{"entryPoint":4304,"id":8358,"parameterSlots":3,"returnSlots":0},"@_verifyTime_8326":{"entryPoint":9812,"id":8326,"parameterSlots":3,"returnSlots":1},"@breakOrder_4445":{"entryPoint":886,"id":4445,"parameterSlots":1,"returnSlots":1},"@cancel_4461":{"entryPoint":874,"id":4461,"parameterSlots":2,"returnSlots":1},"@fulfillOrder_4409":{"entryPoint":1366,"id":4409,"parameterSlots":2,"returnSlots":1},"@getCounter_4580":{"entryPoint":1399,"id":4580,"parameterSlots":1,"returnSlots":1},"@getOrderHash_4540":{"entryPoint":903,"id":4540,"parameterSlots":1,"returnSlots":1},"@getOrderStatus_4566":{"entryPoint":712,"id":4566,"parameterSlots":1,"returnSlots":8},"@incrementCounter_4488":{"entryPoint":859,"id":4488,"parameterSlots":0,"returnSlots":1},"@information_4593":{"entryPoint":1442,"id":4593,"parameterSlots":0,"returnSlots":3},"@repayOrder_4430":{"entryPoint":1378,"id":4430,"parameterSlots":3,"returnSlots":1},"@shadowToken_7790":{"entryPoint":null,"id":7790,"parameterSlots":0,"returnSlots":0},"@validate_4477":{"entryPoint":693,"id":4477,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":11802,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_OrderComponents_calldata":{"entryPoint":11630,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_OrderParameters_calldata":{"entryPoint":11576,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":11843,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":11476,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":11334,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":11451,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderComponents_$5331_calldata_ptr":{"entryPoint":11649,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptr":{"entryPoint":11601,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptrt_bytes32t_uint256":{"entryPoint":11747,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_struct$_OrderParameters_$5366_memory_ptr":{"entryPoint":12321,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Order_$5372_calldata_ptrt_bytes32":{"entryPoint":11678,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":12826,"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_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"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_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__to_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":9,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint256_t_bool__to_t_bytes32_t_uint256_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed":{"entryPoint":11870,"id":null,"parameterSlots":4,"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_address_t_uint64__to_t_uint256_t_address_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":12132,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_t_struct$_Order_$5372_calldata_ptr":{"entryPoint":12070,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":12240,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":12673,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":12744,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":12612,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":12803,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":12565,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":12697,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":12023,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:13159:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"144:510:54","statements":[{"body":{"nodeType":"YulBlock","src":"190:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"199:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"202:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"192:6:54"},"nodeType":"YulFunctionCall","src":"192:12:54"},"nodeType":"YulExpressionStatement","src":"192:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"165:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"174:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"161:3:54"},"nodeType":"YulFunctionCall","src":"161:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"186:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"157:3:54"},"nodeType":"YulFunctionCall","src":"157:32:54"},"nodeType":"YulIf","src":"154:52:54"},{"nodeType":"YulVariableDeclaration","src":"215:37:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"242:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"229:12:54"},"nodeType":"YulFunctionCall","src":"229:23:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"219:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"261:28:54","value":{"kind":"number","nodeType":"YulLiteral","src":"271:18:54","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"265:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"316:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"325:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"328:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"318:6:54"},"nodeType":"YulFunctionCall","src":"318:12:54"},"nodeType":"YulExpressionStatement","src":"318:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"304:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"312:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"301:2:54"},"nodeType":"YulFunctionCall","src":"301:14:54"},"nodeType":"YulIf","src":"298:34:54"},{"nodeType":"YulVariableDeclaration","src":"341:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"355:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"366:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"351:3:54"},"nodeType":"YulFunctionCall","src":"351:22:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"345:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"421:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"430:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"433:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"423:6:54"},"nodeType":"YulFunctionCall","src":"423:12:54"},"nodeType":"YulExpressionStatement","src":"423:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"400:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"404:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"396:3:54"},"nodeType":"YulFunctionCall","src":"396:13:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"411:7:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"392:3:54"},"nodeType":"YulFunctionCall","src":"392:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"385:6:54"},"nodeType":"YulFunctionCall","src":"385:35:54"},"nodeType":"YulIf","src":"382:55:54"},{"nodeType":"YulVariableDeclaration","src":"446:30:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"473:2:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"460:12:54"},"nodeType":"YulFunctionCall","src":"460:16:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"450:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"503:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"512:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"515:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"505:6:54"},"nodeType":"YulFunctionCall","src":"505:12:54"},"nodeType":"YulExpressionStatement","src":"505:12:54"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"491:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"499:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"488:2:54"},"nodeType":"YulFunctionCall","src":"488:14:54"},"nodeType":"YulIf","src":"485:34:54"},{"body":{"nodeType":"YulBlock","src":"577:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"586:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"589:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"579:6:54"},"nodeType":"YulFunctionCall","src":"579:12:54"},"nodeType":"YulExpressionStatement","src":"579:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"542:2:54"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"550:1:54","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"553:6:54"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"546:3:54"},"nodeType":"YulFunctionCall","src":"546:14:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"538:3:54"},"nodeType":"YulFunctionCall","src":"538:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"563:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"534:3:54"},"nodeType":"YulFunctionCall","src":"534:32:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"568:7:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"531:2:54"},"nodeType":"YulFunctionCall","src":"531:45:54"},"nodeType":"YulIf","src":"528:65:54"},{"nodeType":"YulAssignment","src":"602:21:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"616:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"620:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"612:3:54"},"nodeType":"YulFunctionCall","src":"612:11:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"602:6:54"}]},{"nodeType":"YulAssignment","src":"632:16:54","value":{"name":"length","nodeType":"YulIdentifier","src":"642:6:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"632:6:54"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"102:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"113:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"125:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"133:6:54","type":""}],"src":"14:640:54"},{"body":{"nodeType":"YulBlock","src":"754:92:54","statements":[{"nodeType":"YulAssignment","src":"764:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"776:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"787:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"772:3:54"},"nodeType":"YulFunctionCall","src":"772:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"764:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"806:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"831:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"824:6:54"},"nodeType":"YulFunctionCall","src":"824:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"817:6:54"},"nodeType":"YulFunctionCall","src":"817:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"799:6:54"},"nodeType":"YulFunctionCall","src":"799:41:54"},"nodeType":"YulExpressionStatement","src":"799:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"723:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"734:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"745:4:54","type":""}],"src":"659:187:54"},{"body":{"nodeType":"YulBlock","src":"921:110:54","statements":[{"body":{"nodeType":"YulBlock","src":"967:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"976:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"979:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"969:6:54"},"nodeType":"YulFunctionCall","src":"969:12:54"},"nodeType":"YulExpressionStatement","src":"969:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"942:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"951:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"938:3:54"},"nodeType":"YulFunctionCall","src":"938:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"963:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"934:3:54"},"nodeType":"YulFunctionCall","src":"934:32:54"},"nodeType":"YulIf","src":"931:52:54"},{"nodeType":"YulAssignment","src":"992:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1015:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1002:12:54"},"nodeType":"YulFunctionCall","src":"1002:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"992:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"887:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"898:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"910:6:54","type":""}],"src":"851:180:54"},{"body":{"nodeType":"YulBlock","src":"1309:495:54","statements":[{"nodeType":"YulAssignment","src":"1319:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1331:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1342:3:54","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1327:3:54"},"nodeType":"YulFunctionCall","src":"1327:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1319:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1362:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1387:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1380:6:54"},"nodeType":"YulFunctionCall","src":"1380:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1373:6:54"},"nodeType":"YulFunctionCall","src":"1373:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1355:6:54"},"nodeType":"YulFunctionCall","src":"1355:41:54"},"nodeType":"YulExpressionStatement","src":"1355:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:54"},"nodeType":"YulFunctionCall","src":"1412:18:54"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1446:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1439:6:54"},"nodeType":"YulFunctionCall","src":"1439:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1432:6:54"},"nodeType":"YulFunctionCall","src":"1432:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1405:6:54"},"nodeType":"YulFunctionCall","src":"1405:50:54"},"nodeType":"YulExpressionStatement","src":"1405:50:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1475:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1486:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1471:3:54"},"nodeType":"YulFunctionCall","src":"1471:18:54"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1505:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1498:6:54"},"nodeType":"YulFunctionCall","src":"1498:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1491:6:54"},"nodeType":"YulFunctionCall","src":"1491:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1464:6:54"},"nodeType":"YulFunctionCall","src":"1464:50:54"},"nodeType":"YulExpressionStatement","src":"1464:50:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1534:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1530:3:54"},"nodeType":"YulFunctionCall","src":"1530:18:54"},{"arguments":[{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"1564:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1557:6:54"},"nodeType":"YulFunctionCall","src":"1557:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1550:6:54"},"nodeType":"YulFunctionCall","src":"1550:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1523:6:54"},"nodeType":"YulFunctionCall","src":"1523:50:54"},"nodeType":"YulExpressionStatement","src":"1523:50:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1593:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1604:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1589:3:54"},"nodeType":"YulFunctionCall","src":"1589:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1614:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1622:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1610:3:54"},"nodeType":"YulFunctionCall","src":"1610:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1582:6:54"},"nodeType":"YulFunctionCall","src":"1582:84:54"},"nodeType":"YulExpressionStatement","src":"1582:84:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1697:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1682:3:54"},"nodeType":"YulFunctionCall","src":"1682:19:54"},{"name":"value5","nodeType":"YulIdentifier","src":"1703:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1675:6:54"},"nodeType":"YulFunctionCall","src":"1675:35:54"},"nodeType":"YulExpressionStatement","src":"1675:35:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1730:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1741:3:54","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1726:3:54"},"nodeType":"YulFunctionCall","src":"1726:19:54"},{"name":"value6","nodeType":"YulIdentifier","src":"1747:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1719:6:54"},"nodeType":"YulFunctionCall","src":"1719:35:54"},"nodeType":"YulExpressionStatement","src":"1719:35:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1774:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1785:3:54","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1770:3:54"},"nodeType":"YulFunctionCall","src":"1770:19:54"},{"name":"value7","nodeType":"YulIdentifier","src":"1791:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1763:6:54"},"nodeType":"YulFunctionCall","src":"1763:35:54"},"nodeType":"YulExpressionStatement","src":"1763:35:54"}]},"name":"abi_encode_tuple_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__to_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1222:9:54","type":""},{"name":"value7","nodeType":"YulTypedName","src":"1233:6:54","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1241:6:54","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1249:6:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1257:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1265:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1273:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1281:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1289:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1300:4:54","type":""}],"src":"1036:768:54"},{"body":{"nodeType":"YulBlock","src":"1910:76:54","statements":[{"nodeType":"YulAssignment","src":"1920:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1932:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1928:3:54"},"nodeType":"YulFunctionCall","src":"1928:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1920:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1962:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"1973:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1955:6:54"},"nodeType":"YulFunctionCall","src":"1955:25:54"},"nodeType":"YulExpressionStatement","src":"1955:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1879:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1890:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1901:4:54","type":""}],"src":"1809:177:54"},{"body":{"nodeType":"YulBlock","src":"2131:515:54","statements":[{"body":{"nodeType":"YulBlock","src":"2177:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2186:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2189:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2179:6:54"},"nodeType":"YulFunctionCall","src":"2179:12:54"},"nodeType":"YulExpressionStatement","src":"2179:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2152:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2161:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2148:3:54"},"nodeType":"YulFunctionCall","src":"2148:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2173:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2144:3:54"},"nodeType":"YulFunctionCall","src":"2144:32:54"},"nodeType":"YulIf","src":"2141:52:54"},{"nodeType":"YulVariableDeclaration","src":"2202:37:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2229:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2216:12:54"},"nodeType":"YulFunctionCall","src":"2216:23:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2206:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2248:28:54","value":{"kind":"number","nodeType":"YulLiteral","src":"2258:18:54","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2252:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2303:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2312:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2315:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2305:6:54"},"nodeType":"YulFunctionCall","src":"2305:12:54"},"nodeType":"YulExpressionStatement","src":"2305:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2291:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"2299:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2288:2:54"},"nodeType":"YulFunctionCall","src":"2288:14:54"},"nodeType":"YulIf","src":"2285:34:54"},{"nodeType":"YulVariableDeclaration","src":"2328:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2342:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"2353:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2338:3:54"},"nodeType":"YulFunctionCall","src":"2338:22:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2332:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2408:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2417:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2420:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2410:6:54"},"nodeType":"YulFunctionCall","src":"2410:12:54"},"nodeType":"YulExpressionStatement","src":"2410:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2387:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"2391:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:54"},"nodeType":"YulFunctionCall","src":"2383:13:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2398:7:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2379:3:54"},"nodeType":"YulFunctionCall","src":"2379:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2372:6:54"},"nodeType":"YulFunctionCall","src":"2372:35:54"},"nodeType":"YulIf","src":"2369:55:54"},{"nodeType":"YulVariableDeclaration","src":"2433:30:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2460:2:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2447:12:54"},"nodeType":"YulFunctionCall","src":"2447:16:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2437:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2490:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2499:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2502:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2492:6:54"},"nodeType":"YulFunctionCall","src":"2492:12:54"},"nodeType":"YulExpressionStatement","src":"2492:12:54"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2478:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"2486:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2475:2:54"},"nodeType":"YulFunctionCall","src":"2475:14:54"},"nodeType":"YulIf","src":"2472:34:54"},{"body":{"nodeType":"YulBlock","src":"2569:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2578:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2581:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2571:6:54"},"nodeType":"YulFunctionCall","src":"2571:12:54"},"nodeType":"YulExpressionStatement","src":"2571:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2529:2:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2537:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2545:6:54","type":"","value":"0x0240"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2533:3:54"},"nodeType":"YulFunctionCall","src":"2533:19:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2525:3:54"},"nodeType":"YulFunctionCall","src":"2525:28:54"},{"kind":"number","nodeType":"YulLiteral","src":"2555:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2521:3:54"},"nodeType":"YulFunctionCall","src":"2521:37:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2560:7:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2518:2:54"},"nodeType":"YulFunctionCall","src":"2518:50:54"},"nodeType":"YulIf","src":"2515:70:54"},{"nodeType":"YulAssignment","src":"2594:21:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"2612:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:54"},"nodeType":"YulFunctionCall","src":"2604:11:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2594:6:54"}]},{"nodeType":"YulAssignment","src":"2624:16:54","value":{"name":"length","nodeType":"YulIdentifier","src":"2634:6:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2624:6:54"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2089:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2100:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2112:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2120:6:54","type":""}],"src":"1991:655:54"},{"body":{"nodeType":"YulBlock","src":"2729:86:54","statements":[{"body":{"nodeType":"YulBlock","src":"2769:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2778:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2781:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2771:6:54"},"nodeType":"YulFunctionCall","src":"2771:12:54"},"nodeType":"YulExpressionStatement","src":"2771:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"2750:3:54"},{"name":"offset","nodeType":"YulIdentifier","src":"2755:6:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2746:3:54"},"nodeType":"YulFunctionCall","src":"2746:16:54"},{"kind":"number","nodeType":"YulLiteral","src":"2764:3:54","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2742:3:54"},"nodeType":"YulFunctionCall","src":"2742:26:54"},"nodeType":"YulIf","src":"2739:46:54"},{"nodeType":"YulAssignment","src":"2794:15:54","value":{"name":"offset","nodeType":"YulIdentifier","src":"2803:6:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2794:5:54"}]}]},"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2703:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"2711:3:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2719:5:54","type":""}],"src":"2651:164:54"},{"body":{"nodeType":"YulBlock","src":"2925:150:54","statements":[{"body":{"nodeType":"YulBlock","src":"2972:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2981:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2984:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2974:6:54"},"nodeType":"YulFunctionCall","src":"2974:12:54"},"nodeType":"YulExpressionStatement","src":"2974:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2946:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2942:3:54"},"nodeType":"YulFunctionCall","src":"2942:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2967:3:54","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2938:3:54"},"nodeType":"YulFunctionCall","src":"2938:33:54"},"nodeType":"YulIf","src":"2935:53:54"},{"nodeType":"YulAssignment","src":"2997:72:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3050:9:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3061:7:54"}],"functionName":{"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulIdentifier","src":"3007:42:54"},"nodeType":"YulFunctionCall","src":"3007:62:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2997:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2891:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2902:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2914:6:54","type":""}],"src":"2820:255:54"},{"body":{"nodeType":"YulBlock","src":"3158:86:54","statements":[{"body":{"nodeType":"YulBlock","src":"3198:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3207:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3210:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3200:6:54"},"nodeType":"YulFunctionCall","src":"3200:12:54"},"nodeType":"YulExpressionStatement","src":"3200:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"3179:3:54"},{"name":"offset","nodeType":"YulIdentifier","src":"3184:6:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3175:3:54"},"nodeType":"YulFunctionCall","src":"3175:16:54"},{"kind":"number","nodeType":"YulLiteral","src":"3193:3:54","type":"","value":"576"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3171:3:54"},"nodeType":"YulFunctionCall","src":"3171:26:54"},"nodeType":"YulIf","src":"3168:46:54"},{"nodeType":"YulAssignment","src":"3223:15:54","value":{"name":"offset","nodeType":"YulIdentifier","src":"3232:6:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3223:5:54"}]}]},"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3132:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"3140:3:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3148:5:54","type":""}],"src":"3080:164:54"},{"body":{"nodeType":"YulBlock","src":"3354:150:54","statements":[{"body":{"nodeType":"YulBlock","src":"3401:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3410:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3413:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3403:6:54"},"nodeType":"YulFunctionCall","src":"3403:12:54"},"nodeType":"YulExpressionStatement","src":"3403:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3375:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3384:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3371:3:54"},"nodeType":"YulFunctionCall","src":"3371:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3396:3:54","type":"","value":"576"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3367:3:54"},"nodeType":"YulFunctionCall","src":"3367:33:54"},"nodeType":"YulIf","src":"3364:53:54"},{"nodeType":"YulAssignment","src":"3426:72:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3479:9:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3490:7:54"}],"functionName":{"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulIdentifier","src":"3436:42:54"},"nodeType":"YulFunctionCall","src":"3436:62:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3426:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_OrderComponents_$5331_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3320:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3331:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3343:6:54","type":""}],"src":"3249:255:54"},{"body":{"nodeType":"YulBlock","src":"3610:76:54","statements":[{"nodeType":"YulAssignment","src":"3620:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3632:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3643:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3628:3:54"},"nodeType":"YulFunctionCall","src":"3628:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3620:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3662:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"3673:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3655:6:54"},"nodeType":"YulFunctionCall","src":"3655:25:54"},"nodeType":"YulExpressionStatement","src":"3655:25:54"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3579:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3590:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3601:4:54","type":""}],"src":"3509:177:54"},{"body":{"nodeType":"YulBlock","src":"3803:318:54","statements":[{"body":{"nodeType":"YulBlock","src":"3849:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3858:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3861:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3851:6:54"},"nodeType":"YulFunctionCall","src":"3851:12:54"},"nodeType":"YulExpressionStatement","src":"3851:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3824:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3833:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3820:3:54"},"nodeType":"YulFunctionCall","src":"3820:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3845:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3816:3:54"},"nodeType":"YulFunctionCall","src":"3816:32:54"},"nodeType":"YulIf","src":"3813:52:54"},{"nodeType":"YulVariableDeclaration","src":"3874:37:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3901:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3888:12:54"},"nodeType":"YulFunctionCall","src":"3888:23:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3878:6:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3954:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3963:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3966:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3956:6:54"},"nodeType":"YulFunctionCall","src":"3956:12:54"},"nodeType":"YulExpressionStatement","src":"3956:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3926:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"3934:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3923:2:54"},"nodeType":"YulFunctionCall","src":"3923:30:54"},"nodeType":"YulIf","src":"3920:50:54"},{"nodeType":"YulAssignment","src":"3979:85:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4036:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"4047:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4032:3:54"},"nodeType":"YulFunctionCall","src":"4032:22:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4056:7:54"}],"functionName":{"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulIdentifier","src":"3989:42:54"},"nodeType":"YulFunctionCall","src":"3989:75:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3979:6:54"}]},{"nodeType":"YulAssignment","src":"4073:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4100:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4111:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4096:3:54"},"nodeType":"YulFunctionCall","src":"4096:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4083:12:54"},"nodeType":"YulFunctionCall","src":"4083:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4073:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_Order_$5372_calldata_ptrt_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3761:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3772:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3784:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3792:6:54","type":""}],"src":"3691:430:54"},{"body":{"nodeType":"YulBlock","src":"4265:254:54","statements":[{"body":{"nodeType":"YulBlock","src":"4312:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4321:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4324:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4314:6:54"},"nodeType":"YulFunctionCall","src":"4314:12:54"},"nodeType":"YulExpressionStatement","src":"4314:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4286:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4295:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4282:3:54"},"nodeType":"YulFunctionCall","src":"4282:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4307:3:54","type":"","value":"608"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4278:3:54"},"nodeType":"YulFunctionCall","src":"4278:33:54"},"nodeType":"YulIf","src":"4275:53:54"},{"nodeType":"YulAssignment","src":"4337:72:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4390:9:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4401:7:54"}],"functionName":{"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulIdentifier","src":"4347:42:54"},"nodeType":"YulFunctionCall","src":"4347:62:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4337:6:54"}]},{"nodeType":"YulAssignment","src":"4418:43:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4445:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4456:3:54","type":"","value":"544"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4441:3:54"},"nodeType":"YulFunctionCall","src":"4441:19:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4428:12:54"},"nodeType":"YulFunctionCall","src":"4428:33:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4418:6:54"}]},{"nodeType":"YulAssignment","src":"4470:43:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4497:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4508:3:54","type":"","value":"576"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:54"},"nodeType":"YulFunctionCall","src":"4493:19:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4480:12:54"},"nodeType":"YulFunctionCall","src":"4480:33:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4470:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptrt_bytes32t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4215:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4226:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4238:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4246:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4254:6:54","type":""}],"src":"4126:393:54"},{"body":{"nodeType":"YulBlock","src":"4573:147:54","statements":[{"nodeType":"YulAssignment","src":"4583:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4605:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4592:12:54"},"nodeType":"YulFunctionCall","src":"4592:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4583:5:54"}]},{"body":{"nodeType":"YulBlock","src":"4698:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4707:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4710:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4700:6:54"},"nodeType":"YulFunctionCall","src":"4700:12:54"},"nodeType":"YulExpressionStatement","src":"4700:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4634:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4645:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"4652:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4641:3:54"},"nodeType":"YulFunctionCall","src":"4641:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4631:2:54"},"nodeType":"YulFunctionCall","src":"4631:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4624:6:54"},"nodeType":"YulFunctionCall","src":"4624:73:54"},"nodeType":"YulIf","src":"4621:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4552:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4563:5:54","type":""}],"src":"4524:196:54"},{"body":{"nodeType":"YulBlock","src":"4795:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"4841:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4850:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4853:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4843:6:54"},"nodeType":"YulFunctionCall","src":"4843:12:54"},"nodeType":"YulExpressionStatement","src":"4843:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4816:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4825:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4812:3:54"},"nodeType":"YulFunctionCall","src":"4812:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4837:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4808:3:54"},"nodeType":"YulFunctionCall","src":"4808:32:54"},"nodeType":"YulIf","src":"4805:52:54"},{"nodeType":"YulAssignment","src":"4866:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4895:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4876:18:54"},"nodeType":"YulFunctionCall","src":"4876:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4866:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4761:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4772:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4784:6:54","type":""}],"src":"4725:186:54"},{"body":{"nodeType":"YulBlock","src":"5093:658:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5110:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5121:2:54","type":"","value":"96"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:54"},"nodeType":"YulFunctionCall","src":"5103:21:54"},"nodeType":"YulExpressionStatement","src":"5103:21:54"},{"nodeType":"YulVariableDeclaration","src":"5133:27:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5153:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5147:5:54"},"nodeType":"YulFunctionCall","src":"5147:13:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5137:6:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5180:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5191:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5176:3:54"},"nodeType":"YulFunctionCall","src":"5176:18:54"},{"name":"length","nodeType":"YulIdentifier","src":"5196:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5169:6:54"},"nodeType":"YulFunctionCall","src":"5169:34:54"},"nodeType":"YulExpressionStatement","src":"5169:34:54"},{"nodeType":"YulVariableDeclaration","src":"5212:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"5221:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5216:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"5283:93:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5312:9:54"},{"name":"i","nodeType":"YulIdentifier","src":"5323:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5308:3:54"},"nodeType":"YulFunctionCall","src":"5308:17:54"},{"kind":"number","nodeType":"YulLiteral","src":"5327:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5304:3:54"},"nodeType":"YulFunctionCall","src":"5304:27:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5347:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"5355:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5343:3:54"},"nodeType":"YulFunctionCall","src":"5343:14:54"},{"kind":"number","nodeType":"YulLiteral","src":"5359:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5339:3:54"},"nodeType":"YulFunctionCall","src":"5339:25:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5333:5:54"},"nodeType":"YulFunctionCall","src":"5333:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5297:6:54"},"nodeType":"YulFunctionCall","src":"5297:69:54"},"nodeType":"YulExpressionStatement","src":"5297:69:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5242:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"5245:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5239:2:54"},"nodeType":"YulFunctionCall","src":"5239:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5253:21:54","statements":[{"nodeType":"YulAssignment","src":"5255:17:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5264:1:54"},{"kind":"number","nodeType":"YulLiteral","src":"5267:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5260:3:54"},"nodeType":"YulFunctionCall","src":"5260:12:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5255:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"5235:3:54","statements":[]},"src":"5231:145:54"},{"body":{"nodeType":"YulBlock","src":"5410:67:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5439:9:54"},{"name":"length","nodeType":"YulIdentifier","src":"5450:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5435:3:54"},"nodeType":"YulFunctionCall","src":"5435:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"5459:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5431:3:54"},"nodeType":"YulFunctionCall","src":"5431:32:54"},{"kind":"number","nodeType":"YulLiteral","src":"5465:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5424:6:54"},"nodeType":"YulFunctionCall","src":"5424:43:54"},"nodeType":"YulExpressionStatement","src":"5424:43:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5391:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"5394:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5388:2:54"},"nodeType":"YulFunctionCall","src":"5388:13:54"},"nodeType":"YulIf","src":"5385:92:54"},{"nodeType":"YulAssignment","src":"5486:122:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5502:9:54"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5521:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5529:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5517:3:54"},"nodeType":"YulFunctionCall","src":"5517:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"5534:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5513:3:54"},"nodeType":"YulFunctionCall","src":"5513:88:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5498:3:54"},"nodeType":"YulFunctionCall","src":"5498:104:54"},{"kind":"number","nodeType":"YulLiteral","src":"5604:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5494:3:54"},"nodeType":"YulFunctionCall","src":"5494:114:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5486:4:54"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5628:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5639:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5624:3:54"},"nodeType":"YulFunctionCall","src":"5624:20:54"},{"name":"value1","nodeType":"YulIdentifier","src":"5646:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5617:6:54"},"nodeType":"YulFunctionCall","src":"5617:36:54"},"nodeType":"YulExpressionStatement","src":"5617:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5673:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5684:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5669:3:54"},"nodeType":"YulFunctionCall","src":"5669:18:54"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5693:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5701:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5689:3:54"},"nodeType":"YulFunctionCall","src":"5689:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5662:6:54"},"nodeType":"YulFunctionCall","src":"5662:83:54"},"nodeType":"YulExpressionStatement","src":"5662:83:54"}]},"name":"abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5046:9:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5057:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5065:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5073:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5084:4:54","type":""}],"src":"4916:835:54"},{"body":{"nodeType":"YulBlock","src":"5857:125:54","statements":[{"nodeType":"YulAssignment","src":"5867:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5879:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5890:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5875:3:54"},"nodeType":"YulFunctionCall","src":"5875:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5867:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5909:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5924:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5932:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5920:3:54"},"nodeType":"YulFunctionCall","src":"5920:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5902:6:54"},"nodeType":"YulFunctionCall","src":"5902:74:54"},"nodeType":"YulExpressionStatement","src":"5902:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5826:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5837:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5848:4:54","type":""}],"src":"5756:226:54"},{"body":{"nodeType":"YulBlock","src":"6019:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6036:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6039:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6029:6:54"},"nodeType":"YulFunctionCall","src":"6029:88:54"},"nodeType":"YulExpressionStatement","src":"6029:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6133:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6136:4:54","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6126:6:54"},"nodeType":"YulFunctionCall","src":"6126:15:54"},"nodeType":"YulExpressionStatement","src":"6126:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6157:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6160:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6150:6:54"},"nodeType":"YulFunctionCall","src":"6150:15:54"},"nodeType":"YulExpressionStatement","src":"6150:15:54"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"5987:184:54"},{"body":{"nodeType":"YulBlock","src":"6276:281:54","statements":[{"nodeType":"YulVariableDeclaration","src":"6286:51:54","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"6325:11:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6312:12:54"},"nodeType":"YulFunctionCall","src":"6312:25:54"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"6290:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"6485:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6494:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6497:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6487:6:54"},"nodeType":"YulFunctionCall","src":"6487:12:54"},"nodeType":"YulExpressionStatement","src":"6487:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6360:18:54"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"6388:12:54"},"nodeType":"YulFunctionCall","src":"6388:14:54"},{"name":"base_ref","nodeType":"YulIdentifier","src":"6404:8:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6384:3:54"},"nodeType":"YulFunctionCall","src":"6384:29:54"},{"kind":"number","nodeType":"YulLiteral","src":"6415:66:54","type":"","value":"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:54"},"nodeType":"YulFunctionCall","src":"6380:102:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6356:3:54"},"nodeType":"YulFunctionCall","src":"6356:127:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6349:6:54"},"nodeType":"YulFunctionCall","src":"6349:135:54"},"nodeType":"YulIf","src":"6346:155:54"},{"nodeType":"YulAssignment","src":"6510:41:54","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"6522:8:54"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6532:18:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6518:3:54"},"nodeType":"YulFunctionCall","src":"6518:33:54"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"6510:4:54"}]}]},"name":"access_calldata_tail_t_struct$_Order_$5372_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"6241:8:54","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"6251:11:54","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"6267:4:54","type":""}],"src":"6176:381:54"},{"body":{"nodeType":"YulBlock","src":"6656:486:54","statements":[{"nodeType":"YulVariableDeclaration","src":"6666:51:54","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"6705:11:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6692:12:54"},"nodeType":"YulFunctionCall","src":"6692:25:54"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"6670:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"6865:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6874:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6877:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6867:6:54"},"nodeType":"YulFunctionCall","src":"6867:12:54"},"nodeType":"YulExpressionStatement","src":"6867:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6740:18:54"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"6768:12:54"},"nodeType":"YulFunctionCall","src":"6768:14:54"},{"name":"base_ref","nodeType":"YulIdentifier","src":"6784:8:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6764:3:54"},"nodeType":"YulFunctionCall","src":"6764:29:54"},{"kind":"number","nodeType":"YulLiteral","src":"6795:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6760:3:54"},"nodeType":"YulFunctionCall","src":"6760:102:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6736:3:54"},"nodeType":"YulFunctionCall","src":"6736:127:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6729:6:54"},"nodeType":"YulFunctionCall","src":"6729:135:54"},"nodeType":"YulIf","src":"6726:155:54"},{"nodeType":"YulVariableDeclaration","src":"6890:47:54","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"6908:8:54"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6918:18:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6904:3:54"},"nodeType":"YulFunctionCall","src":"6904:33:54"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"6894:6:54","type":""}]},{"nodeType":"YulAssignment","src":"6946:30:54","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"6969:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6956:12:54"},"nodeType":"YulFunctionCall","src":"6956:20:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6946:6:54"}]},{"body":{"nodeType":"YulBlock","src":"7019:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7028:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7031:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7021:6:54"},"nodeType":"YulFunctionCall","src":"7021:12:54"},"nodeType":"YulExpressionStatement","src":"7021:12:54"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6991:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"6999:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6988:2:54"},"nodeType":"YulFunctionCall","src":"6988:30:54"},"nodeType":"YulIf","src":"6985:50:54"},{"nodeType":"YulAssignment","src":"7044:25:54","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"7056:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"7064:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7052:3:54"},"nodeType":"YulFunctionCall","src":"7052:17:54"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"7044:4:54"}]},{"body":{"nodeType":"YulBlock","src":"7120:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7129:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7132:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7122:6:54"},"nodeType":"YulFunctionCall","src":"7122:12:54"},"nodeType":"YulExpressionStatement","src":"7122:12:54"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"7085:4:54"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"7095:12:54"},"nodeType":"YulFunctionCall","src":"7095:14:54"},{"name":"length","nodeType":"YulIdentifier","src":"7111:6:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7091:3:54"},"nodeType":"YulFunctionCall","src":"7091:27:54"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"7081:3:54"},"nodeType":"YulFunctionCall","src":"7081:38:54"},"nodeType":"YulIf","src":"7078:58:54"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"6613:8:54","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"6623:11:54","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"6639:4:54","type":""},{"name":"length","nodeType":"YulTypedName","src":"6645:6:54","type":""}],"src":"6562:580:54"},{"body":{"nodeType":"YulBlock","src":"7179:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7196:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7199:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7189:6:54"},"nodeType":"YulFunctionCall","src":"7189:88:54"},"nodeType":"YulExpressionStatement","src":"7189:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7293:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7296:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7286:6:54"},"nodeType":"YulFunctionCall","src":"7286:15:54"},"nodeType":"YulExpressionStatement","src":"7286:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7317:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7320:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7310:6:54"},"nodeType":"YulFunctionCall","src":"7310:15:54"},"nodeType":"YulExpressionStatement","src":"7310:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7147:184:54"},{"body":{"nodeType":"YulBlock","src":"7465:119:54","statements":[{"nodeType":"YulAssignment","src":"7475:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7487:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7498:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7483:3:54"},"nodeType":"YulFunctionCall","src":"7483:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7475:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7517:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"7528:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7510:6:54"},"nodeType":"YulFunctionCall","src":"7510:25:54"},"nodeType":"YulExpressionStatement","src":"7510:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7555:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7566:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7551:3:54"},"nodeType":"YulFunctionCall","src":"7551:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"7571:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7544:6:54"},"nodeType":"YulFunctionCall","src":"7544:34:54"},"nodeType":"YulExpressionStatement","src":"7544:34:54"}]},"name":"abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7426:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7437:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7445:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7456:4:54","type":""}],"src":"7336:248:54"},{"body":{"nodeType":"YulBlock","src":"7740:178:54","statements":[{"nodeType":"YulAssignment","src":"7750:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7762:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7773:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7758:3:54"},"nodeType":"YulFunctionCall","src":"7758:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7750:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7792:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"7803:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7785:6:54"},"nodeType":"YulFunctionCall","src":"7785:25:54"},"nodeType":"YulExpressionStatement","src":"7785:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7830:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7841:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7826:3:54"},"nodeType":"YulFunctionCall","src":"7826:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"7846:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7819:6:54"},"nodeType":"YulFunctionCall","src":"7819:34:54"},"nodeType":"YulExpressionStatement","src":"7819:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7873:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7884:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7869:3:54"},"nodeType":"YulFunctionCall","src":"7869:18:54"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7903:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7896:6:54"},"nodeType":"YulFunctionCall","src":"7896:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7889:6:54"},"nodeType":"YulFunctionCall","src":"7889:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7862:6:54"},"nodeType":"YulFunctionCall","src":"7862:50:54"},"nodeType":"YulExpressionStatement","src":"7862:50:54"}]},"name":"abi_encode_tuple_t_bytes32_t_uint256_t_bool__to_t_bytes32_t_uint256_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7693:9:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7704:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7712:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7720:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7731:4:54","type":""}],"src":"7589:329:54"},{"body":{"nodeType":"YulBlock","src":"7964:360:54","statements":[{"nodeType":"YulAssignment","src":"7974:19:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7990:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7984:5:54"},"nodeType":"YulFunctionCall","src":"7984:9:54"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7974:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"8002:34:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8024:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"8032:3:54","type":"","value":"544"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8020:3:54"},"nodeType":"YulFunctionCall","src":"8020:16:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"8006:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"8119:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8140:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8143:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8133:6:54"},"nodeType":"YulFunctionCall","src":"8133:88:54"},"nodeType":"YulExpressionStatement","src":"8133:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8241:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8244:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8234:6:54"},"nodeType":"YulFunctionCall","src":"8234:15:54"},"nodeType":"YulExpressionStatement","src":"8234:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8269:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8272:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8262:6:54"},"nodeType":"YulFunctionCall","src":"8262:15:54"},"nodeType":"YulExpressionStatement","src":"8262:15:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8054:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"8066:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8051:2:54"},"nodeType":"YulFunctionCall","src":"8051:34:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8090:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"8102:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8087:2:54"},"nodeType":"YulFunctionCall","src":"8087:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8048:2:54"},"nodeType":"YulFunctionCall","src":"8048:62:54"},"nodeType":"YulIf","src":"8045:242:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8303:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8307:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8296:6:54"},"nodeType":"YulFunctionCall","src":"8296:22:54"},"nodeType":"YulExpressionStatement","src":"8296:22:54"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7953:6:54","type":""}],"src":"7923:401:54"},{"body":{"nodeType":"YulBlock","src":"8432:1455:54","statements":[{"body":{"nodeType":"YulBlock","src":"8479:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8488:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8491:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8481:6:54"},"nodeType":"YulFunctionCall","src":"8481:12:54"},"nodeType":"YulExpressionStatement","src":"8481:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8453:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"8462:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8449:3:54"},"nodeType":"YulFunctionCall","src":"8449:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"8474:3:54","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8445:3:54"},"nodeType":"YulFunctionCall","src":"8445:33:54"},"nodeType":"YulIf","src":"8442:53:54"},{"nodeType":"YulVariableDeclaration","src":"8504:30:54","value":{"arguments":[],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8517:15:54"},"nodeType":"YulFunctionCall","src":"8517:17:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8508:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8550:5:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8576:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8557:18:54"},"nodeType":"YulFunctionCall","src":"8557:29:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8543:6:54"},"nodeType":"YulFunctionCall","src":"8543:44:54"},"nodeType":"YulExpressionStatement","src":"8543:44:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8607:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8614:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8603:3:54"},"nodeType":"YulFunctionCall","src":"8603:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8642:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8653:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8638:3:54"},"nodeType":"YulFunctionCall","src":"8638:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8619:18:54"},"nodeType":"YulFunctionCall","src":"8619:38:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8596:6:54"},"nodeType":"YulFunctionCall","src":"8596:62:54"},"nodeType":"YulExpressionStatement","src":"8596:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8678:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8685:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8674:3:54"},"nodeType":"YulFunctionCall","src":"8674:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8707:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8718:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8703:3:54"},"nodeType":"YulFunctionCall","src":"8703:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8690:12:54"},"nodeType":"YulFunctionCall","src":"8690:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8667:6:54"},"nodeType":"YulFunctionCall","src":"8667:56:54"},"nodeType":"YulExpressionStatement","src":"8667:56:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8743:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8750:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8739:3:54"},"nodeType":"YulFunctionCall","src":"8739:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8778:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8789:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8774:3:54"},"nodeType":"YulFunctionCall","src":"8774:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8755:18:54"},"nodeType":"YulFunctionCall","src":"8755:38:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8732:6:54"},"nodeType":"YulFunctionCall","src":"8732:62:54"},"nodeType":"YulExpressionStatement","src":"8732:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8814:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8821:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8810:3:54"},"nodeType":"YulFunctionCall","src":"8810:15:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8850:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8861:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8846:3:54"},"nodeType":"YulFunctionCall","src":"8846:19:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8827:18:54"},"nodeType":"YulFunctionCall","src":"8827:39:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8803:6:54"},"nodeType":"YulFunctionCall","src":"8803:64:54"},"nodeType":"YulExpressionStatement","src":"8803:64:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8887:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8894:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8883:3:54"},"nodeType":"YulFunctionCall","src":"8883:15:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8923:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8934:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8919:3:54"},"nodeType":"YulFunctionCall","src":"8919:19:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8900:18:54"},"nodeType":"YulFunctionCall","src":"8900:39:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8876:6:54"},"nodeType":"YulFunctionCall","src":"8876:64:54"},"nodeType":"YulExpressionStatement","src":"8876:64:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8960:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"8967:3:54","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8956:3:54"},"nodeType":"YulFunctionCall","src":"8956:15:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8990:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9001:3:54","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8986:3:54"},"nodeType":"YulFunctionCall","src":"8986:19:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8973:12:54"},"nodeType":"YulFunctionCall","src":"8973:33:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8949:6:54"},"nodeType":"YulFunctionCall","src":"8949:58:54"},"nodeType":"YulExpressionStatement","src":"8949:58:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9027:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"9034:3:54","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9023:3:54"},"nodeType":"YulFunctionCall","src":"9023:15:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9057:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9068:3:54","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9053:3:54"},"nodeType":"YulFunctionCall","src":"9053:19:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9040:12:54"},"nodeType":"YulFunctionCall","src":"9040:33:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9016:6:54"},"nodeType":"YulFunctionCall","src":"9016:58:54"},"nodeType":"YulExpressionStatement","src":"9016:58:54"},{"nodeType":"YulVariableDeclaration","src":"9083:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9093:3:54","type":"","value":"256"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9087:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9116:5:54"},{"name":"_1","nodeType":"YulIdentifier","src":"9123:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9112:3:54"},"nodeType":"YulFunctionCall","src":"9112:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9145:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"9156:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9141:3:54"},"nodeType":"YulFunctionCall","src":"9141:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9128:12:54"},"nodeType":"YulFunctionCall","src":"9128:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9105:6:54"},"nodeType":"YulFunctionCall","src":"9105:56:54"},"nodeType":"YulExpressionStatement","src":"9105:56:54"},{"nodeType":"YulVariableDeclaration","src":"9170:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9180:3:54","type":"","value":"288"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9174:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9203:5:54"},{"name":"_2","nodeType":"YulIdentifier","src":"9210:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9199:3:54"},"nodeType":"YulFunctionCall","src":"9199:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9232:9:54"},{"name":"_2","nodeType":"YulIdentifier","src":"9243:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9228:3:54"},"nodeType":"YulFunctionCall","src":"9228:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9215:12:54"},"nodeType":"YulFunctionCall","src":"9215:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9192:6:54"},"nodeType":"YulFunctionCall","src":"9192:56:54"},"nodeType":"YulExpressionStatement","src":"9192:56:54"},{"nodeType":"YulVariableDeclaration","src":"9257:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9267:3:54","type":"","value":"320"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9261:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9290:5:54"},{"name":"_3","nodeType":"YulIdentifier","src":"9297:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9286:3:54"},"nodeType":"YulFunctionCall","src":"9286:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9319:9:54"},{"name":"_3","nodeType":"YulIdentifier","src":"9330:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9315:3:54"},"nodeType":"YulFunctionCall","src":"9315:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9302:12:54"},"nodeType":"YulFunctionCall","src":"9302:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9279:6:54"},"nodeType":"YulFunctionCall","src":"9279:56:54"},"nodeType":"YulExpressionStatement","src":"9279:56:54"},{"nodeType":"YulVariableDeclaration","src":"9344:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9354:3:54","type":"","value":"352"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9348:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9377:5:54"},{"name":"_4","nodeType":"YulIdentifier","src":"9384:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9373:3:54"},"nodeType":"YulFunctionCall","src":"9373:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9406:9:54"},{"name":"_4","nodeType":"YulIdentifier","src":"9417:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9402:3:54"},"nodeType":"YulFunctionCall","src":"9402:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9389:12:54"},"nodeType":"YulFunctionCall","src":"9389:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9366:6:54"},"nodeType":"YulFunctionCall","src":"9366:56:54"},"nodeType":"YulExpressionStatement","src":"9366:56:54"},{"nodeType":"YulVariableDeclaration","src":"9431:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9441:3:54","type":"","value":"384"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"9435:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9464:5:54"},{"name":"_5","nodeType":"YulIdentifier","src":"9471:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9460:3:54"},"nodeType":"YulFunctionCall","src":"9460:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9493:9:54"},{"name":"_5","nodeType":"YulIdentifier","src":"9504:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9489:3:54"},"nodeType":"YulFunctionCall","src":"9489:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9476:12:54"},"nodeType":"YulFunctionCall","src":"9476:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9453:6:54"},"nodeType":"YulFunctionCall","src":"9453:56:54"},"nodeType":"YulExpressionStatement","src":"9453:56:54"},{"nodeType":"YulVariableDeclaration","src":"9518:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9528:3:54","type":"","value":"416"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"9522:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9551:5:54"},{"name":"_6","nodeType":"YulIdentifier","src":"9558:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9547:3:54"},"nodeType":"YulFunctionCall","src":"9547:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9580:9:54"},{"name":"_6","nodeType":"YulIdentifier","src":"9591:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9576:3:54"},"nodeType":"YulFunctionCall","src":"9576:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9563:12:54"},"nodeType":"YulFunctionCall","src":"9563:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9540:6:54"},"nodeType":"YulFunctionCall","src":"9540:56:54"},"nodeType":"YulExpressionStatement","src":"9540:56:54"},{"nodeType":"YulVariableDeclaration","src":"9605:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9615:3:54","type":"","value":"448"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"9609:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9638:5:54"},{"name":"_7","nodeType":"YulIdentifier","src":"9645:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9634:3:54"},"nodeType":"YulFunctionCall","src":"9634:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9667:9:54"},{"name":"_7","nodeType":"YulIdentifier","src":"9678:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9663:3:54"},"nodeType":"YulFunctionCall","src":"9663:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9650:12:54"},"nodeType":"YulFunctionCall","src":"9650:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9627:6:54"},"nodeType":"YulFunctionCall","src":"9627:56:54"},"nodeType":"YulExpressionStatement","src":"9627:56:54"},{"nodeType":"YulVariableDeclaration","src":"9692:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9702:3:54","type":"","value":"480"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"9696:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9725:5:54"},{"name":"_8","nodeType":"YulIdentifier","src":"9732:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9721:3:54"},"nodeType":"YulFunctionCall","src":"9721:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9754:9:54"},{"name":"_8","nodeType":"YulIdentifier","src":"9765:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9750:3:54"},"nodeType":"YulFunctionCall","src":"9750:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9737:12:54"},"nodeType":"YulFunctionCall","src":"9737:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9714:6:54"},"nodeType":"YulFunctionCall","src":"9714:56:54"},"nodeType":"YulExpressionStatement","src":"9714:56:54"},{"nodeType":"YulVariableDeclaration","src":"9779:13:54","value":{"kind":"number","nodeType":"YulLiteral","src":"9789:3:54","type":"","value":"512"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"9783:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9812:5:54"},{"name":"_9","nodeType":"YulIdentifier","src":"9819:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9808:3:54"},"nodeType":"YulFunctionCall","src":"9808:14:54"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9841:9:54"},{"name":"_9","nodeType":"YulIdentifier","src":"9852:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9837:3:54"},"nodeType":"YulFunctionCall","src":"9837:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9824:12:54"},"nodeType":"YulFunctionCall","src":"9824:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9801:6:54"},"nodeType":"YulFunctionCall","src":"9801:56:54"},"nodeType":"YulExpressionStatement","src":"9801:56:54"},{"nodeType":"YulAssignment","src":"9866:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"9876:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9866:6:54"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$5366_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8398:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8409:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8421:6:54","type":""}],"src":"8329:1558:54"},{"body":{"nodeType":"YulBlock","src":"9924:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9941:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9944:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9934:6:54"},"nodeType":"YulFunctionCall","src":"9934:88:54"},"nodeType":"YulExpressionStatement","src":"9934:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10038:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10041:4:54","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10031:6:54"},"nodeType":"YulFunctionCall","src":"10031:15:54"},"nodeType":"YulExpressionStatement","src":"10031:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10062:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10065:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10055:6:54"},"nodeType":"YulFunctionCall","src":"10055:15:54"},"nodeType":"YulExpressionStatement","src":"10055:15:54"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"9892:184:54"},{"body":{"nodeType":"YulBlock","src":"10133:176:54","statements":[{"body":{"nodeType":"YulBlock","src":"10252:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10254:16:54"},"nodeType":"YulFunctionCall","src":"10254:18:54"},"nodeType":"YulExpressionStatement","src":"10254:18:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10164:1:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10157:6:54"},"nodeType":"YulFunctionCall","src":"10157:9:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10150:6:54"},"nodeType":"YulFunctionCall","src":"10150:17:54"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10172:1:54"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10179:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"x","nodeType":"YulIdentifier","src":"10247:1:54"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10175:3:54"},"nodeType":"YulFunctionCall","src":"10175:74:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10169:2:54"},"nodeType":"YulFunctionCall","src":"10169:81:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10146:3:54"},"nodeType":"YulFunctionCall","src":"10146:105:54"},"nodeType":"YulIf","src":"10143:131:54"},{"nodeType":"YulAssignment","src":"10283:20:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10298:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10301:1:54"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10294:3:54"},"nodeType":"YulFunctionCall","src":"10294:9:54"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"10283:7:54"}]}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10112:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10115:1:54","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"10121:7:54","type":""}],"src":"10081:228:54"},{"body":{"nodeType":"YulBlock","src":"10362:80:54","statements":[{"body":{"nodeType":"YulBlock","src":"10389:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10391:16:54"},"nodeType":"YulFunctionCall","src":"10391:18:54"},"nodeType":"YulExpressionStatement","src":"10391:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10378:1:54"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10385:1:54"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10381:3:54"},"nodeType":"YulFunctionCall","src":"10381:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10375:2:54"},"nodeType":"YulFunctionCall","src":"10375:13:54"},"nodeType":"YulIf","src":"10372:39:54"},{"nodeType":"YulAssignment","src":"10420:16:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10431:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10434:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10427:3:54"},"nodeType":"YulFunctionCall","src":"10427:9:54"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"10420:3:54"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10345:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10348:1:54","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"10354:3:54","type":""}],"src":"10314:128:54"},{"body":{"nodeType":"YulBlock","src":"10479:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10496:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10499:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10489:6:54"},"nodeType":"YulFunctionCall","src":"10489:88:54"},"nodeType":"YulExpressionStatement","src":"10489:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10593:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10596:4:54","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10586:6:54"},"nodeType":"YulFunctionCall","src":"10586:15:54"},"nodeType":"YulExpressionStatement","src":"10586:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10617:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10620:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10610:6:54"},"nodeType":"YulFunctionCall","src":"10610:15:54"},"nodeType":"YulExpressionStatement","src":"10610:15:54"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"10447:184:54"},{"body":{"nodeType":"YulBlock","src":"10682:228:54","statements":[{"body":{"nodeType":"YulBlock","src":"10713:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10734:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10737:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10727:6:54"},"nodeType":"YulFunctionCall","src":"10727:88:54"},"nodeType":"YulExpressionStatement","src":"10727:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10835:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10838:4:54","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10828:6:54"},"nodeType":"YulFunctionCall","src":"10828:15:54"},"nodeType":"YulExpressionStatement","src":"10828:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10863:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10866:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10856:6:54"},"nodeType":"YulFunctionCall","src":"10856:15:54"},"nodeType":"YulExpressionStatement","src":"10856:15:54"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10702:1:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10695:6:54"},"nodeType":"YulFunctionCall","src":"10695:9:54"},"nodeType":"YulIf","src":"10692:189:54"},{"nodeType":"YulAssignment","src":"10890:14:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10899:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10902:1:54"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10895:3:54"},"nodeType":"YulFunctionCall","src":"10895:9:54"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"10890:1:54"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10667:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10670:1:54","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"10676:1:54","type":""}],"src":"10636:274:54"},{"body":{"nodeType":"YulBlock","src":"10964:76:54","statements":[{"body":{"nodeType":"YulBlock","src":"10986:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10988:16:54"},"nodeType":"YulFunctionCall","src":"10988:18:54"},"nodeType":"YulExpressionStatement","src":"10988:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10980:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"10983:1:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10977:2:54"},"nodeType":"YulFunctionCall","src":"10977:8:54"},"nodeType":"YulIf","src":"10974:34:54"},{"nodeType":"YulAssignment","src":"11017:17:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11029:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"11032:1:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11025:3:54"},"nodeType":"YulFunctionCall","src":"11025:9:54"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"11017:4:54"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10946:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"10949:1:54","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"10955:4:54","type":""}],"src":"10915:125:54"},{"body":{"nodeType":"YulBlock","src":"11174:168:54","statements":[{"nodeType":"YulAssignment","src":"11184:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11196:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11207:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11192:3:54"},"nodeType":"YulFunctionCall","src":"11192:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11184:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11226:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"11237:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11219:6:54"},"nodeType":"YulFunctionCall","src":"11219:25:54"},"nodeType":"YulExpressionStatement","src":"11219:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11264:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11275:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11260:3:54"},"nodeType":"YulFunctionCall","src":"11260:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11284:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"11292:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11280:3:54"},"nodeType":"YulFunctionCall","src":"11280:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11253:6:54"},"nodeType":"YulFunctionCall","src":"11253:83:54"},"nodeType":"YulExpressionStatement","src":"11253:83:54"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11135:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11146:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11154:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11165:4:54","type":""}],"src":"11045:297:54"},{"body":{"nodeType":"YulBlock","src":"11484:168:54","statements":[{"nodeType":"YulAssignment","src":"11494:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11506:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11517:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11502:3:54"},"nodeType":"YulFunctionCall","src":"11502:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11494:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11536:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11551:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"11559:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11547:3:54"},"nodeType":"YulFunctionCall","src":"11547:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11529:6:54"},"nodeType":"YulFunctionCall","src":"11529:74:54"},"nodeType":"YulExpressionStatement","src":"11529:74:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11623:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11634:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11619:3:54"},"nodeType":"YulFunctionCall","src":"11619:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"11639:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11612:6:54"},"nodeType":"YulFunctionCall","src":"11612:34:54"},"nodeType":"YulExpressionStatement","src":"11612:34:54"}]},"name":"abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11445:9:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11456:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11464:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11475:4:54","type":""}],"src":"11347:305:54"},{"body":{"nodeType":"YulBlock","src":"11814:241:54","statements":[{"nodeType":"YulAssignment","src":"11824:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11836:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11847:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11832:3:54"},"nodeType":"YulFunctionCall","src":"11832:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11824:4:54"}]},{"nodeType":"YulVariableDeclaration","src":"11859:52:54","value":{"kind":"number","nodeType":"YulLiteral","src":"11869:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11863:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11927:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11942:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"11950:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11938:3:54"},"nodeType":"YulFunctionCall","src":"11938:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11920:6:54"},"nodeType":"YulFunctionCall","src":"11920:34:54"},"nodeType":"YulExpressionStatement","src":"11920:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11974:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"11985:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11970:3:54"},"nodeType":"YulFunctionCall","src":"11970:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11994:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"12002:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11990:3:54"},"nodeType":"YulFunctionCall","src":"11990:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11963:6:54"},"nodeType":"YulFunctionCall","src":"11963:43:54"},"nodeType":"YulExpressionStatement","src":"11963:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12026:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12037:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12022:3:54"},"nodeType":"YulFunctionCall","src":"12022:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"12042:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12015:6:54"},"nodeType":"YulFunctionCall","src":"12015:34:54"},"nodeType":"YulExpressionStatement","src":"12015:34:54"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11767:9:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11778:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11786:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11794:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11805:4:54","type":""}],"src":"11657:398:54"},{"body":{"nodeType":"YulBlock","src":"12141:103:54","statements":[{"body":{"nodeType":"YulBlock","src":"12187:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12196:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12199:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12189:6:54"},"nodeType":"YulFunctionCall","src":"12189:12:54"},"nodeType":"YulExpressionStatement","src":"12189:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12162:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"12171:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12158:3:54"},"nodeType":"YulFunctionCall","src":"12158:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"12183:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12154:3:54"},"nodeType":"YulFunctionCall","src":"12154:32:54"},"nodeType":"YulIf","src":"12151:52:54"},{"nodeType":"YulAssignment","src":"12212:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12228:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12222:5:54"},"nodeType":"YulFunctionCall","src":"12222:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12212:6:54"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12107:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12118:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12130:6:54","type":""}],"src":"12060:184:54"},{"body":{"nodeType":"YulBlock","src":"12404:236:54","statements":[{"nodeType":"YulAssignment","src":"12414:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12426:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12437:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12422:3:54"},"nodeType":"YulFunctionCall","src":"12422:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12414:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12456:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"12467:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12449:6:54"},"nodeType":"YulFunctionCall","src":"12449:25:54"},"nodeType":"YulExpressionStatement","src":"12449:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12494:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12505:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12490:3:54"},"nodeType":"YulFunctionCall","src":"12490:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12514:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"12522:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12510:3:54"},"nodeType":"YulFunctionCall","src":"12510:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12483:6:54"},"nodeType":"YulFunctionCall","src":"12483:83:54"},"nodeType":"YulExpressionStatement","src":"12483:83:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12586:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12597:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12582:3:54"},"nodeType":"YulFunctionCall","src":"12582:18:54"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12606:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"12614:18:54","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12602:3:54"},"nodeType":"YulFunctionCall","src":"12602:31:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12575:6:54"},"nodeType":"YulFunctionCall","src":"12575:59:54"},"nodeType":"YulExpressionStatement","src":"12575:59:54"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint64__to_t_uint256_t_address_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12357:9:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12368:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12376:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12384:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12395:4:54","type":""}],"src":"12249:391:54"},{"body":{"nodeType":"YulBlock","src":"12858:299:54","statements":[{"nodeType":"YulAssignment","src":"12868:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12880:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12891:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12876:3:54"},"nodeType":"YulFunctionCall","src":"12876:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12868:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12911:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"12922:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12904:6:54"},"nodeType":"YulFunctionCall","src":"12904:25:54"},"nodeType":"YulExpressionStatement","src":"12904:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12949:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"12960:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12945:3:54"},"nodeType":"YulFunctionCall","src":"12945:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"12965:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12938:6:54"},"nodeType":"YulFunctionCall","src":"12938:34:54"},"nodeType":"YulExpressionStatement","src":"12938:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12992:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"13003:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12988:3:54"},"nodeType":"YulFunctionCall","src":"12988:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"13008:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12981:6:54"},"nodeType":"YulFunctionCall","src":"12981:34:54"},"nodeType":"YulExpressionStatement","src":"12981:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13035:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"13046:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13031:3:54"},"nodeType":"YulFunctionCall","src":"13031:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"13051:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13024:6:54"},"nodeType":"YulFunctionCall","src":"13024:34:54"},"nodeType":"YulExpressionStatement","src":"13024:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13078:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"13089:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13074:3:54"},"nodeType":"YulFunctionCall","src":"13074:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"13099:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"13107:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13095:3:54"},"nodeType":"YulFunctionCall","src":"13095:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13067:6:54"},"nodeType":"YulFunctionCall","src":"13067:84:54"},"nodeType":"YulExpressionStatement","src":"13067:84:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12795:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"12806:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12814:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12822:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12830:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12838:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12849:4:54","type":""}],"src":"12645:512:54"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_array$_t_struct$_Order_$5372_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__to_t_bool_t_bool_t_bool_t_bool_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        mstore(headStart, iszero(iszero(value0)))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), value7)\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_array$_t_struct$_OrderComponents_$5331_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, mul(length, 0x0240)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_struct_OrderParameters_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 544) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 544) { revert(0, 0) }\n        value0 := abi_decode_struct_OrderParameters_calldata(headStart, dataEnd)\n    }\n    function abi_decode_struct_OrderComponents_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 576) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_OrderComponents_$5331_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 576) { revert(0, 0) }\n        value0 := abi_decode_struct_OrderComponents_calldata(headStart, dataEnd)\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_decode_tuple_t_struct$_Order_$5372_calldata_ptrt_bytes32(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_struct_OrderComponents_calldata(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_struct$_OrderParameters_$5366_calldata_ptrt_bytes32t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 608) { revert(0, 0) }\n        value0 := abi_decode_struct_OrderParameters_calldata(headStart, dataEnd)\n        value1 := calldataload(add(headStart, 544))\n        value2 := calldataload(add(headStart, 576))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let length := mload(value0)\n        mstore(add(headStart, 96), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(headStart, i), 128), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 128), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 128)\n        mstore(add(headStart, 0x20), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_struct$_Order_$5372_calldata_ptr(base_ref, ptr_to_tail) -> addr\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256_t_bool__to_t_bytes32_t_uint256_t_bool__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), iszero(iszero(value2)))\n    }\n    function allocate_memory() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 544)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x41)\n            revert(0, 0x24)\n        }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_tuple_t_struct$_OrderParameters_$5366_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 544) { revert(0, 0) }\n        let value := allocate_memory()\n        mstore(value, abi_decode_address(headStart))\n        mstore(add(value, 32), abi_decode_address(add(headStart, 32)))\n        mstore(add(value, 64), calldataload(add(headStart, 64)))\n        mstore(add(value, 96), abi_decode_address(add(headStart, 96)))\n        mstore(add(value, 128), abi_decode_address(add(headStart, 128)))\n        mstore(add(value, 160), abi_decode_address(add(headStart, 160)))\n        mstore(add(value, 192), calldataload(add(headStart, 192)))\n        mstore(add(value, 224), calldataload(add(headStart, 224)))\n        let _1 := 256\n        mstore(add(value, _1), calldataload(add(headStart, _1)))\n        let _2 := 288\n        mstore(add(value, _2), calldataload(add(headStart, _2)))\n        let _3 := 320\n        mstore(add(value, _3), calldataload(add(headStart, _3)))\n        let _4 := 352\n        mstore(add(value, _4), calldataload(add(headStart, _4)))\n        let _5 := 384\n        mstore(add(value, _5), calldataload(add(headStart, _5)))\n        let _6 := 416\n        mstore(add(value, _6), calldataload(add(headStart, _6)))\n        let _7 := 448\n        mstore(add(value, _7), calldataload(add(headStart, _7)))\n        let _8 := 480\n        mstore(add(value, _8), calldataload(add(headStart, _8)))\n        let _9 := 512\n        mstore(add(value, _9), calldataload(add(headStart, _9)))\n        value0 := value\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\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        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_uint256_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_uint256_t_address_t_uint64__to_t_uint256_t_address_t_uint64__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4600":[{"length":32,"start":7488}],"4602":[{"length":32,"start":7528}],"4604":[{"length":32,"start":7450}],"4606":[{"length":32,"start":1309},{"length":32,"start":1991}],"4608":[{"length":32,"start":7404}],"4610":[{"length":32,"start":7612}],"4613":[{"length":32,"start":3830},{"length":32,"start":8352}],"4615":[{"length":32,"start":8418}],"7790":[{"length":32,"start":622},{"length":32,"start":8230},{"length":32,"start":9994},{"length":32,"start":10128},{"length":32,"start":10712}]},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c8063b86ae9e111610074578063f07ec3731161004e578063f07ec37314610218578063f47b774014610238578063ffc5d97a1461025c57600080fd5b8063b86ae9e1146101d2578063be92d18e146101f2578063d9e534111461020557600080fd5b80635b34b966116100a55780635b34b9661461016f5780639432cc1d14610192578063a3210e7c146101b257600080fd5b806322378003146100c157806346423aa7146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004612c46565b6102b5565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610116610111366004612cbb565b6102c8565b604080519815158952961515602089015294151595870195909552911515606086015273ffffffffffffffffffffffffffffffffffffffff16608085015260a084015260c083019190915260e0820152610100016100ed565b34801561017b57600080fd5b5061018461035b565b6040519081526020016100ed565b34801561019e57600080fd5b506100e16101ad366004612cd4565b61036a565b3480156101be57600080fd5b506100e16101cd366004612d51565b610376565b3480156101de57600080fd5b506101846101ed366004612d81565b610387565b6100e1610200366004612d9e565b610556565b6100e1610213366004612de3565b610562565b34801561022457600080fd5b50610184610233366004612e43565b610577565b34801561024457600080fd5b5061024d6105a2565b6040516100ed93929190612e5e565b34801561026857600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b60006102c183836105ba565b9392505050565b600080600080600080600080610340896000908152600260208190526040909120805460018201549282015460039092015460ff8083169561010084048216956201000085048316956301000000860490931694640100000000900473ffffffffffffffffffffffffffffffffffffffff1693909291565b97509750975097509750975097509750919395975091939597565b600061036561090a565b905090565b60006102c18383610967565b600061038182610b27565b92915050565b60408051610220810190915260009061038190806103a86020860186612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260408086013560208301520161040a6080860160608701612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260200161043560a0860160808701612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260200161046060c0860160a08701612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460c0013581526020018460e00135815260200184610100013581526020018461012001358152602001846101400135815260200184610160013581526020018461018001358152602001846101a001358152602001846101c001358152602001846101e0013581526020018461020001358152508361022001357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60006102c18383610c2c565b600061056f848484610dad565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610381565b60606000806105af610ed5565b925092509250909192565b60006105c4610f50565b6000808084815b818110156108fc57368888838181106105e6576105e6612ef7565b90506020028101906105f89190612f26565b9050806106086020820182612e43565b94506108006040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018360200160208101906106489190612e43565b73ffffffffffffffffffffffffffffffffffffffff16815260408085013560208301520161067c6080850160608601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106a760a0850160808601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106d260c0850160a08601612e43565b73ffffffffffffffffffffffffffffffffffffffff1681526020018360c0013581526020018360e00135815260200183610100013581526020018361012001358152602001836101400135815260200183610160013581526020018361018001358152602001836101a001358152602001836101c001358152602001836101e0013581526020018361020001358152506107a08360000160208101906107789190612e43565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60008181526002602052604090209750955061081f8688600180610f8e565b50865460ff166108f257610876858761083c610220860186612f64565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d092505050565b86547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117875560405173ffffffffffffffffffffffffffffffffffffffff8616907f09e126c208c7c6b8de91fb519ff46ef1f6eb471f6376862ca4de42ea000026d6906108e99089815260200190565b60405180910390a25b50506001016105cb565b506001979650505050505050565b6000610914610f50565b503360008181526001602081815260409283902080549092019182905591518181529092917f721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f910160405180910390a290565b6000610971610f50565b60008083815b81811015610b1a573687878381811061099257610992612ef7565b610240029190910191506109ab90506020820182612e43565b93503373ffffffffffffffffffffffffffffffffffffffff8516146109fc576040517f80ec737400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a3c6040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e43565b6000818152600260205260409020600181015490975090915015610a94576040517f9633f278000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010017865560405173ffffffffffffffffffffffffffffffffffffffff8616907fa6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba5275390610b089084815260200190565b60405180910390a25050600101610977565b5060019695505050505050565b600080600080610b3885600161114d565b92509250925080610b4e57506000949350505050565b610b7f6002610b636040880160208901612e43565b30610b7160208a018a612e43565b60408a013560016000611299565b6000610b916080870160608801612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610bbb57610bb68583611388565b610bc5565b610bc58583611425565b610bd26020860186612e43565b73ffffffffffffffffffffffffffffffffffffffff167fe68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada84604051610c1991815260200190565b60405180910390a2506001949350505050565b600080600080610c3d8660016114dd565b92509250925081610c545760009350505050610381565b856000610c648260018084611654565b90506000610c786080840160608501612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610cd757610cc86002610ca86040850160208601612e43565b610cb56020860186612e43565b3086604001356001886102000135611299565b610cd28282611843565b610d3a565b604080516020808252818301909252600091602082018180368337019050509050610d2c610d0b6040850160208601612e43565b610d186020860186612e43565b3086604001356001886102000135876118fc565b610d3883838a84611962565b505b610d476020830183612e43565b73ffffffffffffffffffffffffffffffffffffffff167f8fb2c26b66af59de39b1b2f4e1fba157f4408a9b52495599333e37e3191b08698685604051610d97929190918252602082015260400190565b60405180910390a2506001979650505050505050565b6000806000806000610dc188876001611a83565b929650909450909250905080610dde5760009450505050506102c1565b506000610dee8887600085611654565b90506000610e0260808a0160608b01612e43565b73ffffffffffffffffffffffffffffffffffffffff1603610e2c57610e278882611843565b610e5b565b604080516020808252818301909252600091602082018180368337019050509050610e5989838a84611962565b505b8115610e8657610e866002610e7660408b0160208c01612e43565b308660408d013560016000611299565b60408051858152602081018890528315158183015290517f6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d389181900360600190a1506001979650505050505050565b6060600080610ee2611ce8565b6040805160038082528183019092529193507f0000000000000000000000000000000000000000000000000000000000000000925060208201818036833750507f312e3100000000000000000000000000000000000000000000000000000000006020830152509391925090565b600160005414610f8c576040517f7fa8a98700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8254600090610100900460ff1615610fe3578115610fdb576040517f1a51557400000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b50600061056f565b835462010000900460ff161561102e578115610fdb576040517f836f8ef900000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b821561107e57600384015415611079578115610fdb576040517f9633f27800000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b6110c5565b83600301546000036110c5578115610fdb576040517fe567c93e00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8416036110f257505050565b600061113a6110ff611ce8565b7f1901000000000000000000000000000000000000000000000000000000000000600090815260029190915260228581526042822091905290565b9050611147848284611dde565b50505050565b6000808061117361116336879003870187613021565b6107a06107786020890189612e43565b600081815260026020526040902080549194509060ff166111d35784156111c9576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b5060009050611292565b806003015492506111e78482600088610f8e565b6111f5575060009050611292565b4261120561010088013585613144565b82600101546112149190613181565b11156112555784156111c9576040517f031ea4cb00000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b6112628160020154611ff7565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1663010100001790555060015b9250925092565b801561130e57600060405190507f4ce34aa200000000000000000000000000000000000000000000000000000000815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e4820152611308828261010461209a565b5061137f565b600287600381111561132257611322613199565b036113725781600114611361576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136d86868686612236565b61137f565b61137f8686868686612345565b50505050505050565b6113bc6113986020840184612e43565b826113ad6101208601356101808701356131c8565b6113b79190613144565b612477565b6000816113d36101208501356101408601356131c8565b6113dd9190613144565b90506127106113f161016085013583613144565b6113fb91906131c8565b6114059082613203565b905061142061141a60c0850160a08601612e43565b82612477565b505050565b6114696114386080840160608501612e43565b6114456020850185612e43565b8361145a6101208701356101808801356131c8565b6114649190613144565b6124ec565b6000816114806101208501356101408601356131c8565b61148a9190613144565b905061271061149e61016085013583613144565b6114a891906131c8565b6114b29082613203565b90506114206114c76080850160608601612e43565b6114d760c0860160a08701612e43565b836124ec565b60008080846114f560c082013560e083013587612654565b611509575060009250829150819050611292565b6002816101200135101561155f57841561154f576040517f0a199cb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009250829150819050611292565b61158161157136839003830183613021565b6107a06107786020850185612e43565b600081815260026020526040902090945061159f8582600189610f8e565b6115b25750600092508291506112929050565b805460ff166115da576115da6115cb6020840184612e43565b8661083c6102208b018b612f64565b6115fe336115ee6040850160208601612e43565b84604001358561010001356126b3565b815460017fffffffffffffffff000000000000000000000000000000000000000000ff00009091163364010000000002178117835542818401556002830182905560039092018290559497909650939450505050565b61167f6040518060800160405280600081526020016000815260200160008152602001600081525090565b60008061169186610120890135613203565b6101c088013560408501529050831561177d576116b86101208801356101808901356131c8565b6116c29082613144565b6116d190610180890135613203565b91506116e76101208801356101408901356131c8565b6116f19082613144565b61170090610140890135613203565b835260408301518290826127106101608b01356117276101208d01356101408e01356131c8565b6117319190613144565b61173b91906131c8565b6117459190613144565b611754906101408b0135613203565b61175e9190613203565b6117689190613203565b60208401526101808701356060840152611839565b6117916101208801356101808901356131c8565b61179b9087613144565b91506117b16101208801356101408901356131c8565b6117bb9087613144565b80845260408401518391612710906117d9906101608c013590613144565b6117e391906131c8565b6117ed9190613203565b6117f79190613203565b6020840152841561183957866101a00135836000018181516118199190613181565b9052506040830180516101a08901359190611835908390613181565b9052505b5050949350505050565b80513490811015611880576040517f1a783b8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189a6118906020850185612e43565b8360200151612477565b6118b76118ad60c0850160a08601612e43565b8360400151612477565b6060820151156118de576118de6118d460a0850160808601612e43565b8360600151612477565b81516118ea9082613203565b90508015611420576114203382612477565b6119068183612860565b816119515782600114611945576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136d87878787612236565b61137f828260028a8a8a8a8a61287f565b3360006119756080870160608801612e43565b9050611998818361198c60c08a0160a08b01612e43565b88604001518888612918565b6060850151156119c3576119c381836119b760a08a0160808b01612e43565b88606001518888612918565b606085015160408601518651600092916119dc91613203565b6119e69190613203565b905085602001518110611a3f57611a118284611a0560208b018b612e43565b89602001518989612918565b6020860151611a209082613203565b90508015611a3657611a36828430848989612918565b61136d84612953565b611a598284611a5160208b018b612e43565b848989612918565b611a6284612953565b61137f82611a7360208a018a612e43565b8389602001516114649190613203565b6000808080611aaa611a9a36899003890189613021565b6107a061077860208b018b612e43565b600081815260026020526040902080549195509060ff16611b10578515611b00576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b5060009250829150819050611cdf565b611b1d8582600089610f8e565b611b31575060009250829150819050611cdf565b876101200135878260030154611b479190613181565b1180611b535750600187105b15611b93578515611b00576040517fc8910ec000000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b428861010001358260030154611ba99190613144565b8260010154611bb89190613181565b1015611bf9578515611b00576040517f2e775cae00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b86816003016000828254611c0d9190613181565b909155505060038101546101208901359003611c655780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000178155600281015460019250611c6090611ff7565b611cb9565b805460028201546003830154611cb992640100000000900473ffffffffffffffffffffffffffffffffffffffff169190611ca5906101008d013590613144565b8460010154611cb49190613181565b61297c565b54640100000000900473ffffffffffffffffffffffffffffffffffffffff169250600191505b93509350935093565b60007f00000000000000000000000000000000000000000000000000000000000000004614611db957610365604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000526000825160208403805182604103600060018211611e65576040880151606089015160001a96508215611e4357601b8160ff1c0196507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811660408a01525b8689528985526020600060808760015afa508385528589526040890152506000515b8914891515169550859050611fbc57604082526044860380516040880380517f1626ba7e0000000000000000000000000000000000000000000000000000000084528a82526020600060648901868f5afa98508815611fb2577f1626ba7e0000000000000000000000000000000000000000000000000000000060005114611fb2578b3b15611f18577f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6001876041031115611f4e577f8baa579f0000000000000000000000000000000000000000000000000000000060005260046000fd5b640101000000881a611f88577f1f003d0a000000000000000000000000000000000000000000000000000000006000528760045260246000fd5b7f815e1d640000000000000000000000000000000000000000000000000000000060005260046000fd5b8486529190925290525b505050508061114757611fcd612a30565b7f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561207f57600080fd5b505af1158015612093573d6000803e3d6000fd5b5050505050565b604080517f000000000000000000000000000000000000000000000000000000000000000074ff000000000000000000000000000000000000000017600090815260208690527f000000000000000000000000000000000000000000000000000000000000000083526055600b209190925273ffffffffffffffffffffffffffffffffffffffff169050600080600080526020600085876000875af191506000519050816121945761214a612a30565b6040517fd13d53d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610a8b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f4ce34aa2000000000000000000000000000000000000000000000000000000001461222e576040517f1cf99b260000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff84166024820152604401610a8b565b505050505050565b833b61226a577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af180612336573d156122f7576020601f3d01046020830481600302818311156122de57818303600302610200838002858002030401015b5a6020820110156122f3573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b612379577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af18061245b573d1561241d576020601f3d010460208604816003028183111561240457818303600302610200838002858002030401015b5a602082011015612419573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b61248081612a78565b600080600080600085875af19050806114205761249b612a30565b6040517f470c7c1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610a8b565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528260045281602452602060006044600080885af1803d15601f3d116001600051141617163d151581166126455780863b151516612645578061261757816125dd573d1561259e576020601f3d010460208404816003028183111561258557818303600302610200838002858002030401015b5a60208201101561259a573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452306024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528560045230602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528560045260246000fd5b50506040525050600060605250565b6000428411806126645750428311155b156126a95781156126a1576040517f6f7eac2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006102c1565b5060019392505050565b6040517fc6c3bbe600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301526044820184905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063c6c3bbe6906064016020604051808303816000875af1158015612753573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612777919061321a565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663e030565e82886127c14288613181565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff909116602483015267ffffffffffffffff166044820152606401600060405180830381600087803b15801561283e57600080fd5b505af1158015612852573d6000803e3d6000fd5b509298975050505050505050565b600061286d836020015190565b90508181146114205761142083612953565b600060208851036128d35750604080885260208089018a90527f4ce34aa2000000000000000000000000000000000000000000000000000000009189019190915260448801526001606488018190526128e2565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61292183612a78565b61292b8183612860565b816129415761293c86868686612ab5565b61222e565b61222e8282600189898960008a61287f565b604081511461295f5750565b600061296c826020015190565b90506129788183612c22565b5050565b6040517fe030565e0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff848116602483015267ffffffffffffffff831660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e030565e90606401600060405180830381600087803b158015612a1c57600080fd5b505af115801561137f573d6000803e3d6000fd5b3d15610f8c576020601f3d01046020604051048160030281831115612a6357818303600302610200838002858002030401015b5a602082011015611420573d6000803e3d6000fd5b80600003612ab2576040517f91b3e51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116612c125780873b151516612c125780612be45781612baa573d15612b6b576020601f3d0104602084048160030281831115612b5257818303600302610200838002858002030401015b5a602082011015612b67573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b6064810151604082019060c002604401612c3d84838361209a565b50506020905250565b60008060208385031215612c5957600080fd5b823567ffffffffffffffff80821115612c7157600080fd5b818501915085601f830112612c8557600080fd5b813581811115612c9457600080fd5b8660208260051b8501011115612ca957600080fd5b60209290920196919550909350505050565b600060208284031215612ccd57600080fd5b5035919050565b60008060208385031215612ce757600080fd5b823567ffffffffffffffff80821115612cff57600080fd5b818501915085601f830112612d1357600080fd5b813581811115612d2257600080fd5b86602061024083028501011115612ca957600080fd5b60006102208284031215612d4b57600080fd5b50919050565b60006102208284031215612d6457600080fd5b6102c18383612d38565b60006102408284031215612d4b57600080fd5b60006102408284031215612d9457600080fd5b6102c18383612d6e565b60008060408385031215612db157600080fd5b823567ffffffffffffffff811115612dc857600080fd5b612dd485828601612d6e565b95602094909401359450505050565b60008060006102608486031215612df957600080fd5b612e038585612d38565b956102208501359550610240909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612e3e57600080fd5b919050565b600060208284031215612e5557600080fd5b6102c182612e1a565b606081526000845180606084015260005b81811015612e8c5760208188018101516080868401015201612e6f565b81811115612e9e576000608083860101525b5060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1833603018112612f5a57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f9957600080fd5b83018035915067ffffffffffffffff821115612fb457600080fd5b602001915036819003821315612fc957600080fd5b9250929050565b604051610220810167ffffffffffffffff8111828210171561301b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610220828403121561303457600080fd5b61303c612fd0565b61304583612e1a565b815261305360208401612e1a565b60208201526040830135604082015261306e60608401612e1a565b606082015261307f60808401612e1a565b608082015261309060a08401612e1a565b60a082015260c0838101359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561317c5761317c613115565b500290565b6000821982111561319457613194613115565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000826131fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561321557613215613115565b500390565b60006020828403121561322c57600080fd5b505191905056fea2646970667358221220575964513e40dbfaa7b6b915f4bf502e6b092bd7cad7f2a61129ea3398f79abd64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB86AE9E1 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xF07EC373 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xF07EC373 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0xF47B7740 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xFFC5D97A EQ PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB86AE9E1 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xBE92D18E EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xD9E53411 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5B34B966 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x5B34B966 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x9432CC1D EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0xA3210E7C EQ PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x22378003 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x46423AA7 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x2C46 JUMP JUMPDEST PUSH2 0x2B5 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 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CBB JUMP JUMPDEST PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 ISZERO ISZERO DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE SWAP5 ISZERO ISZERO SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x60 DUP7 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x35B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x2CD4 JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x2D51 JUMP JUMPDEST PUSH2 0x376 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2D81 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9E JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DE3 JUMP JUMPDEST PUSH2 0x562 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E5E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x5BA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x340 DUP10 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP3 ADD SLOAD PUSH1 0x3 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP6 PUSH2 0x100 DUP5 DIV DUP3 AND SWAP6 PUSH3 0x10000 DUP6 DIV DUP4 AND SWAP6 PUSH4 0x1000000 DUP7 DIV SWAP1 SWAP4 AND SWAP5 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP1 SWAP3 SWAP2 JUMP JUMPDEST SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x365 PUSH2 0x90A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x381 DUP3 PUSH2 0xB27 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x220 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x381 SWAP1 DUP1 PUSH2 0x3A8 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x40A PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x460 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x140 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x180 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1A0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1C0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x1E0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x200 ADD CALLDATALOAD DUP2 MSTORE POP DUP4 PUSH2 0x220 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE PUSH2 0x220 SWAP1 SWAP4 ADD DUP1 MLOAD SWAP3 DUP2 MSTORE PUSH2 0x260 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1 DUP4 DUP4 PUSH2 0xC2C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F DUP5 DUP5 DUP5 PUSH2 0xDAD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x381 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x5AF PUSH2 0xED5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8FC JUMPI CALLDATASIZE DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI PUSH2 0x5E6 PUSH2 0x2EF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5F8 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x608 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E43 JUMP JUMPDEST SWAP5 POP PUSH2 0x800 PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x648 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x67C PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x140 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x180 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1A0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1C0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x1E0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0x200 ADD CALLDATALOAD DUP2 MSTORE POP PUSH2 0x7A0 DUP4 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x778 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE PUSH2 0x220 SWAP1 SWAP4 ADD DUP1 MLOAD SWAP3 DUP2 MSTORE PUSH2 0x260 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP8 POP SWAP6 POP PUSH2 0x81F DUP7 DUP9 PUSH1 0x1 DUP1 PUSH2 0xF8E JUMP JUMPDEST POP DUP7 SLOAD PUSH1 0xFF AND PUSH2 0x8F2 JUMPI PUSH2 0x876 DUP6 DUP8 PUSH2 0x83C PUSH2 0x220 DUP7 ADD DUP7 PUSH2 0x2F64 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x10D0 SWAP3 POP POP POP JUMP JUMPDEST DUP7 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR DUP8 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0x9E126C208C7C6B8DE91FB519FF46EF1F6EB471F6376862CA4DE42EA000026D6 SWAP1 PUSH2 0x8E9 SWAP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x5CB JUMP JUMPDEST POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x914 PUSH2 0xF50 JUMP JUMPDEST POP CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SWAP2 MLOAD DUP2 DUP2 MSTORE SWAP1 SWAP3 SWAP2 PUSH32 0x721C20121297512B72821B97F5326877EA8ECF4BB9948FEA5BFCB6453074D37F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x971 PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB1A JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x992 JUMPI PUSH2 0x992 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x240 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x9AB SWAP1 POP PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E43 JUMP JUMPDEST SWAP4 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x9FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x80EC737400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3C PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP8 POP SWAP1 SWAP2 POP ISZERO PUSH2 0xA94 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 AND PUSH2 0x100 OR DUP7 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0xA6EB7CDC219E1518CED964E9A34E61D68A94E4F1569DB3E84256BA981BA52753 SWAP1 PUSH2 0xB08 SWAP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 ADD PUSH2 0x977 JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB38 DUP6 PUSH1 0x1 PUSH2 0x114D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP1 PUSH2 0xB4E JUMPI POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB7F PUSH1 0x2 PUSH2 0xB63 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0x2E43 JUMP JUMPDEST ADDRESS PUSH2 0xB71 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB91 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBBB JUMPI PUSH2 0xBB6 DUP6 DUP4 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x1425 JUMP JUMPDEST PUSH2 0xBD2 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xE68E1577BA456C32A752DBE4FA63FBAA46841E7E54BC9667D021B9AF64A1CADA DUP5 PUSH1 0x40 MLOAD PUSH2 0xC19 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xC3D DUP7 PUSH1 0x1 PUSH2 0x14DD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH2 0xC54 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x381 JUMP JUMPDEST DUP6 PUSH1 0x0 PUSH2 0xC64 DUP3 PUSH1 0x1 DUP1 DUP5 PUSH2 0x1654 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC78 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCD7 JUMPI PUSH2 0xCC8 PUSH1 0x2 PUSH2 0xCA8 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0xCB5 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD PUSH2 0x1299 JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP3 PUSH2 0x1843 JUMP JUMPDEST PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xD2C PUSH2 0xD0B PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0xD18 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD DUP8 PUSH2 0x18FC JUMP JUMPDEST PUSH2 0xD38 DUP4 DUP4 DUP11 DUP5 PUSH2 0x1962 JUMP JUMPDEST POP JUMPDEST PUSH2 0xD47 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8FB2C26B66AF59DE39B1B2F4E1FBA157F4408A9B52495599333E37E3191B0869 DUP7 DUP6 PUSH1 0x40 MLOAD PUSH2 0xD97 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xDC1 DUP9 DUP8 PUSH1 0x1 PUSH2 0x1A83 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDDE JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xDEE DUP9 DUP8 PUSH1 0x0 DUP6 PUSH2 0x1654 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE02 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE2C JUMPI PUSH2 0xE27 DUP9 DUP3 PUSH2 0x1843 JUMP JUMPDEST PUSH2 0xE5B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0xE59 DUP10 DUP4 DUP11 DUP5 PUSH2 0x1962 JUMP JUMPDEST POP JUMPDEST DUP2 ISZERO PUSH2 0xE86 JUMPI PUSH2 0xE86 PUSH1 0x2 PUSH2 0xE76 PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x2E43 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH32 0x6CB64AA506CC92732FC83160C8EA61203B5A13A8CF92E5B5C7CCC4BA6BB41D38 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP PUSH1 0x1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0xEE2 PUSH2 0x1CE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP3 POP PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH32 0x312E310000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE POP SWAP4 SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x7FA8A98700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xFE3 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A51557400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x56F JUMP JUMPDEST DUP4 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x102E JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x836F8EF900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST DUP3 ISZERO PUSH2 0x107E JUMPI PUSH1 0x3 DUP5 ADD SLOAD ISZERO PUSH2 0x1079 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x10C5 JUMP JUMPDEST DUP4 PUSH1 0x3 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x10C5 JUMPI DUP2 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x40 MLOAD PUSH32 0xE567C93E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SUB PUSH2 0x10F2 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113A PUSH2 0x10FF PUSH2 0x1CE8 JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP6 DUP2 MSTORE PUSH1 0x42 DUP3 KECCAK256 SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1147 DUP5 DUP3 DUP5 PUSH2 0x1DDE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1173 PUSH2 0x1163 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP5 POP SWAP1 PUSH1 0xFF AND PUSH2 0x11D3 JUMPI DUP5 ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4C58FF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD SWAP3 POP PUSH2 0x11E7 DUP5 DUP3 PUSH1 0x0 DUP9 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x11F5 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST TIMESTAMP PUSH2 0x1205 PUSH2 0x100 DUP9 ADD CALLDATALOAD DUP6 PUSH2 0x3144 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1214 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST GT ISZERO PUSH2 0x1255 JUMPI DUP5 ISZERO PUSH2 0x11C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x31EA4CB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x1262 DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x1FF7 JUMP JUMPDEST DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF AND PUSH4 0x1010000 OR SWAP1 SSTORE POP PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x130E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE DUP8 PUSH1 0x44 DUP3 ADD MSTORE DUP7 PUSH1 0x64 DUP3 ADD MSTORE DUP6 PUSH1 0x84 DUP3 ADD MSTORE DUP5 PUSH1 0xA4 DUP3 ADD MSTORE DUP4 PUSH1 0xC4 DUP3 ADD MSTORE DUP3 PUSH1 0xE4 DUP3 ADD MSTORE PUSH2 0x1308 DUP3 DUP3 PUSH2 0x104 PUSH2 0x209A JUMP JUMPDEST POP PUSH2 0x137F JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1322 JUMPI PUSH2 0x1322 PUSH2 0x3199 JUMP JUMPDEST SUB PUSH2 0x1372 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x1361 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP7 DUP7 DUP7 DUP7 PUSH2 0x2236 JUMP JUMPDEST PUSH2 0x137F JUMP JUMPDEST PUSH2 0x137F DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2345 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13BC PUSH2 0x1398 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E43 JUMP JUMPDEST DUP3 PUSH2 0x13AD PUSH2 0x120 DUP7 ADD CALLDATALOAD PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x13B7 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x13D3 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x13DD SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x13F1 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x13FB SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1405 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP PUSH2 0x1420 PUSH2 0x141A PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP3 PUSH2 0x2477 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1469 PUSH2 0x1438 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x1445 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH2 0x145A PUSH2 0x120 DUP8 ADD CALLDATALOAD PUSH2 0x180 DUP9 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1464 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1480 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x148A SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x149E PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x14A8 SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x14B2 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP PUSH2 0x1420 PUSH2 0x14C7 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST PUSH2 0x14D7 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 PUSH2 0x14F5 PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD CALLDATALOAD DUP8 PUSH2 0x2654 JUMP JUMPDEST PUSH2 0x1509 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH2 0x120 ADD CALLDATALOAD LT ISZERO PUSH2 0x155F JUMPI DUP5 ISZERO PUSH2 0x154F JUMPI PUSH1 0x40 MLOAD PUSH32 0xA199CB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1292 JUMP JUMPDEST PUSH2 0x1581 PUSH2 0x1571 CALLDATASIZE DUP4 SWAP1 SUB DUP4 ADD DUP4 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x159F DUP6 DUP3 PUSH1 0x1 DUP10 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x15B2 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP PUSH2 0x1292 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x15DA JUMPI PUSH2 0x15DA PUSH2 0x15CB PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E43 JUMP JUMPDEST DUP7 PUSH2 0x83C PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x2F64 JUMP JUMPDEST PUSH2 0x15FE CALLER PUSH2 0x15EE PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP6 PUSH2 0x100 ADD CALLDATALOAD PUSH2 0x26B3 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FF0000 SWAP1 SWAP2 AND CALLER PUSH5 0x100000000 MUL OR DUP2 OR DUP4 SSTORE TIMESTAMP DUP2 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 SWAP1 SWAP3 ADD DUP3 SWAP1 SSTORE SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH2 0x167F PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1691 DUP7 PUSH2 0x120 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x1C0 DUP9 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP DUP4 ISZERO PUSH2 0x177D JUMPI PUSH2 0x16B8 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x16C2 SWAP1 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x16D1 SWAP1 PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST SWAP2 POP PUSH2 0x16E7 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x16F1 SWAP1 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x1700 SWAP1 PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP3 SWAP1 DUP3 PUSH2 0x2710 PUSH2 0x160 DUP12 ADD CALLDATALOAD PUSH2 0x1727 PUSH2 0x120 DUP14 ADD CALLDATALOAD PUSH2 0x140 DUP15 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1731 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x173B SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x1745 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x1754 SWAP1 PUSH2 0x140 DUP12 ADD CALLDATALOAD PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x175E SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x1768 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1839 JUMP JUMPDEST PUSH2 0x1791 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x179B SWAP1 DUP8 PUSH2 0x3144 JUMP JUMPDEST SWAP2 POP PUSH2 0x17B1 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x17BB SWAP1 DUP8 PUSH2 0x3144 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP4 SWAP2 PUSH2 0x2710 SWAP1 PUSH2 0x17D9 SWAP1 PUSH2 0x160 DUP13 ADD CALLDATALOAD SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH2 0x17E3 SWAP2 SWAP1 PUSH2 0x31C8 JUMP JUMPDEST PUSH2 0x17ED SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x17F7 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE DUP5 ISZERO PUSH2 0x1839 JUMPI DUP7 PUSH2 0x1A0 ADD CALLDATALOAD DUP4 PUSH1 0x0 ADD DUP2 DUP2 MLOAD PUSH2 0x1819 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH2 0x1A0 DUP10 ADD CALLDATALOAD SWAP2 SWAP1 PUSH2 0x1835 SWAP1 DUP4 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD CALLVALUE SWAP1 DUP2 LT ISZERO PUSH2 0x1880 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A783B8D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x189A PUSH2 0x1890 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x18B7 PUSH2 0x18AD PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD ISZERO PUSH2 0x18DE JUMPI PUSH2 0x18DE PUSH2 0x18D4 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2477 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x18EA SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1420 JUMPI PUSH2 0x1420 CALLER DUP3 PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x1906 DUP2 DUP4 PUSH2 0x2860 JUMP JUMPDEST DUP2 PUSH2 0x1951 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x1945 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP8 DUP8 DUP8 DUP8 PUSH2 0x2236 JUMP JUMPDEST PUSH2 0x137F DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x287F JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1975 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E43 JUMP JUMPDEST SWAP1 POP PUSH2 0x1998 DUP2 DUP4 PUSH2 0x198C PUSH1 0xC0 DUP11 ADD PUSH1 0xA0 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP9 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD ISZERO PUSH2 0x19C3 JUMPI PUSH2 0x19C3 DUP2 DUP4 PUSH2 0x19B7 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x2E43 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD DUP9 DUP9 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x19DC SWAP2 PUSH2 0x3203 JUMP JUMPDEST PUSH2 0x19E6 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x20 ADD MLOAD DUP2 LT PUSH2 0x1A3F JUMPI PUSH2 0x1A11 DUP3 DUP5 PUSH2 0x1A05 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD MLOAD DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x1A20 SWAP1 DUP3 PUSH2 0x3203 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A36 JUMPI PUSH2 0x1A36 DUP3 DUP5 ADDRESS DUP5 DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0x136D DUP5 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0x1A59 DUP3 DUP5 PUSH2 0x1A51 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST DUP5 DUP10 DUP10 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0x1A62 DUP5 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0x137F DUP3 PUSH2 0x1A73 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E43 JUMP JUMPDEST DUP4 DUP10 PUSH1 0x20 ADD MLOAD PUSH2 0x1464 SWAP2 SWAP1 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AAA PUSH2 0x1A9A CALLDATASIZE DUP10 SWAP1 SUB DUP10 ADD DUP10 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E43 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP2 SWAP6 POP SWAP1 PUSH1 0xFF AND PUSH2 0x1B10 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4C58FF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x1B1D DUP6 DUP3 PUSH1 0x0 DUP10 PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x1B31 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CDF JUMP JUMPDEST DUP8 PUSH2 0x120 ADD CALLDATALOAD DUP8 DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1B47 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST GT DUP1 PUSH2 0x1B53 JUMPI POP PUSH1 0x1 DUP8 LT JUMPDEST ISZERO PUSH2 0x1B93 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC8910EC000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST TIMESTAMP DUP9 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1BA9 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1BB8 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST LT ISZERO PUSH2 0x1BF9 JUMPI DUP6 ISZERO PUSH2 0x1B00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E775CAE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST DUP7 DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1C0D SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 SUB PUSH2 0x1C65 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF AND PUSH3 0x10000 OR DUP2 SSTORE PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 SWAP3 POP PUSH2 0x1C60 SWAP1 PUSH2 0x1FF7 JUMP JUMPDEST PUSH2 0x1CB9 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH2 0x1CB9 SWAP3 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x1CA5 SWAP1 PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP1 PUSH2 0x3144 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1CB4 SWAP2 SWAP1 PUSH2 0x3181 JUMP JUMPDEST PUSH2 0x297C JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH1 0x1 SWAP2 POP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x1DB9 JUMPI PUSH2 0x365 PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH1 0x20 DUP5 SUB DUP1 MLOAD DUP3 PUSH1 0x41 SUB PUSH1 0x0 PUSH1 0x1 DUP3 GT PUSH2 0x1E65 JUMPI PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x0 BYTE SWAP7 POP DUP3 ISZERO PUSH2 0x1E43 JUMPI PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD SWAP7 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x40 DUP11 ADD MSTORE JUMPDEST DUP7 DUP10 MSTORE DUP10 DUP6 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x80 DUP8 PUSH1 0x1 GAS STATICCALL POP DUP4 DUP6 MSTORE DUP6 DUP10 MSTORE PUSH1 0x40 DUP10 ADD MSTORE POP PUSH1 0x0 MLOAD JUMPDEST DUP10 EQ DUP10 ISZERO ISZERO AND SWAP6 POP DUP6 SWAP1 POP PUSH2 0x1FBC JUMPI PUSH1 0x40 DUP3 MSTORE PUSH1 0x44 DUP7 SUB DUP1 MLOAD PUSH1 0x40 DUP9 SUB DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP11 DUP3 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 DUP10 ADD DUP7 DUP16 GAS STATICCALL SWAP9 POP DUP9 ISZERO PUSH2 0x1FB2 JUMPI PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MLOAD EQ PUSH2 0x1FB2 JUMPI DUP12 EXTCODESIZE ISZERO PUSH2 0x1F18 JUMPI PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP8 PUSH1 0x41 SUB GT ISZERO PUSH2 0x1F4E JUMPI PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH5 0x101000000 DUP9 BYTE PUSH2 0x1F88 JUMPI PUSH32 0x1F003D0A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x815E1D6400000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST DUP5 DUP7 MSTORE SWAP2 SWAP1 SWAP3 MSTORE SWAP1 MSTORE JUMPDEST POP POP POP POP DUP1 PUSH2 0x1147 JUMPI PUSH2 0x1FCD PUSH2 0x2A30 JUMP JUMPDEST PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x42966C6800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x42966C68 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x207F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2093 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH21 0xFF0000000000000000000000000000000000000000 OR PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH32 0x0 DUP4 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 SWAP2 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 MSTORE PUSH1 0x20 PUSH1 0x0 DUP6 DUP8 PUSH1 0x0 DUP8 GAS CALL SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP2 PUSH2 0x2194 JUMPI PUSH2 0x214A PUSH2 0x2A30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD13D53D400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x222E JUMPI PUSH1 0x40 MLOAD PUSH32 0x1CF99B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xA8B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x226A JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x2336 JUMPI RETURNDATASIZE ISZERO PUSH2 0x22F7 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x22DE JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x22F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x2379 JUMPI PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x245B JUMPI RETURNDATASIZE ISZERO PUSH2 0x241D JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2404 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x2419 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH2 0x2480 DUP2 PUSH2 0x2A78 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x1420 JUMPI PUSH2 0x249B PUSH2 0x2A30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x470C7C1D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP3 PUSH1 0x4 MSTORE DUP2 PUSH1 0x24 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x44 PUSH1 0x0 DUP1 DUP9 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x2645 JUMPI DUP1 DUP7 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2645 JUMPI DUP1 PUSH2 0x2617 JUMPI DUP2 PUSH2 0x25DD JUMPI RETURNDATASIZE ISZERO PUSH2 0x259E JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2585 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x259A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE ADDRESS PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE ADDRESS PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP JUMP JUMPDEST PUSH1 0x0 TIMESTAMP DUP5 GT DUP1 PUSH2 0x2664 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x26A9 JUMPI DUP2 ISZERO PUSH2 0x26A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6F7EAC2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC6C3BBE600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xC6C3BBE6 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2753 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 0x2777 SWAP2 SWAP1 PUSH2 0x321A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xE030565E DUP3 DUP9 PUSH2 0x27C1 TIMESTAMP DUP9 PUSH2 0x3181 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2852 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x286D DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1420 JUMPI PUSH2 0x1420 DUP4 PUSH2 0x2953 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x28D3 JUMPI POP PUSH1 0x40 DUP1 DUP9 MSTORE PUSH1 0x20 DUP1 DUP10 ADD DUP11 SWAP1 MSTORE PUSH32 0x4CE34AA200000000000000000000000000000000000000000000000000000000 SWAP2 DUP10 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x64 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x28E2 JUMP JUMPDEST POP PUSH1 0x64 DUP8 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 MSTORE JUMPDEST PUSH1 0x3C PUSH1 0xC0 DUP3 MUL DUP10 ADD SUB DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE DUP4 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2921 DUP4 PUSH2 0x2A78 JUMP JUMPDEST PUSH2 0x292B DUP2 DUP4 PUSH2 0x2860 JUMP JUMPDEST DUP2 PUSH2 0x2941 JUMPI PUSH2 0x293C DUP7 DUP7 DUP7 DUP7 PUSH2 0x2AB5 JUMP JUMPDEST PUSH2 0x222E JUMP JUMPDEST PUSH2 0x222E DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD EQ PUSH2 0x295F JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296C DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2978 DUP2 DUP4 PUSH2 0x2C22 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE030565E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xE030565E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xF8C JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2A63 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x1420 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x2AB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x91B3E51400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x2C12 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2C12 JUMPI DUP1 PUSH2 0x2BE4 JUMPI DUP2 PUSH2 0x2BAA JUMPI RETURNDATASIZE ISZERO PUSH2 0x2B6B JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2B52 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x2B67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH32 0xF486BC8700000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x9889192300000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x5F15D67200000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST PUSH1 0x64 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0xC0 MUL PUSH1 0x44 ADD PUSH2 0x2C3D DUP5 DUP4 DUP4 PUSH2 0x209A JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2CFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH2 0x240 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2CA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D38 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D6E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DD4 DUP6 DUP3 DUP7 ADD PUSH2 0x2D6E JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x260 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2DF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E03 DUP6 DUP6 PUSH2 0x2D38 JUMP JUMPDEST SWAP6 PUSH2 0x220 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH2 0x240 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2E3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP3 PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E8C JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x2E6F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2E9E JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC1 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2F99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2FB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2FC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x220 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x301B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303C PUSH2 0x2FD0 JUMP JUMPDEST PUSH2 0x3045 DUP4 PUSH2 0x2E1A JUMP JUMPDEST DUP2 MSTORE PUSH2 0x3053 PUSH1 0x20 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x306E PUSH1 0x60 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x307F PUSH1 0x80 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3090 PUSH1 0xA0 DUP5 ADD PUSH2 0x2E1A JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xE0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x140 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x160 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x180 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1C0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x1E0 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x200 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x317C JUMPI PUSH2 0x317C PUSH2 0x3115 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3194 JUMPI PUSH2 0x3194 PUSH2 0x3115 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x31FE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3215 JUMPI PUSH2 0x3215 PUSH2 0x3115 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI MSIZE PUSH5 0x513E40DBFA 0xA7 0xB6 0xB9 ISZERO DELEGATECALL 0xBF POP 0x2E PUSH12 0x92BD7CAD7F2A61129EA3398 0xF7 SWAP11 0xBD PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"234:2896:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1283:143;;;;;;;;;;-1:-1:-1;1283:143:31;;;;;:::i;:::-;;:::i;:::-;;;824:14:54;;817:22;799:41;;787:2;772:18;1283:143:31;;;;;;;;2337:394;;;;;;;;;;-1:-1:-1;2337:394:31;;;;;:::i;:::-;;:::i;:::-;;;;1380:14:54;;1373:22;1355:41;;1439:14;;1432:22;1427:2;1412:18;;1405:50;1498:14;;1491:22;1471:18;;;1464:50;;;;1557:14;;1550:22;1545:2;1530:18;;1523:50;1622:42;1610:55;1604:3;1589:19;;1582:84;1697:3;1682:19;;1675:35;1741:3;1726:19;;1719:35;;;;1785:3;1770:19;;1763:35;1342:3;1327:19;2337:394:31;1036:768:54;1432:115:31;;;;;;;;;;;;;:::i;:::-;;;1955:25:54;;;1943:2;1928:18;1432:115:31;1809:177:54;1128:149:31;;;;;;;;;;-1:-1:-1;1128:149:31;;;;;:::i;:::-;;:::i;954:168::-;;;;;;;;;;-1:-1:-1;954:168:31;;;;;:::i;:::-;;:::i;1553:778::-;;;;;;;;;;-1:-1:-1;1553:778:31;;;;;:::i;:::-;;:::i;456:224::-;;;;;;:::i;:::-;;:::i;686:262::-;;;;;;:::i;:::-;;:::i;2737:152::-;;;;;;;;;;-1:-1:-1;2737:152:31;;;;;:::i;:::-;;:::i;2895:233::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;336:36:43:-;;;;;;;;;;;;;;;;;;5932:42:54;5920:55;;;5902:74;;5890:2;5875:18;336:36:43;5756:226:54;1283:143:31;1360:14;1402:17;1412:6;;1402:9;:17::i;:::-;1390:29;1283:143;-1:-1:-1;;;1283:143:31:o;2337:394::-;2440:16;2470;2500;2530:13;2557:17;2588;2619:16;2649:17;2698:26;2714:9;11847:16:41;12132:23;;;:12;:23;;;;;;;;12186;;;12366:21;;;12401:20;;;;12297;12435:21;;;;12186:23;;;;;;12223;;;;;12260;;;;;;12297:20;;;;;;;12331:21;;;;;;12366;;12401:20;11743:730;2698:26:31;2691:33;;;;;;;;;;;;;;;;2337:394;;;;;;;;;:::o;1432:115::-;1478:18;1521:19;:17;:19::i;:::-;1508:32;;1432:115;:::o;1128:149::-;1213:14;1255:15;1263:6;;1255:7;:15::i;954:168::-;1045:11;1081:34;1104:10;1081:22;:34::i;:::-;1072:43;954:168;-1:-1:-1;;954:168:31:o;1553:778::-;1729:558;;;;;;;;;1654:17;;1699:625;;1729:558;1762:13;;;;:5;:13;:::i;:::-;1729:558;;;;;;1793:5;:11;;;;;;;;;;:::i;:::-;1729:558;;;;1822:16;;;;;1729:558;;;;;1856:14;;;;;;;;:::i;:::-;1729:558;;;;;;1888:12;;;;;;;;:::i;:::-;1729:558;;;;;;1918:14;;;;;;;;:::i;:::-;1729:558;;;;;;1950:5;:15;;;1729:558;;;;1983:5;:13;;;1729:558;;;;2014:5;:14;;;1729:558;;;;2046:5;:13;;;1729:558;;;;2077:5;:12;;;1729:558;;;;2107:5;:11;;;1729:558;;;;2136:5;:13;;;1729:558;;;;2167:5;:9;;;1729:558;;;;2194:5;:17;;;1729:558;;;;2229:5;:10;;;1729:558;;;;2257:5;:16;;;1729:558;;;2301:5;:13;;;619:29:38;;;683:18;;551:15;715:29;;830:30;776:98;;;910:17;;941:27;;;1018:17;995:41;;1050:34;;;;1098;995:41;375:773;456:224:31;579:14;621:52;646:5;653:19;621:24;:52::i;686:262::-;840:11;876:65;899:10;911:19;932:8;876:22;:65::i;:::-;867:74;686:262;-1:-1:-1;;;;686:262:31:o;2737:152::-;738:18:36;;;2821:15:31;738:18:36;;;:9;:18;;;;;;2862:20:31;598:165:36;2895:233:31;2978:21;3013:23;3050:25;3107:14;:12;:14::i;:::-;3100:21;;;;;;2895:233;;;:::o;8359:3378:41:-;8437:14;8533:21;:19;:21::i;:::-;8615:31;;;8906:6;8615:31;8974:2640;8998:11;8994:1;:15;8974:2640;;;9070:20;9093:6;;9100:1;9093:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;9070:32;-1:-1:-1;9070:32:41;9317:23;;;;9070:32;9317:23;:::i;:::-;9307:33;;9451:970;9489:856;;;;;;;;9530:7;9489:856;;;;;;9563:15;:21;;;;;;;;;;:::i;:::-;9489:856;;;;9610:26;;;;;9489:856;;;;;9662:24;;;;;;;;:::i;:::-;9489:856;;;;;;9712:22;;;;;;;;:::i;:::-;9489:856;;;;;;9760:24;;;;;;;;:::i;:::-;9489:856;;;;;;9810:15;:25;;;9489:856;;;;9861:15;:23;;;9489:856;;;;9910:15;:24;;;9489:856;;;;9960:15;:23;;;9489:856;;;;10009:15;:22;;;9489:856;;;;10057:15;:21;;;9489:856;;;;10104:15;:23;;;9489:856;;;;10153:15;:19;;;9489:856;;;;10198:15;:27;;;9489:856;;;;10251:15;:20;;;9489:856;;;;10297:15;:26;;;9489:856;;;10367:36;10379:15;:23;;;;;;;;;;:::i;:::-;738:18:36;;683:22;738:18;;;:9;:18;;;;;;;598:165;10367:36:41;619:29:38;;;683:18;;551:15;715:29;;830:30;776:98;;;910:17;;941:27;;;1018:17;995:41;;1050:34;;;;1098;995:41;375:773;9451:970:41;10529:23;;;;:12;:23;;;;;;-1:-1:-1;9439:982:41;-1:-1:-1;10647:253:41;9439:982;10529:23;10751:4;;10647:18;:253::i;:::-;-1:-1:-1;10990:23:41;;;;10985:512;;11091:53;11108:7;11117:9;11128:15;;;;:5;:15;:::i;:::-;11091:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11091:16:41;;-1:-1:-1;;;11091:53:41:i;:::-;11238:30;;;;11264:4;11238:30;;;11374:104;;;;;;;;;;11414:9;1955:25:54;;1943:2;1928:18;;1809:177;11374:104:41;;;;;;;;10985:512;-1:-1:-1;;11596:3:41;;8974:2640;;;-1:-1:-1;11726:4:41;;8359:3378;-1:-1:-1;;;;;;;8359:3378:41:o;348:244:36:-;395:18;425:21;:19;:21::i;:::-;-1:-1:-1;506:10:36;496:21;;;;:9;:21;;;;;;;;;494:23;;;;;;;;;543:42;;1955:25:54;;;494:23:36;;506:10;543:42;;1928:18:54;543:42:36;;;;;;;348:244;:::o;5758:2595:41:-;5844:14;5940:21;:19;:21::i;:::-;6022:31;;6286:6;6022:31;6354:1876;6378:11;6374:1;:15;6354:1876;;;6450:30;6483:6;;6490:1;6483:9;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6521:13:41;;-1:-1:-1;6521:13:41;;;6483:9;6521:13;:::i;:::-;6511:23;-1:-1:-1;6557:10:41;:21;;;;6553:93;;6609:18;;;;;;;;;;;;;;6553:93;6745:17;6765:787;6803:696;;;;;;;;6844:7;6803:696;;;;;;6877:5;:11;;;;;;;;;;:::i;6765:787::-;7660:23;;;;:12;:23;;;;;7706:21;;;;7660:23;;-1:-1:-1;6745:807:41;;-1:-1:-1;7706:25:41;7702:109;;7762:30;;;;;;;;1955:25:54;;;1928:18;;7762:30:41;;;;;;;;7702:109;7900:31;;7949:30;;7900:31;7949:30;;;8082:34;;;;;;;;;;8097:9;1955:25:54;;1943:2;1928:18;;1809:177;8082:34:41;;;;;;;;-1:-1:-1;;8212:3:41;;6354:1876;;;-1:-1:-1;8342:4:41;;5758:2595;-1:-1:-1;;;;;;5758:2595:41:o;5031:968:40:-;5134:4;5168:17;5199;5230:10;5253:86;5301:10;5325:4;5253:34;:86::i;:::-;5154:185;;;;;;5355:5;5350:49;;-1:-1:-1;5383:5:40;;5031:968;-1:-1:-1;;;;5031:968:40:o;5350:49::-;5409:234;5455:15;5484:16;;;;;;;;:::i;:::-;5522:4;5541:18;;;;:10;:18;:::i;:::-;5573:21;;;;5608:1;5631;5409:32;:234::i;:::-;5689:1;5658:19;;;;;;;;:::i;:::-;:33;;;5654:225;;5707:41;5726:10;5738:9;5707:18;:41::i;:::-;5654:225;;;5779:89;5817:10;5845:9;5779:20;:89::i;:::-;5942:18;;;;:10;:18;:::i;:::-;5894:76;;;5919:9;5894:76;;;;1955:25:54;;1943:2;1928:18;;1809:177;5894:76:40;;;;;;;;-1:-1:-1;5988:4:40;;5031:968;-1:-1:-1;;;;5031:968:40:o;1801:1679::-;1920:4;1954:17;1985:10;2009:16;2038:76;2081:5;2100:4;2038:29;:76::i;:::-;1940:174;;;;;;2130:5;2125:49;;2158:5;2151:12;;;;;;;2125:49;2227:5;:16;2280:51;2227:5;2316:1;;2227:16;2280:18;:51::i;:::-;2253:78;-1:-1:-1;2382:1:40;2346:24;;;;;;;;:::i;:::-;:38;;;2342:988;;2400:297;2450:15;2483:21;;;;;;;;:::i;:::-;2522:23;;;;:15;:23;:::i;:::-;2571:4;2594:15;:26;;;2638:1;2657:15;:26;;;2400:32;:297::i;:::-;2712:50;2736:15;2753:8;2712:23;:50::i;:::-;2342:988;;;2820:30;;;14291:4:33;2820:30:40;;;;;;;;;2793:24;;2820:30;;;;;;;;;;-1:-1:-1;;2793:57:40;-1:-1:-1;2864:276:40;2897:21;;;;;;;;:::i;:::-;2936:23;;;;:15;:23;:::i;:::-;2985:4;3008:15;:26;;;3052:1;3071:15;:26;;;3115:11;2864:15;:276::i;:::-;3155:164;3198:15;3231:8;3257:19;3294:11;3155:25;:164::i;:::-;2779:551;2342:988;3396:23;;;;:15;:23;:::i;:::-;3345:106;;;3373:9;3433:8;3345:106;;;;;;7510:25:54;;;7566:2;7551:18;;7544:34;7498:2;7483:18;;7336:248;3345:106:40;;;;;;;;-1:-1:-1;3469:4:40;;1801:1679;-1:-1:-1;;;;;;;1801:1679:40:o;3486:1539::-;3636:4;3656:17;3683;3710:16;3750:10;3897:124;3949:10;3977:8;4003:4;3897:34;:124::i;:::-;3774:247;;-1:-1:-1;3774:247:40;;-1:-1:-1;3774:247:40;;-1:-1:-1;3774:247:40;-1:-1:-1;3774:247:40;4036:57;;4073:5;4066:12;;;;;;;;4036:57;3736:367;4113:24;4140:60;4159:10;4171:8;4181:5;4188:11;4140:18;:60::i;:::-;4113:87;-1:-1:-1;4246:1:40;4215:19;;;;;;;;:::i;:::-;:33;;;4211:370;;4264:45;4288:10;4300:8;4264:23;:45::i;:::-;4211:370;;;4367:30;;;14291:4:33;4367:30:40;;;;;;;;;4340:24;;4367:30;;;;;;;;;;-1:-1:-1;4367:30:40;4340:57;;4411:159;4454:10;4482:8;4508:19;4545:11;4411:25;:159::i;:::-;4326:255;4211:370;4595:11;4591:299;;;4622:257;4672:15;4705:16;;;;;;;;:::i;:::-;4747:4;4770:9;4797:21;;;;4836:1;4863;4622:32;:257::i;:::-;4905:91;;;7785:25:54;;;7841:2;7826:18;;7819:34;;;7896:14;;7889:22;7869:18;;;7862:50;4905:91:40;;;;;;;7773:2:54;4905:91:40;;;-1:-1:-1;5014:4:40;;3486:1539;-1:-1:-1;;;;;;;3486:1539:40:o;3829:695:38:-;3913:21;3948:23;3985:25;4093:18;:16;:18::i;:::-;4324:26;;;2270:1:33;4324:26:38;;;;;;;;;4075:36;;-1:-1:-1;4228:19:38;;-1:-1:-1;4324:26:38;;;;;;;;-1:-1:-1;;4480:27:38;4470:7;4457:21;;4450:58;-1:-1:-1;4457:21:38;3829:695;;-1:-1:-1;3829:695:38;:::o;1511:215:42:-;2345:1:33;1636:16:42;;:32;1632:88;;1691:18;;;;;;;;;;;;;;1632:88;1511:215::o;3215:1039:47:-;3419:23;;3393:10;;3419:23;;;;;3415:168;;;3462:15;3458:88;;;3504:27;;;;;;;;1955:25:54;;;1928:18;;3504:27:47;1809:177:54;3458:88:47;-1:-1:-1;3567:5:47;3560:12;;3415:168;3597:23;;;;;;;3593:173;;;3640:15;3636:93;;;3682:32;;;;;;;;1955:25:54;;;1928:18;;3682:32:47;1809:177:54;3593:173:47;3780:8;3776:449;;;3808:21;;;;:25;3804:192;;3857:15;3853:99;;;3903:30;;;;;;;;1955:25:54;;;1928:18;;3903:30:47;1809:177:54;3804:192:47;3776:449;;;4030:11;:21;;;4055:1;4030:26;4026:189;;4080:15;4076:95;;;4126:26;;;;;;;;1955:25:54;;;1928:18;;4126:26:47;1809:177:54;4026:189:47;-1:-1:-1;4243:4:47;3215:1039;;;;;;:::o;2640:569::-;2864:10;2853:21;;;;2849:58;;2640:569;;;:::o;2849:58::-;2997:14;3014:50;3034:18;:16;:18::i;:::-;5134:14:38;4937:13;5124:25;;;5249:29;5242:54;;;;5601:23;5594:42;;;5724:25;5711:39;;5829:34;;;5711:39;4817:1062;3014:50:47;2997:67;;3153:49;3175:7;3184:6;3192:9;3153:21;:49::i;:::-;2770:439;2640:569;;;:::o;4418:1334:41:-;4590:17;;;4699:95;;;;;;;;4729:10;4699:95;:::i;:::-;4753:31;4765:18;;;;:10;:18;:::i;4699:95::-;4805:31;4839:23;;;:12;:23;;;;;4877;;4687:107;;-1:-1:-1;4839:23:41;4877;;4872:193;;4920:15;4916:89;;;4962:28;;;;;;;;1955:25:54;;;1928:18;;4962:28:41;1809:177:54;4916:89:41;-1:-1:-1;5048:5:41;;-1:-1:-1;5018:36:41;;4872:193;5087:11;:21;;;5075:33;;5137:144;5173:9;5200:11;5229:5;5252:15;5137:18;:144::i;:::-;5119:234;;-1:-1:-1;5336:5:41;;-1:-1:-1;5306:36:41;;5119:234;5425:15;5391:31;5403:19;;;;5391:9;:31;:::i;:::-;5367:11;:21;;;:55;;;;:::i;:::-;:73;5363:240;;;5460:15;5456:87;;;5502:26;;;;;;;;1955:25:54;;;1928:18;;5502:26:41;1809:177:54;5363:240:41;5613:32;5624:11;:20;;;5613:10;:32::i;:::-;5656:30;;5696:27;;;;;;-1:-1:-1;;4418:1334:41;;;;;;:::o;2173:3517:37:-;2487:24;;2483:3201;;2607:22;2844:21;2838:28;2820:46;;2977:25;2961:14;2954:49;3280:35;3194:42;3154:14;3125:133;3097:236;3610:38;3524:42;3484:14;3455:133;3427:239;3841:8;3782:36;3766:14;3762:57;3734:133;4035:5;3979:33;3963:14;3959:54;3931:127;4235:4;4180:32;4164:14;4160:53;4132:125;4394:2;4361:30;4345:14;4341:51;4334:63;4581:10;4520:38;4504:14;4500:59;4472:137;4788:6;4731:34;4715:14;4711:55;4683:129;4888:138;4930:10;4958:14;14171:5:33;4888:24:37;:138::i;:::-;2513:2524;2483:3201;;;5150:15;5138:8;:27;;;;;;;;:::i;:::-;;5134:540;;5263:6;5273:1;5263:11;5259:94;;5305:29;;;;;;;;;;;;;;5259:94;5440:51;5463:5;5470:4;5476:2;5480:10;5440:22;:51::i;:::-;5134:540;;;5599:60;5623:5;5630:4;5636:2;5640:10;5652:6;5599:23;:60::i;:::-;2173:3517;;;;;;;:::o;6005:552:40:-;6135:143;6169:23;;;;:15;:23;:::i;:::-;6259:9;6207:49;6233:23;;;;6207;;;;:49;:::i;:::-;:61;;;;:::i;:::-;6135:12;:143::i;:::-;6288:18;6360:9;6309:48;6334:23;;;;6309:22;;;;:48;:::i;:::-;:60;;;;:::i;:::-;6288:81;-1:-1:-1;6442:5:40;6405:34;6418:21;;;;6288:81;6405:34;:::i;:::-;:42;;;;:::i;:::-;6392:55;;:10;:55;:::i;:::-;6379:68;-1:-1:-1;6457:93:40;6491:24;;;;;;;;:::i;:::-;6530:10;6457:12;:93::i;:::-;6125:432;6005:552;;:::o;6563:497::-;6690:119;6716:19;;;;;;;;:::i;:::-;6737:18;;;;:10;:18;:::i;:::-;6799:9;6757:39;6778:18;;;;6757;;;;:39;:::i;:::-;:51;;;;:::i;:::-;6690:25;:119::i;:::-;6820:18;6882:9;6841:38;6861:18;;;;6841:17;;;;:38;:::i;:::-;:50;;;;:::i;:::-;6820:71;-1:-1:-1;6959:5:40;6927:29;6940:16;;;;6820:71;6927:29;:::i;:::-;:37;;;;:::i;:::-;6914:50;;:10;:50;:::i;:::-;6901:63;-1:-1:-1;6974:79:40;7000:19;;;;;;;;:::i;:::-;7021;;;;;;;;:::i;:::-;7042:10;6974:25;:79::i;523:1861:41:-;675:17;;;814:5;858:142;887:25;;;;930:23;;;;971:15;858:11;:142::i;:::-;840:225;;-1:-1:-1;1041:1:41;;-1:-1:-1;1041:1:41;;-1:-1:-1;1041:1:41;;-1:-1:-1;1025:29:41;;840:225;1105:1;1079:15;:23;;;:27;1075:185;;;1126:15;1122:85;;;1168:24;;;;;;;;;;;;;;1122:85;-1:-1:-1;1236:1:41;;-1:-1:-1;1236:1:41;;-1:-1:-1;1236:1:41;;-1:-1:-1;1220:29:41;;1075:185;1282:105;;;;;;;;1312:15;1282:105;:::i;:::-;1341:36;1353:23;;;;:15;:23;:::i;1282:105::-;1398:31;1432:23;;;:12;:23;;;;;1270:117;;-1:-1:-1;1484:143:41;1270:117;1432:23;1576:4;1598:15;1484:18;:143::i;:::-;1466:225;;-1:-1:-1;1671:5:41;;-1:-1:-1;1671:5:41;;-1:-1:-1;1652:28:41;;-1:-1:-1;1652:28:41;1466:225;1706:23;;;;1701:186;;1745:131;1779:23;;;;:15;:23;:::i;:::-;1820:9;1847:15;;;;:5;:15;:::i;1745:131::-;1908:157;1932:10;1956:21;;;;;;;;:::i;:::-;1991:15;:26;;;2031:15;:24;;;1908:10;:157::i;:::-;2076:30;;2102:4;2195:34;;;;2219:10;2195:34;;;;;;;2263:15;2239:21;;;:39;2288:20;;;:31;;;2157:20;2329:21;;;:25;;;523:1861;;2102:4;;-1:-1:-1;2288:31:41;;-1:-1:-1;;;;523:1861:41:o;661:1134:40:-;856:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:19:40;891:15;;936:25;953:8;936:14;;;;:25;:::i;:::-;989:18;;;;972:14;;;:35;916:45;-1:-1:-1;1017:772:40;;;;1087:31;1104:14;;;;1087;;;;:31;:::i;:::-;1074:45;;:9;:45;:::i;:::-;1057:62;;:14;;;;:62;:::i;:::-;1047:72;-1:-1:-1;1175:30:40;1191:14;;;;1175:13;;;;:30;:::i;:::-;1163:43;;:9;:43;:::i;:::-;1147:59;;:13;;;;:59;:::i;:::-;1133:73;;1322:14;;;;1339:7;;1310:9;1302:5;1287:12;;;;1253:30;1269:14;;;;1253:13;;;;:30;:::i;:::-;1252:47;;;;:::i;:::-;:55;;;;:::i;:::-;:67;;;;:::i;:::-;1236:83;;:13;;;;:83;:::i;:::-;:100;;;;:::i;:::-;:110;;;;:::i;:::-;1220:13;;;:126;1375:14;;;;1360:12;;;:29;1017:772;;;1442:31;1459:14;;;;1442;;;;:31;:::i;:::-;1430:44;;:8;:44;:::i;:::-;1420:54;-1:-1:-1;1514:30:40;1530:14;;;;1514:13;;;;:30;:::i;:::-;1502:43;;:8;:43;:::i;:::-;1488:57;;;1624:14;;;;1641:7;;1616:5;;1587:26;;1601:12;;;;;1587:26;:::i;:::-;:34;;;;:::i;:::-;:51;;;;:::i;:::-;:61;;;;:::i;:::-;1571:13;;;:77;1662:117;;;;1708:6;:10;;;1693:3;:11;;:25;;;;;;;:::i;:::-;;;-1:-1:-1;1736:14:40;;;:28;;1754:10;;;;;1736:14;:28;;1754:10;;1736:28;:::i;:::-;;;-1:-1:-1;1662:117:40;881:914;;661:1134;;;;;;:::o;7066:882::-;7257:16;;7233:9;;7257:33;-1:-1:-1;7253:98:40;;;7313:27;;;;;;;;;;;;;;7253:98;7361:100;7395:23;;;;:15;:23;:::i;:::-;7433:8;:18;;;7361:12;:100::i;:::-;7472:102;7506:24;;;;;;;;:::i;:::-;7545:8;:19;;;7472:12;:102::i;:::-;7589:17;;;;:21;7585:162;;7626:110;7664:22;;;;;;;;:::i;:::-;7705:8;:17;;;7626:12;:110::i;:::-;7775:16;;7757:34;;;;:::i;:::-;;-1:-1:-1;7806:18:40;;7802:140;;7868:49;7889:10;7902:14;7868:12;:49::i;9569:1092:37:-;9863:59;9898:11;9911:10;9863:34;:59::i;:::-;9984:10;9980:675;;10098:6;10108:1;10098:11;10094:86;;10136:29;;;;;;;;;;;;;;10094:86;10259:51;10282:5;10289:4;10295:2;10299:10;10259:22;:51::i;9980:675::-;10409:235;10434:10;10462:11;10491:22;10531:5;10554:4;10576:2;10596:10;10624:6;10409:7;:235::i;7954:1787:40:-;8170:10;8155:12;8206:19;;;;;;;;:::i;:::-;8190:35;-1:-1:-1;8236:176:40;8190:35;8283:4;8301:19;;;;;;;;:::i;:::-;8334:8;:19;;;8367:10;8391:11;8236:14;:176::i;:::-;8427:17;;;;:21;8423:252;;8464:200;8496:5;8519:4;8541:17;;;;;;;;:::i;:::-;8576:8;:17;;;8611:10;8639:11;8464:14;:200::i;:::-;8741:17;;;;8719:19;;;;8700:16;;8685:12;;8741:17;8700:38;;;:::i;:::-;:58;;;;:::i;:::-;8685:73;;8780:8;:18;;;8772:4;:26;8768:967;;8814:202;8846:5;8869:4;8891:18;;;;:10;:18;:::i;:::-;8927:8;:18;;;8963:10;8991:11;8814:14;:202::i;:::-;9038:18;;;;9030:26;;;;:::i;:::-;;-1:-1:-1;9074:8:40;;9070:258;;9102:211;9138:5;9165:4;9199;9226;9252:10;9284:11;9102:14;:211::i;:::-;9341:28;9357:11;9341:15;:28::i;8768:967::-;9400:188;9432:5;9455:4;9477:18;;;;:10;:18;:::i;:::-;9513:4;9535:10;9563:11;9400:14;:188::i;:::-;9602:28;9618:11;9602:15;:28::i;:::-;9645:79;9671:5;9678:18;;;;:10;:18;:::i;:::-;9719:4;9698:8;:18;;;:25;;;;:::i;2390:2022:41:-;2588:17;;;;2727:95;;;;;;;;2757:10;2727:95;:::i;:::-;2781:31;2793:18;;;;:10;:18;:::i;2727:95::-;2833:31;2867:23;;;:12;:23;;;;;2905;;2715:107;;-1:-1:-1;2867:23:41;2905;;2900:201;;2948:15;2944:89;;;2990:28;;;;;;;;1955:25:54;;;1928:18;;2990:28:41;1809:177:54;2944:89:41;-1:-1:-1;3073:1:41;;-1:-1:-1;3073:1:41;;-1:-1:-1;3073:1:41;;-1:-1:-1;3046:44:41;;2900:201;3129:144;3165:9;3192:11;3221:5;3244:15;3129:18;:144::i;:::-;3111:242;;-1:-1:-1;3325:1:41;;-1:-1:-1;3325:1:41;;-1:-1:-1;3325:1:41;;-1:-1:-1;3298:44:41;;3111:242;3402:10;:18;;;3391:8;3367:11;:21;;;:32;;;;:::i;:::-;:53;:69;;;;3435:1;3424:8;:12;3367:69;3363:256;;;3456:15;3452:99;;;3498:38;;;;;;;;1955:25:54;;;1928:18;;3498:38:41;1809:177:54;3363:256:41;3703:15;3681:10;:19;;;3657:11;:21;;;:43;;;;:::i;:::-;3633:11;:21;;;:67;;;;:::i;:::-;:85;3629:257;;;3738:15;3734:84;;;3780:23;;;;;;;;1955:25:54;;;1928:18;;3780:23:41;1809:177:54;3629:257:41;3921:8;3896:11;:21;;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;;3943:21:41;;;;3968:18;;;;3943:43;;3939:401;;4002:30;;;;;;;;:23;4089:20;;;4028:4;;-1:-1:-1;4078:32:41;;:10;:32::i;:::-;3939:401;;;4171:21;;4210:20;;;;4272:21;;;;4141:188;;4171:21;;;;;;4210:20;4272:43;;4171:21;4296:19;;;;4272:43;:::i;:::-;4248:11;:21;;;:67;;;;:::i;:::-;4141:12;:188::i;:::-;4384:21;;;;;;;-1:-1:-1;4358:4:41;;-1:-1:-1;2390:2022:41;;;;;;;;:::o;3281:208:38:-;3332:7;3402:9;3385:13;:26;:97;;3458:24;1203:187:32;;;1231:24;1203:187;;;12904:25:54;1273:10:32;12945:18:54;;;12938:34;;;;1301:13:32;12988:18:54;;;12981:34;1332:13:32;13031:18:54;;;13024:34;1371:4:32;13074:19:54;;;13067:84;1154:7:32;;12876:19:54;;1203:187:32;;;;;;;;;;;;1180:220;;;;;;1173:227;;1097:310;;3385:97:38;-1:-1:-1;3426:17:38;;3281:208::o;1066:9919:44:-;1284:12;1484:1;1481;1474:12;1556:5;1652:9;1646:16;1954:7;1943:9;1939:23;2096:22;2090:29;2563:15;2546;2542:37;2655:19;2824:1;2815:7;2812:14;2802:3382;;2975:24;2964:9;2960:40;2929:93;3407:24;3396:9;3392:40;3386:47;3359:1;3329:126;3324:131;;3554:7;3551:820;;;3803:17;3754:18;3744:8;3740:33;3707:139;3702:144;;4265:28;4213:18;4176:147;4121:24;4110:9;4106:40;4070:279;3551:820;4556:1;4545:9;4538:20;4768:6;4744:22;4737:38;5430:7;5365:1;5284:19;5203:22;5123:20;5088:5;5048:451;-1:-1:-1;5604:57:44;;;5739:34;;;5901:24;5886:40;;5854:138;-1:-1:-1;;6158:8:44;2802:3382;6453:27;;6482:13;;;6449:47;;-1:-1:-1;6449:47:44;;-1:-1:-1;6602:3944:44;;6921:46;6877:22;6849:136;7156:48;7125:9;7100:122;7362:11;7356:18;7545:46;7514:9;7489:120;7745:9;7739:16;7868:33;7855:11;7848:54;7981:6;7970:9;7963:25;8396:7;8373:1;8285:44;8244:15;8215:136;8182:11;8154:6;8127:5;8095:326;8084:337;;8518:7;8515:1692;;;8702:33;8698:1;8692:8;8689:47;8679:1510;;8857:6;8845:19;8842:254;;;8960:36;8957:1;8950:47;9036:33;9033:1;9026:44;8842:254;9233:1;9215:15;9198;9194:37;9191:44;9188:292;;;9352:32;9349:1;9342:43;9424:29;9421:1;9414:40;9188:292;9604:42;9601:1;9596:51;9557:405;;9774:29;9771:1;9764:40;9868:1;9840:26;9833:37;9909:26;9906:1;9899:37;9557:405;10075:29;10072:1;10065:40;10140:26;10137:1;10130:37;8679:1510;10341:57;;;10415:52;;;;10484:48;;6602:3944;;;;;10604:7;10599:380;;10692:34;:32;:34::i;:::-;10857:36;10854:1;10847:47;10921:33;10918:1;10911:44;974:110:43;1030:47;;;;;;;;1955:25:54;;;1051:11:43;1030:38;;;;;1928:18:54;;1030:47:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:110;:::o;17154:1355:37:-;1774:21:38;1768:28;;1392:19;1983:18;1980:41;17371:15:37;1970:52:38;;;2117:7;2110:27;;;1537;2232:41;;2660:31;2539:28;2445:264;2899:48;;;;2800:23;2379:458;17371:44:37;;17426:12;17448:13;17594:1;17591;17584:12;17872:7;17853:1;17823:12;17791:14;17772:1;17747:7;17724:5;17702:191;17691:202;;17995:1;17989:8;17979:18;;18055:7;18050:254;;18153:34;:32;:34::i;:::-;18264:29;;;;;5932:42:54;5920:55;;18264:29:37;;;5902:74:54;5875:18;;18264:29:37;5756:226:54;18050:254:37;18391:43;;;18401:33;18391:43;18387:116;;18457:35;;;;;;;;11219:25:54;;;11292:42;11280:55;;11260:18;;;11253:83;11192:18;;18457:35:37;11045:297:54;18387:116:37;17293:1216;;;17154:1355;;;:::o;21079:4914:45:-;21398:5;21386:18;21376:254;;21457:26;21431:24;21424:60;21536:5;21508:26;21501:41;21592:23;21566:24;21559:57;21376:254;21828:21;21822:28;21974:29;21945:27;21938:66;22054:4;22024:28;22017:42;22107:2;22079:26;22072:38;22158:10;22130:26;22123:46;22448:1;22429;22385:26;22340:27;22321:1;22298:5;22275;22253:210;22528:7;22518:3268;;22679:16;22676:2328;;;23121:7;23081:13;23063:16;23059:36;23030:120;23432:7;23420:10;23416:24;23560:15;23547:11;23543:33;23689:10;23672:15;23669:31;23666:769;;;23880:32;;;23950:11;23839:156;24297:26;24194:27;;;24115:37;;;24070:189;24029:328;23802:585;23735:678;23666:769;24679:5;24662:14;24656:4;24652:25;24649:36;24646:340;;;24814:16;24811:1;24808;24793:38;24947:16;24944:1;24937:27;24646:340;;;;22676:2328;25179:43;25116:41;25088:152;25309:5;25264:43;25257:58;25383:4;25339:42;25332:56;25454:2;25412:40;25405:52;25523:10;25481:40;25474:60;25604:1;25558:44;25551:55;25714:40;25651:41;25623:149;22518:3268;-1:-1:-1;25864:21:45;25857:41;-1:-1:-1;;25975:1:45;25965:8;25958:19;-1:-1:-1;;21079:4914:45:o;26641:5620::-;26986:5;26974:18;26964:254;;27045:26;27019:24;27012:60;27124:5;27096:26;27089:41;27180:23;27154:24;27147:57;26964:254;27410:21;27404:28;27467:8;27461:15;27511:8;27505:15;27555:8;27549:15;27730:34;27680:32;27656:122;27833:4;27798:33;27791:47;27891:2;27858:31;27851:43;27947:10;27914:31;27907:51;28015:6;27978:35;27971:51;28117:43;28059:40;28035:139;28236:1;28194:40;28187:51;28527:1;28508;28459:31;28409:32;28390:1;28367:5;28344;28322:220;28607:7;28597:3273;;28758:16;28755:2328;;;29200:7;29160:13;29142:16;29138:36;29109:120;29511:7;29499:10;29495:24;29639:15;29626:11;29622:33;29768:10;29751:15;29748:31;29745:769;;;29959:32;;;30029:11;29918:156;30376:26;30273:27;;;30194:37;;;30149:189;30108:328;29881:585;29814:678;29745:769;30758:5;30741:14;30735:4;30731:25;30728:36;30725:340;;;30893:16;30890:1;30887;30872:38;31026:16;31023:1;31016:27;30725:340;;;;28755:2328;31258:43;31195:41;31167:152;31388:5;31343:43;31336:58;31462:4;31418:42;31411:56;31533:2;31491:40;31484:52;31602:10;31560:40;31553:60;31683:6;31637:44;31630:60;31798:40;31735:41;31707:149;28597:3273;-1:-1:-1;31891:8:45;31884:26;;;;31952:8;31945:26;32013:8;32006:26;32132:21;32125:41;-1:-1:-1;;32243:1:45;-1:-1:-1;32226:19:45;-1:-1:-1;;;26641:5620:45:o;5921:742:37:-;6054:28;6075:6;6054:20;:28::i;:::-;6174:12;6330:1;6327;6324;6321;6313:6;6309:2;6302:5;6297:35;6286:46;;6389:7;6384:273;;6488:34;:32;:34::i;:::-;6607:39;;;;;11559:42:54;11547:55;;6607:39:37;;;11529:74:54;11619:18;;;11612:34;;;11502:18;;6607:39:37;11347:305:54;10946:9529:45;11354:21;11348:28;11498:24;11474:22;11467:56;11566:2;11543:21;11536:33;11616:6;11589:25;11582:41;12302:7;12283:1;12244:21;12204:22;12185:1;12162:5;12139;12117:206;12800:10;12747:16;12740:24;12714:2;12696:16;12693:24;12689:1;12685;12679:8;12676:15;12672:46;12648:134;12432:392;13185:16;13178:24;13171:32;13162:7;13158:46;13148:7120;;13506:7;13496:5;13484:18;13477:26;13470:34;13466:48;13456:6592;;13595:7;13585:6142;;13694:10;13684:4764;;13884:16;13881:3322;;;14451:7;14399:13;14381:16;14377:36;14336:156;14857:7;14845:10;14841:24;15009:15;14996:11;14992:33;15162:10;15145:15;15142:31;15139:1293;;;15413:186;;;15649:11;15360:346;16246:26;16119:27;;;15862:203;;;15805:391;15752:566;15311:1049;15220:1178;15139:1293;16724:5;16707:14;16701:4;16697:25;16694:36;16691:482;;;16922:16;16919:1;16916;16901:38;17122:16;17119:1;17112:27;16691:482;;;;13881:3322;17426:43;17351:41;17311:188;17645:5;17568:43;17528:152;17825:9;17749:42;17709:155;17942:2;17900:40;17893:52;18023:1;17981:40;17974:51;18172:6;18094:44;18054:154;18352:40;18277:41;18237:185;13684:4764;18737:49;18660:47;18624:188;18952:5;18873:49;18837:146;19122:9;19044:48;19008:149;19294:2;19218:46;19182:140;19463:6;19383:50;19347:148;19633:46;19556:47;19520:185;13585:6142;19863:26;19837:24;19830:60;19946:5;19918:26;19911:41;20006:23;19980:24;19973:57;13456:6592;-1:-1:-1;;20346:21:45;20339:41;-1:-1:-1;;20457:1:45;20447:8;20440:19;-1:-1:-1;10946:9529:45:o;1338:627:47:-;1470:10;1587:15;1575:9;:27;:57;;;;1617:15;1606:7;:26;;1575:57;1571:314;;;1725:15;1721:74;;;1767:13;;;;;;;;;;;;;;1721:74;-1:-1:-1;1869:5:47;1862:12;;1571:314;-1:-1:-1;1954:4:47;1338:627;;;;;:::o;450:358:43:-;624:72;;;;;671:4;624:72;;;11920:34:54;624:38:43;11990:15:54;;;11970:18;;;11963:43;12022:18;;;12015:34;;;591:7:43;;;;645:11;624:38;;;;11832:18:54;;624:72:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;610:86;-1:-1:-1;706:30:43;716:11;706:30;;610:86;742:2;753:26;764:15;753:8;:26;:::i;:::-;706:75;;;;;;;;;;;;;12449:25:54;;;;12522:42;12510:55;;;12490:18;;;12483:83;12614:18;12602:31;12582:18;;;12575:59;12422:18;;706:75:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;798:3:43;;450:358;-1:-1:-1;;;;;;;;450:358:43:o;13407:458:37:-;13604:29;13636:38;13662:11;19234:26;19217:44;19194:81;;18927:364;13636:38;13604:70;;13794:10;13769:21;:35;13765:94;;13820:28;13836:11;13820:15;:28::i;20287:2154::-;20547:16;14291:4:33;20721:11:37;:18;:41;20717:1009;;-1:-1:-1;20916:16:37;20896:37;;;21000:26;20983:44;;;20976:64;;;20822:33;21064:42;;;21057:60;;;;21179:28;21162:46;;21134:138;20789:1;21313:28;21296:46;;21289:64;;;20717:1009;;;-1:-1:-1;21550:28:37;21533:46;;21527:53;;21602:1;21502:119;21638:64;;;;20717:1009;21903:36;21858:25;21848:8;21844:40;21831:11;21827:58;21806:147;21986:8;21973:11;21966:29;22065:5;22032:30;22019:11;22015:48;22008:63;22140:4;22108:29;22095:11;22091:47;22084:61;22212:2;22182:27;22169:11;22165:45;22158:57;22323:10;22269:35;22256:11;22252:53;22228:119;22418:6;22384:31;22371:11;22367:49;22360:65;;21773:662;20287:2154;;;;;;;;:::o;7599:969::-;7855:28;7876:6;7855:20;:28::i;:::-;7959:59;7994:11;8007:10;7959:34;:59::i;:::-;8080:10;8076:486;;8172:46;8194:5;8201:4;8207:2;8211:6;8172:21;:46::i;:::-;8076:486;;;8317:234;8342:10;8370:11;8399:21;8438:5;8461:4;8483:2;8511:1;8531:6;8317:7;:234::i;14229:437::-;14333:4:33;14354:11:37;:18;:38;14350:75;;14229:437;:::o;14350:75::-;14501:29;14533:38;14559:11;19234:26;19217:44;19194:81;;18927:364;14533:38;14501:70;;14615:44;14624:21;14647:11;14615:8;:44::i;:::-;14289:377;14229:437;:::o;814:154:43:-;901:60;;;;;;;;12449:25:54;;;901:30:43;12510:55:54;;;12490:18;;;12483:83;12614:18;12602:31;;12582:18;;;12575:59;911:11:43;901:30;;;;12422:18:54;;901:60:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:2237:39;1554:16;1551:2017;;;1920:7;1884:13;1866:16;1862:36;1837:108;2229:7;2205:21;2199:28;2195:42;2349:15;2336:11;2332:33;2470:10;2453:15;2450:31;2447:607;;;2608:32;;;2642:11;2604:50;2932:26;2837:27;;;2762:37;;;2721:177;2684:304;2571:443;2512:524;2447:607;3263:5;3246:14;3240:4;3236:25;3233:36;3230:324;;;3390:16;3387:1;3384;3369:38;3519:16;3516:1;3509:27;463:203:30;596:6;606:1;596:11;592:68;;630:19;;;;;;;;;;;;;;592:68;463:203;:::o;1325:9615:45:-;1751:21;1745:28;1899;1871:26;1864:64;1977:4;1948:27;1941:41;2029:2;2002:25;1995:37;2083:6;2052:29;2045:45;2777:7;2758:1;2715:25;2671:26;2652:1;2629:5;2606;2584:214;3275:10;3222:16;3215:24;3189:2;3171:16;3168:24;3164:1;3160;3154:8;3151:15;3147:46;3123:134;2907:392;3660:16;3653:24;3646:32;3637:7;3633:46;3623:7110;;3981:7;3971:5;3959:18;3952:26;3945:34;3941:48;3931:6582;;4070:7;4060:6132;;4169:10;4159:4759;;4359:16;4356:3322;;;4926:7;4874:13;4856:16;4852:36;4811:156;5332:7;5320:10;5316:24;5484:15;5471:11;5467:33;5637:10;5620:15;5617:31;5614:1293;;;5888:186;;;6124:11;5835:346;6721:26;6594:27;;;6337:203;;;6280:391;6227:566;5786:1049;5695:1178;5614:1293;7199:5;7182:14;7176:4;7172:25;7169:36;7166:482;;;7397:16;7394:1;7391;7376:38;7597:16;7594:1;7587:27;7166:482;;;;4356:3322;7901:43;7826:41;7786:188;8120:5;8043:43;8003:152;8300:4;8224:42;8184:150;8412:2;8370:40;8363:52;8493:1;8451:40;8444:51;8642:6;8564:44;8524:154;8822:40;8747:41;8707:185;4159:4759;9207:49;9130:47;9094:188;9422:5;9343:49;9307:146;9592:4;9514:48;9478:144;9759:2;9683:46;9647:140;9928:6;9848:50;9812:148;10098:46;10021:47;9985:185;4060:6132;10328:26;10302:24;10295:60;10411:5;10383:26;10376:41;10471:23;10445:24;10438:57;3931:6582;-1:-1:-1;;10811:21:45;10804:41;-1:-1:-1;;10922:1:45;10912:8;10905:19;-1:-1:-1;;1325:9615:45:o;15371:1113:37:-;16045:28;16028:46;;16022:53;15859:8;15842:26;;;16097:25;15997:143;15951:28;15930:224;16255:66;16280:10;15842:26;15930:224;16255:24;:66::i;:::-;-1:-1:-1;;16448:19:37;16428:40;;-1:-1:-1;15371:1113:37:o;14:640:54:-;125:6;133;186:2;174:9;165:7;161:23;157:32;154:52;;;202:1;199;192:12;154:52;242:9;229:23;271:18;312:2;304:6;301:14;298:34;;;328:1;325;318:12;298:34;366:6;355:9;351:22;341:32;;411:7;404:4;400:2;396:13;392:27;382:55;;433:1;430;423:12;382:55;473:2;460:16;499:2;491:6;488:14;485:34;;;515:1;512;505:12;485:34;568:7;563:2;553:6;550:1;546:14;542:2;538:23;534:32;531:45;528:65;;;589:1;586;579:12;528:65;620:2;612:11;;;;;642:6;;-1:-1:-1;14:640:54;;-1:-1:-1;;;;14:640:54:o;851:180::-;910:6;963:2;951:9;942:7;938:23;934:32;931:52;;;979:1;976;969:12;931:52;-1:-1:-1;1002:23:54;;851:180;-1:-1:-1;851:180:54:o;1991:655::-;2112:6;2120;2173:2;2161:9;2152:7;2148:23;2144:32;2141:52;;;2189:1;2186;2179:12;2141:52;2229:9;2216:23;2258:18;2299:2;2291:6;2288:14;2285:34;;;2315:1;2312;2305:12;2285:34;2353:6;2342:9;2338:22;2328:32;;2398:7;2391:4;2387:2;2383:13;2379:27;2369:55;;2420:1;2417;2410:12;2369:55;2460:2;2447:16;2486:2;2478:6;2475:14;2472:34;;;2502:1;2499;2492:12;2472:34;2560:7;2555:2;2545:6;2537;2533:19;2529:2;2525:28;2521:37;2518:50;2515:70;;;2581:1;2578;2571:12;2651:164;2719:5;2764:3;2755:6;2750:3;2746:16;2742:26;2739:46;;;2781:1;2778;2771:12;2739:46;-1:-1:-1;2803:6:54;2651:164;-1:-1:-1;2651:164:54:o;2820:255::-;2914:6;2967:3;2955:9;2946:7;2942:23;2938:33;2935:53;;;2984:1;2981;2974:12;2935:53;3007:62;3061:7;3050:9;3007:62;:::i;3080:164::-;3148:5;3193:3;3184:6;3179:3;3175:16;3171:26;3168:46;;;3210:1;3207;3200:12;3249:255;3343:6;3396:3;3384:9;3375:7;3371:23;3367:33;3364:53;;;3413:1;3410;3403:12;3364:53;3436:62;3490:7;3479:9;3436:62;:::i;3691:430::-;3784:6;3792;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;3901:9;3888:23;3934:18;3926:6;3923:30;3920:50;;;3966:1;3963;3956:12;3920:50;3989:75;4056:7;4047:6;4036:9;4032:22;3989:75;:::i;:::-;3979:85;4111:2;4096:18;;;;4083:32;;-1:-1:-1;;;;3691:430:54:o;4126:393::-;4238:6;4246;4254;4307:3;4295:9;4286:7;4282:23;4278:33;4275:53;;;4324:1;4321;4314:12;4275:53;4347:62;4401:7;4390:9;4347:62;:::i;:::-;4337:72;4456:3;4441:19;;4428:33;;-1:-1:-1;4508:3:54;4493:19;;;4480:33;;4126:393;-1:-1:-1;;;4126:393:54:o;4524:196::-;4592:20;;4652:42;4641:54;;4631:65;;4621:93;;4710:1;4707;4700:12;4621:93;4524:196;;;:::o;4725:186::-;4784:6;4837:2;4825:9;4816:7;4812:23;4808:32;4805:52;;;4853:1;4850;4843:12;4805:52;4876:29;4895:9;4876:29;:::i;4916:835::-;5121:2;5110:9;5103:21;5084:4;5153:6;5147:13;5196:6;5191:2;5180:9;5176:18;5169:34;5221:1;5231:145;5245:6;5242:1;5239:13;5231:145;;;5359:4;5343:14;;;5339:25;;5333:32;5327:3;5308:17;;;5304:27;5297:69;5260:12;5231:145;;;5394:6;5391:1;5388:13;5385:92;;;5465:1;5459:3;5450:6;5439:9;5435:22;5431:32;5424:43;5385:92;;5604:3;5534:66;5529:2;5521:6;5517:15;5513:88;5502:9;5498:104;5494:114;5486:122;;;5646:6;5639:4;5628:9;5624:20;5617:36;5701:42;5693:6;5689:55;5684:2;5673:9;5669:18;5662:83;4916:835;;;;;;:::o;5987:184::-;6039:77;6036:1;6029:88;6136:4;6133:1;6126:15;6160:4;6157:1;6150:15;6176:381;6267:4;6325:11;6312:25;6415:66;6404:8;6388:14;6384:29;6380:102;6360:18;6356:127;6346:155;;6497:1;6494;6487:12;6346:155;6518:33;;;;;6176:381;-1:-1:-1;;6176:381:54:o;6562:580::-;6639:4;6645:6;6705:11;6692:25;6795:66;6784:8;6768:14;6764:29;6760:102;6740:18;6736:127;6726:155;;6877:1;6874;6867:12;6726:155;6904:33;;6956:20;;;-1:-1:-1;6999:18:54;6988:30;;6985:50;;;7031:1;7028;7021:12;6985:50;7064:4;7052:17;;-1:-1:-1;7095:14:54;7091:27;;;7081:38;;7078:58;;;7132:1;7129;7122:12;7078:58;6562:580;;;;;:::o;7923:401::-;7990:2;7984:9;8032:3;8020:16;;8066:18;8051:34;;8087:22;;;8048:62;8045:242;;;8143:77;8140:1;8133:88;8244:4;8241:1;8234:15;8272:4;8269:1;8262:15;8045:242;8303:2;8296:22;7923:401;:::o;8329:1558::-;8421:6;8474:3;8462:9;8453:7;8449:23;8445:33;8442:53;;;8491:1;8488;8481:12;8442:53;8517:17;;:::i;:::-;8557:29;8576:9;8557:29;:::i;:::-;8550:5;8543:44;8619:38;8653:2;8642:9;8638:18;8619:38;:::i;:::-;8614:2;8607:5;8603:14;8596:62;8718:2;8707:9;8703:18;8690:32;8685:2;8678:5;8674:14;8667:56;8755:38;8789:2;8778:9;8774:18;8755:38;:::i;:::-;8750:2;8743:5;8739:14;8732:62;8827:39;8861:3;8850:9;8846:19;8827:39;:::i;:::-;8821:3;8814:5;8810:15;8803:64;8900:39;8934:3;8923:9;8919:19;8900:39;:::i;:::-;8894:3;8883:15;;8876:64;9001:3;8986:19;;;8973:33;8956:15;;;8949:58;9068:3;9053:19;;;9040:33;9023:15;;;9016:58;9093:3;9141:18;;;9128:32;9112:14;;;9105:56;9180:3;9228:18;;;9215:32;9199:14;;;9192:56;9267:3;9315:18;;;9302:32;9286:14;;;9279:56;9354:3;9402:18;;;9389:32;9373:14;;;9366:56;9441:3;9489:18;;;9476:32;9460:14;;;9453:56;9528:3;9576:18;;;9563:32;9547:14;;;9540:56;9615:3;9663:18;;;9650:32;9634:14;;;9627:56;9702:3;9750:18;;;9737:32;9721:14;;;9714:56;9789:3;9837:18;;;9824:32;9808:14;;;9801:56;;;;-1:-1:-1;8887:5:54;8329:1558;-1:-1:-1;8329:1558:54:o;9892:184::-;9944:77;9941:1;9934:88;10041:4;10038:1;10031:15;10065:4;10062:1;10055:15;10081:228;10121:7;10247:1;10179:66;10175:74;10172:1;10169:81;10164:1;10157:9;10150:17;10146:105;10143:131;;;10254:18;;:::i;:::-;-1:-1:-1;10294:9:54;;10081:228::o;10314:128::-;10354:3;10385:1;10381:6;10378:1;10375:13;10372:39;;;10391:18;;:::i;:::-;-1:-1:-1;10427:9:54;;10314:128::o;10447:184::-;10499:77;10496:1;10489:88;10596:4;10593:1;10586:15;10620:4;10617:1;10610:15;10636:274;10676:1;10702;10692:189;;10737:77;10734:1;10727:88;10838:4;10835:1;10828:15;10866:4;10863:1;10856:15;10692:189;-1:-1:-1;10895:9:54;;10636:274::o;10915:125::-;10955:4;10983:1;10980;10977:8;10974:34;;;10988:18;;:::i;:::-;-1:-1:-1;11025:9:54;;10915:125::o;12060:184::-;12130:6;12183:2;12171:9;12162:7;12158:23;12154:32;12151:52;;;12199:1;12196;12189:12;12151:52;-1:-1:-1;12222:16:54;;12060:184;-1:-1:-1;12060:184:54:o"},"gasEstimates":{"creation":{"codeDepositCost":"2581000","executionCost":"infinite","totalCost":"infinite"},"external":{"breakOrder((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32))":"infinite","cancel((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256)[])":"infinite","fulfillOrder(((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes),bytes32)":"infinite","getCounter(address)":"2569","getOrderHash((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256))":"infinite","getOrderStatus(bytes32)":"9212","incrementCounter()":"28150","information()":"infinite","repayOrder((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes32,uint256)":"infinite","shadowToken()":"infinite","validate(((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes)[])":"infinite"}},"methodIdentifiers":{"breakOrder((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32))":"a3210e7c","cancel((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256)[])":"9432cc1d","fulfillOrder(((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes),bytes32)":"be92d18e","getCounter(address)":"f07ec373","getOrderHash((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256))":"b86ae9e1","getOrderStatus(bytes32)":"46423aa7","incrementCounter()":"5b34b966","information()":"f47b7740","repayOrder((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes32,uint256)":"d9e53411","shadowToken()":"ffc5d97a","validate(((address,address,uint256,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes32),bytes)[])":"22378003"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"shadowToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNativeOfferItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrderParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderInvalidRepayParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotValidated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"CounterIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderBroken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"name\":\"OrderRepaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"breakOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"broken\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"cancel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"cancelled\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"}],\"name\":\"fulfillOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"getCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"getOrderHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"getOrderStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidated\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isCancelled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isFinalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isBroken\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidTimes\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"information\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"}],\"name\":\"repayOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"repaid\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shadowToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"periods\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"validate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"validated\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidNativeOfferItem()\":[{\"details\":\"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders.\"}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/Consideration.sol\":\"Consideration\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/conduit/lib/ConduitEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ConduitItemType {\\n    NATIVE, // unused\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\\n\",\"keccak256\":\"0x1a84850bbff4b820573334c70ee0797462f20fd8c9b86fdebeacc85ecb1963a6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitItemType } from \\\"./ConduitEnums.sol\\\";\\n\\nstruct ConduitTransfer {\\n    ConduitItemType itemType;\\n    address token;\\n    address from;\\n    address to;\\n    uint256 identifier;\\n    uint256 amount;\\n}\\n\\nstruct ConduitBatch1155Transfer {\\n    address token;\\n    address from;\\n    address to;\\n    uint256[] ids;\\n    uint256[] amounts;\\n}\\n\",\"keccak256\":\"0xe3e87c74dd79c59293e49b7236cc7befdc19886bb79af5fe53208b1772fd24f9\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title ConduitInterface\\n * @author 0age\\n * @notice ConduitInterface contains all external function interfaces, events,\\n *         and errors for conduit contracts.\\n */\\ninterface ConduitInterface {\\n    /**\\n     * @dev Revert with an error when attempting to execute transfers using a\\n     *      caller that does not have an open channel.\\n     */\\n    error ChannelClosed(address channel);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update a channel to the\\n     *      current status of that channel.\\n     */\\n    error ChannelStatusAlreadySet(address channel, bool isOpen);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute a transfer for an\\n     *      item that does not have an ERC20/721/1155 item type.\\n     */\\n    error InvalidItemType();\\n\\n    /**\\n     * @dev Revert with an error when attempting to update the status of a\\n     *      channel from a caller that is not the conduit controller.\\n     */\\n    error InvalidController();\\n\\n    /**\\n     * @dev Emit an event whenever a channel is opened or closed.\\n     *\\n     * @param channel The channel that has been updated.\\n     * @param open    A boolean indicating whether the conduit is open or not.\\n     */\\n    event ChannelUpdated(address indexed channel, bool open);\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\\n     *         open channel can call this function.\\n     *\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\\n     *         a caller with an open channel can call this function.\\n     *\\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external;\\n}\\n\",\"keccak256\":\"0x628e23ec7e820e8ac59c0999211bb022bb5c5581a5bc6bd39465d6419d7d85b5\",\"license\":\"MIT\"},\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConsiderationEventsAndErrors\\n * @author 0age\\n * @notice ConsiderationEventsAndErrors contains all events and errors.\\n */\\ninterface ConsiderationEventsAndErrors {\\n\\n    event OrderFulfilled(\\n        bytes32 orderHash,\\n        address indexed offerer,\\n        uint256 shadowId\\n    );\\n\\n    event OrderRepaid(\\n        bytes32 orderHash,\\n        uint256 payTimes,\\n        bool finalized\\n    );\\n\\n    event OrderBroken(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is successfully cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     * @param offerer   The offerer of the cancelled order.\\n     */\\n    event OrderCancelled(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is explicitly validated. Note that\\n     *      this event will not be emitted on partial fills even though they do\\n     *      validate the order as part of partial fulfillment.\\n     *\\n     * @param orderHash The hash of the validated order.\\n     * @param offerer   The offerer of the validated order.\\n     */\\n    event OrderValidated(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\\n     *\\n     * @param newCounter The new counter for the offerer.\\n     * @param offerer  The offerer in question.\\n     */\\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has\\n     *      already been fully filled.\\n     *\\n     * @param orderHash The order hash on which a fill was attempted.\\n     */\\n    error OrderAlreadyFilled(bytes32 orderHash);\\n\\n    error OrderAlreadyFinalized(bytes32 orderHash);\\n\\n    error OrderAlreadyStarted(bytes32 orderHash);\\n\\n    error OrderNotStarted(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order outside the\\n     *      specified start time and end time.\\n     */\\n    error InvalidTime();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order referencing an\\n     *      invalid conduit (i.e. one that has not been deployed).\\n     */\\n    error InvalidConduit(bytes32 conduitKey, address conduit);\\n\\n    /**\\n     * @dev Revert with an error when an order is supplied for fulfillment with\\n     *      a consideration array that is shorter than the original array.\\n     */\\n    error MissingOriginalConsiderationItems();\\n\\n    /**\\n     * @dev Revert with an error when a call to a conduit fails with revert data\\n     *      that is too expensive to return.\\n     */\\n    error InvalidCallToConduit(address conduit);\\n\\n    /**\\n     * @dev Revert with an error if a consideration amount has not been fully\\n     *      zeroed out after applying all fulfillments.\\n     *\\n     * @param orderIndex         The index of the order with the consideration\\n     *                           item with a shortfall.\\n     * @param considerationIndex The index of the consideration item on the\\n     *                           order.\\n     * @param shortfallAmount    The unfulfilled consideration amount.\\n     */\\n    error ConsiderationNotMet(\\n        uint256 orderIndex,\\n        uint256 considerationIndex,\\n        uint256 shortfallAmount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when insufficient ether is supplied as part of\\n     *      msg.value when fulfilling orders.\\n     */\\n    error InsufficientEtherSupplied();\\n\\n    /**\\n     * @dev Revert with an error when an ether transfer reverts.\\n     */\\n    error EtherTransferGenericFailure(address account, uint256 amount);\\n\\n    /**\\n     * @dev Revert with an error when a partial fill is attempted on an order\\n     *      that does not specify partial fill support in its order type.\\n     */\\n    error PartialFillsNotEnabledForOrder();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has been\\n     *      cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     */\\n    error OrderIsCancelled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order that has\\n     *      been partially filled.\\n     *\\n     * @param orderHash The hash of the partially used order.\\n     */\\n    error OrderPartiallyFilled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel an order as a caller\\n     *      other than the indicated offerer or zone.\\n     */\\n    error InvalidCanceller();\\n\\n    /**\\n     * @dev Revert with an error when supplying a fraction with a value of zero\\n     *      for the numerator or denominator, or one where the numerator exceeds\\n     *      the denominator.\\n     */\\n    error BadFraction();\\n\\n    /**\\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\\n     *      non-payable basic order route or does not supply any callvalue to a\\n     *      payable basic order route.\\n     */\\n    error InvalidMsgValue(uint256 value);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order using\\n     *      calldata not produced by default ABI encoding.\\n     */\\n    error InvalidBasicOrderParameterEncoding();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill any number of\\n     *      available orders when none are fulfillable.\\n     */\\n    error NoSpecifiedOrdersAvailable();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order with an\\n     *      offer for ETH outside of matching orders.\\n     */\\n    error InvalidNativeOfferItem();\\n\\n    error OrderNotValidated(bytes32 orderHash);\\n\\n    error OrderExpired(bytes32 orderHash);\\n\\n    error OrderNotExpired(bytes32 orderHash);\\n\\n    error OrderInvalidRepayParameters(bytes32 orderHash);\\n\\n    error InvalidOrderParameters();\\n}\\n\",\"keccak256\":\"0x71a166db3dbdc44218081f02a9fe0de3cf2d3d9680ac88ef68c0b376eb1a3e97\",\"license\":\"MIT\"},\"contracts/interfaces/EIP1271Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface EIP1271Interface {\\n    function isValidSignature(bytes32 digest, bytes calldata signature)\\n        external\\n        view\\n        returns (bytes4);\\n}\",\"keccak256\":\"0xba82a40106e4565fda2909937d8ab23dc45622fead50d439ee09994d678828e0\",\"license\":\"MIT\"},\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"},\"contracts/interfaces/SignatureVerificationErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title SignatureVerificationErrors\\n * @author 0age\\n * @notice SignatureVerificationErrors contains all errors related to signature\\n *         verification.\\n */\\ninterface SignatureVerificationErrors {\\n    /**\\n     * @dev Revert with an error when a signature that does not contain a v\\n     *      value of 27 or 28 has been supplied.\\n     *\\n     * @param v The invalid v value.\\n     */\\n    error BadSignatureV(uint8 v);\\n\\n    /**\\n     * @dev Revert with an error when the signer recovered by the supplied\\n     *      signature does not match the offerer or an allowed EIP-1271 signer\\n     *      as specified by the offerer in the event they are a contract.\\n     */\\n    error InvalidSigner();\\n\\n    /**\\n     * @dev Revert with an error when a signer cannot be recovered from the\\n     *      supplied signature.\\n     */\\n    error InvalidSignature();\\n\\n    /**\\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\\n     */\\n    error BadContractSignature();\\n}\\n\",\"keccak256\":\"0xd0f5b26469ba6cd303e5ea9b53cf6b7c25cb00918097eb59a263678b51197381\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/Assertions.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { GettersAndDerivers } from \\\"./GettersAndDerivers.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { CounterManager } from \\\"./CounterManager.sol\\\";\\n\\ncontract Assertions is\\n    GettersAndDerivers,\\n    CounterManager,\\n    TokenTransferrerErrors\\n{\\n    constructor(address conduitController)\\n        GettersAndDerivers(conduitController)\\n    {}\\n\\n    function _assertNonZeroAmount(uint256 amount) internal pure {\\n        // Revert if the supplied amount is equal to zero.\\n        if (amount == 0) {\\n            revert MissingItemAmount();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5841bbb4c48b541f692567567de5672939afc452bc940ef69a9d0726697d6414\",\"license\":\"MIT\"},\"contracts/lib/Consideration.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    OrderParameters,\\n    OrderComponents,\\n    OrderStatus,\\n    Order\\n} from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport {\\n    OrderFulfiller\\n} from \\\"./OrderFulfiller.sol\\\";\\n\\ncontract Consideration is OrderFulfiller {\\n\\n    mapping(bytes32 => OrderStatus) private _orderStatus;\\n\\n    constructor(address conduitController, address shadowToken) OrderFulfiller(conduitController, shadowToken) {}\\n\\n    function fulfillOrder(Order calldata order, bytes32 fulfillerConduitKey)\\n        external\\n        payable\\n        returns (bool fulfilled)\\n    {\\n        fulfilled = _validateAndFulfillOrder(order, fulfillerConduitKey);\\n    }\\n\\n    function repayOrder(OrderParameters calldata parameters, bytes32 fulfillerConduitKey, uint256 payTimes)\\n        external\\n        payable\\n        returns (bool repaid)\\n    {\\n        repaid = _validateAndRepayOrder(parameters, fulfillerConduitKey, payTimes);\\n    }\\n\\n    function breakOrder(OrderParameters calldata parameters)\\n        external\\n        returns (bool broken)\\n    {\\n        broken = _validateAndBreakOrder(parameters);\\n    }\\n\\n    function cancel(OrderComponents[] calldata orders)\\n        external\\n        returns (bool cancelled)\\n    {\\n        cancelled = _cancel(orders);\\n    }\\n\\n    function validate(Order[] calldata orders)\\n        external\\n        returns (bool validated)\\n    {\\n        validated = _validate(orders);\\n    }\\n\\n    function incrementCounter() external returns (uint256 newCounter) {\\n        newCounter = _incrementCounter();\\n    }\\n\\n    function getOrderHash(OrderComponents calldata order)\\n        external\\n        view\\n        returns (bytes32 orderHash)\\n    {\\n        orderHash = _deriveOrderHash(\\n            OrderParameters(\\n                order.offerer,\\n                order.token,\\n                order.identifier,\\n                order.currency,\\n                order.artist,\\n                order.platform,\\n                order.startTime,\\n                order.endTime,\\n                order.duration,\\n                order.periods,\\n                order.amount,\\n                order.ratio,\\n                order.royalty,\\n                order.fee,\\n                order.withdrawFee,\\n                order.salt,\\n                order.conduitKey\\n            ),\\n            order.counter\\n        );\\n    }\\n\\n    function getOrderStatus(bytes32 orderHash)\\n        external\\n        view\\n        returns (\\n            bool isValidated,\\n            bool isCancelled,\\n            bool isFinalized,\\n            bool isBroken,\\n            address fulfiller,\\n            uint256 startedAt,\\n            uint256 shadowId,\\n            uint256 paidTimes\\n        )\\n    {\\n        return _getOrderStatus(orderHash);\\n    }\\n\\n    function getCounter(address offerer)\\n        external\\n        view\\n        returns (uint256 counter)\\n    {\\n        counter = _getCounter(offerer);\\n    }\\n\\n    function information()\\n        external\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        return _information();\\n    }\\n}\",\"keccak256\":\"0xabf6e7795c3f34483c6de6a3c2d74769f5067becdceee9ab53a647c7cd787e04\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\ncontract ConsiderationBase {\\n    bytes32 internal immutable _NAME_HASH;\\n    bytes32 internal immutable _VERSION_HASH;\\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\\n    bytes32 internal immutable _ORDER_TYPEHASH;\\n    uint256 internal immutable _CHAIN_ID;\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n\\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n\\n    constructor(address conduitController) {\\n        (\\n            _NAME_HASH,\\n            _VERSION_HASH,\\n            _EIP_712_DOMAIN_TYPEHASH,\\n            _ORDER_TYPEHASH\\n        ) = _deriveTypehashes();\\n\\n        _CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\\n\\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\\n\\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\\n        );\\n    }\\n\\n    function _deriveDomainSeparator() internal view returns (bytes32) {\\n        return keccak256(\\n            abi.encode(\\n                _EIP_712_DOMAIN_TYPEHASH,\\n                _NAME_HASH,\\n                _VERSION_HASH,\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    function _nameString() internal pure virtual returns (string memory) {\\n        return \\\"Consideration\\\";\\n    }\\n\\n    function _deriveTypehashes()\\n        internal\\n        pure\\n        returns (\\n            bytes32 nameHash,\\n            bytes32 versionHash,\\n            bytes32 eip712DomainTypehash,\\n            bytes32 orderTypehash\\n        )\\n    {\\n        nameHash = keccak256(bytes(_nameString()));\\n\\n        versionHash = keccak256(bytes(\\\"1.0\\\"));\\n\\n        bytes memory orderComponentsTypeString = abi.encodePacked(\\n            \\\"OrderComponents(\\\",\\n                \\\"address offerer,\\\",\\n                \\\"address token,\\\",\\n                \\\"uint256 identifier,\\\",\\n                \\\"address currency,\\\",\\n                \\\"address artist,\\\",\\n                \\\"address platform,\\\",\\n                \\\"uint256 startTime,\\\",\\n                \\\"uint256 endTime,\\\",\\n                \\\"uint256 duration,\\\",\\n                \\\"uint256 periods,\\\",\\n                \\\"uint256 amount,\\\",\\n                \\\"uint256 ratio,\\\",\\n                \\\"uint256 royalty,\\\",\\n                \\\"uint256 fee,\\\",\\n                \\\"uint256 withdrawFee,\\\",\\n                \\\"uint256 salt,\\\",\\n                \\\"bytes32 conduitKey,\\\",\\n                \\\"uint256 counter\\\",\\n            \\\")\\\"\\n        );\\n\\n        eip712DomainTypehash = keccak256(\\n            abi.encodePacked(\\n                \\\"EIP712Domain(\\\",\\n                    \\\"string name,\\\",\\n                    \\\"string version,\\\",\\n                    \\\"uint256 chainId,\\\",\\n                    \\\"address verifyingContract\\\",\\n                \\\")\\\"\\n            )\\n        );\\n\\n        orderTypehash = keccak256(orderComponentsTypeString);\\n    }\\n}\",\"keccak256\":\"0x9cd33c5b8bd60301ea09c0305587414ef38f6898fa7a1e0dfb217dd26091d106\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ItemType {\\n    NATIVE,\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\",\"keccak256\":\"0x6da855eedfe9a6360ac027a0b9ecebb6eacfd09fa5b0c5f55a141e21362808ea\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nstruct OrderComponents {\\n    address offerer;\\n    address token;\\n    uint256 identifier;\\n    address currency;\\n    address artist;\\n    address platform;\\n    uint256 startTime;\\n    uint256 endTime;\\n    uint256 duration;\\n    uint256 periods;\\n    uint256 amount;\\n    uint256 ratio;\\n    uint256 royalty;\\n    uint256 fee;\\n    uint256 withdrawFee;\\n    uint256 salt;\\n    bytes32 conduitKey;\\n    uint256 counter;\\n}\\n\\nstruct OrderParameters {\\n    address offerer;    // 0x00\\n    address token;      // 0x20\\n    uint256 identifier; // 0x40\\n    address currency;   // 0x60\\n    address artist;     // 0x80\\n    address platform;   // 0xa0\\n    uint256 startTime;  // 0xc0\\n    uint256 endTime;    // 0xe0\\n    uint256 duration;   // 0x100\\n    uint256 periods;    // 0x120\\n    uint256 amount;     // 0x140\\n    uint256 ratio;      // 0x160\\n    uint256 royalty;    // 0x180\\n    uint256 fee;        // 0x1a0\\n    uint256 withdrawFee;// 0x1c0\\n    uint256 salt;       // 0x1e0\\n    bytes32 conduitKey; // 0x200\\n}\\n\\nstruct Order {\\n    OrderParameters parameters;\\n    bytes signature;\\n}\\n\\nstruct OrderStatus {\\n    bool isValidated;\\n    bool isCancelled;\\n    bool isFinalized;\\n    bool isBroken;\\n    address fulfiller;\\n    uint256 startedAt;\\n    uint256 shadowId;\\n    uint256 paidTimes;\\n}\",\"keccak256\":\"0xe0a311247127b5bbaf92415e092bec717f990ed8cfe6dec710046d755db38048\",\"license\":\"MIT\"},\"contracts/lib/CounterManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConsiderationEventsAndErrors\\n} from \\\"../interfaces/ConsiderationEventsAndErrors.sol\\\";\\n\\nimport { ReentrancyGuard } from \\\"./ReentrancyGuard.sol\\\";\\n\\ncontract CounterManager is ConsiderationEventsAndErrors, ReentrancyGuard {\\n\\n    mapping(address => uint256) private _counters;\\n\\n    function _incrementCounter() internal returns (uint256 newCounter) {\\n        _assertNonReentrant();\\n\\n        unchecked {\\n            newCounter = ++_counters[msg.sender];\\n        }\\n\\n        emit CounterIncremented(newCounter, msg.sender);\\n    }\\n\\n    function _getCounter(address offerer)\\n        internal\\n        view\\n        returns (uint256 currentCounter)\\n    {\\n        currentCounter = _counters[offerer];\\n    }\\n}\\n\",\"keccak256\":\"0xf07f27dab21fe6607342bc513064c81f10729cf4b9f41e6173ae66d6a4b7a25a\",\"license\":\"MIT\"},\"contracts/lib/Executor.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport { ConduitItemType } from \\\"../conduit/lib/ConduitEnums.sol\\\";\\n\\nimport { ItemType } from \\\"./ConsiderationEnums.sol\\\";\\n\\nimport { Verifiers } from \\\"./Verifiers.sol\\\";\\n\\nimport { TokenTransferrer } from \\\"./TokenTransferrer.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title Executor\\n * @author 0age\\n * @notice Executor contains functions related to processing executions (i.e.\\n *         transferring items, either directly or via conduits).\\n */\\ncontract Executor is Verifiers, TokenTransferrer {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Verifiers(conduitController) {}\\n\\n    /**\\n     * @dev Internal function to transfer an individual ERC721 or ERC1155 item\\n     *      from a given originator to a given recipient. The accumulator will\\n     *      be bypassed, meaning that this function should be utilized in cases\\n     *      where multiple item transfers can be accumulated into a single\\n     *      conduit call. Sufficient approvals must be set, either on the\\n     *      respective conduit or on this contract itself.\\n     *\\n     * @param itemType   The type of item to transfer, either ERC721 or ERC1155.\\n     * @param token      The token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     * @param amount     The amount to transfer.\\n     * @param conduitKey A bytes32 value indicating what corresponding conduit,\\n     *                   if any, to source token approvals from. The zero hash\\n     *                   signifies that no conduit should be used, with direct\\n     *                   approvals set on this contract.\\n     */\\n    function _transferIndividual721Or1155Item(\\n        ItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Determine if the transfer is to be performed via a conduit.\\n        if (conduitKey != bytes32(0)) {\\n            // Use free memory pointer as calldata offset for the conduit call.\\n            uint256 callDataOffset;\\n\\n            // Utilize assembly to place each argument in free memory.\\n            assembly {\\n                // Retrieve the free memory pointer and use it as the offset.\\n                callDataOffset := mload(FreeMemoryPointerSlot)\\n\\n                // Write ConduitInterface.execute.selector to memory.\\n                mstore(callDataOffset, Conduit_execute_signature)\\n\\n                // Write the offset to the ConduitTransfer array in memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_offset_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_ptr\\n                )\\n\\n                // Write the length of the ConduitTransfer array to memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_length_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_length\\n                )\\n\\n                // Write the item type to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferItemType_ptr),\\n                    itemType\\n                )\\n\\n                // Write the token to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferToken_ptr),\\n                    token\\n                )\\n\\n                // Write the transfer source to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferFrom_ptr),\\n                    from\\n                )\\n\\n                // Write the transfer recipient to memory.\\n                mstore(add(callDataOffset, Conduit_execute_transferTo_ptr), to)\\n\\n                // Write the token identifier to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferIdentifier_ptr),\\n                    identifier\\n                )\\n\\n                // Write the transfer amount to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferAmount_ptr),\\n                    amount\\n                )\\n            }\\n\\n            // Perform the call to the conduit.\\n            _callConduitUsingOffsets(\\n                conduitKey,\\n                callDataOffset,\\n                OneConduitExecute_size\\n            );\\n        } else {\\n            // Otherwise, determine whether it is an ERC721 or ERC1155 item.\\n            if (itemType == ItemType.ERC721) {\\n                // Ensure that exactly one 721 item is being transferred.\\n                if (amount != 1) {\\n                    revert InvalidERC721TransferAmount();\\n                }\\n\\n                // Perform transfer via the token contract directly.\\n                _performERC721Transfer(token, from, to, identifier);\\n            } else {\\n                // Perform transfer via the token contract directly.\\n                _performERC1155Transfer(token, from, to, identifier, amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer Ether or other native tokens to a\\n     *      given recipient.\\n     *\\n     * @param to     The recipient of the transfer.\\n     * @param amount The amount to transfer.\\n     */\\n    function _transferEth(address payable to, uint256 amount) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Declare a variable indicating whether the call was successful or not.\\n        bool success;\\n\\n        assembly {\\n            // Transfer the ETH and store if it succeeded or not.\\n            success := call(gas(), to, amount, 0, 0, 0, 0)\\n        }\\n\\n        // If the call fails...\\n        if (!success) {\\n            // Revert and pass the revert reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error message.\\n            revert EtherTransferGenericFailure(to, amount);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient using a given conduit if applicable. Sufficient\\n     *      approvals must be set on this contract or on a respective conduit.\\n     *\\n     * @param token       The ERC20 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC20(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform the token transfer directly.\\n            _performERC20Transfer(token, from, to, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC20,\\n                token,\\n                from,\\n                to,\\n                uint256(0),\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer a single ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set,\\n     *      either on the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC721 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer (must be 1 for ERC721).\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC721(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Ensure that exactly one 721 item is being transferred.\\n            if (amount != 1) {\\n                revert InvalidERC721TransferAmount();\\n            }\\n\\n            // Perform transfer via the token contract directly.\\n            _performERC721Transfer(token, from, to, identifier);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC721,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set, either on\\n     *      the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC1155 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The id to transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC1155(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform transfer via the token contract directly.\\n            _performERC1155Transfer(token, from, to, identifier, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC1155,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\") and the supplied conduit key does not match the key held\\n     *      by the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     */\\n    function _triggerIfArmedAndNotAccumulatable(\\n        bytes memory accumulator,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call if the set key does not match the supplied key.\\n        if (accumulatorConduitKey != conduitKey) {\\n            _triggerIfArmed(accumulator);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\").\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _triggerIfArmed(bytes memory accumulator) internal {\\n        // Exit if the accumulator is not \\\"armed\\\".\\n        if (accumulator.length != AccumulatorArmed) {\\n            return;\\n        }\\n\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call.\\n        _trigger(accumulatorConduitKey, accumulator);\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit corresponding to\\n     *      a given conduit key, supplying all accumulated item transfers. The\\n     *      accumulator will be \\\"disarmed\\\" and reset in the process.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _trigger(bytes32 conduitKey, bytes memory accumulator) internal {\\n        // Declare variables for offset in memory & size of calldata to conduit.\\n        uint256 callDataOffset;\\n        uint256 callDataSize;\\n\\n        // Call the conduit with all the accumulated transfers.\\n        assembly {\\n            // Call begins at third word; the first is length or \\\"armed\\\" status,\\n            // and the second is the current conduit key.\\n            callDataOffset := add(accumulator, TwoWords)\\n\\n            // 68 + items * 192\\n            callDataSize := add(\\n                Accumulator_array_offset_ptr,\\n                mul(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    Conduit_transferItem_size\\n                )\\n            )\\n        }\\n\\n        // Call conduit derived from conduit key & supply accumulated transfers.\\n        _callConduitUsingOffsets(conduitKey, callDataOffset, callDataSize);\\n\\n        // Reset accumulator length to signal that it is now \\\"disarmed\\\".\\n        assembly {\\n            mstore(accumulator, AccumulatorDisarmed)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a call to the conduit corresponding to\\n     *      a given conduit key based on the offset and size of the calldata in\\n     *      question in memory.\\n     *\\n     * @param conduitKey     A bytes32 value indicating what corresponding\\n     *                       conduit, if any, to source token approvals from.\\n     *                       The zero hash signifies that no conduit should be\\n     *                       used, with direct approvals set on this contract.\\n     * @param callDataOffset The memory pointer where calldata is contained.\\n     * @param callDataSize   The size of calldata in memory.\\n     */\\n    function _callConduitUsingOffsets(\\n        bytes32 conduitKey,\\n        uint256 callDataOffset,\\n        uint256 callDataSize\\n    ) internal {\\n        // Derive the address of the conduit using the conduit key.\\n        address conduit = _deriveConduit(conduitKey);\\n\\n        bool success;\\n        bytes4 result;\\n\\n        // call the conduit.\\n        assembly {\\n            // Ensure first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Perform call, placing first word of return data in scratch space.\\n            success := call(\\n                gas(),\\n                conduit,\\n                0,\\n                callDataOffset,\\n                callDataSize,\\n                0,\\n                OneWord\\n            )\\n\\n            // Take value from scratch space and place it on the stack.\\n            result := mload(0)\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Pass along whatever revert reason was given by the conduit.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error.\\n            revert InvalidCallToConduit(conduit);\\n        }\\n\\n        // Ensure result was extracted and matches EIP-1271 magic value.\\n        if (result != ConduitInterface.execute.selector) {\\n            revert InvalidConduit(conduitKey, conduit);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to retrieve the current conduit key set for\\n     *      the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     *\\n     * @return accumulatorConduitKey The conduit key currently set for the\\n     *                               accumulator.\\n     */\\n    function _getAccumulatorConduitKey(bytes memory accumulator)\\n        internal\\n        pure\\n        returns (bytes32 accumulatorConduitKey)\\n    {\\n        // Retrieve the current conduit key from the accumulator.\\n        assembly {\\n            accumulatorConduitKey := mload(\\n                add(accumulator, Accumulator_conduitKey_ptr)\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to place an item transfer into an accumulator\\n     *      that collects a series of transfers to execute against a given\\n     *      conduit in a single call.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param itemType    The type of the item to transfer.\\n     * @param token       The token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer.\\n     * @param amount      The amount to transfer.\\n     */\\n    function _insert(\\n        bytes32 conduitKey,\\n        bytes memory accumulator,\\n        ConduitItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal pure {\\n        uint256 elements;\\n        // \\\"Arm\\\" and prime accumulator if it's not already armed. The sentinel\\n        // value is held in the length of the accumulator array.\\n        if (accumulator.length == AccumulatorDisarmed) {\\n            elements = 1;\\n            bytes4 selector = ConduitInterface.execute.selector;\\n            assembly {\\n                mstore(accumulator, AccumulatorArmed) // \\\"arm\\\" the accumulator.\\n                mstore(add(accumulator, Accumulator_conduitKey_ptr), conduitKey)\\n                mstore(add(accumulator, Accumulator_selector_ptr), selector)\\n                mstore(\\n                    add(accumulator, Accumulator_array_offset_ptr),\\n                    Accumulator_array_offset\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        } else {\\n            // Otherwise, increase the number of elements by one.\\n            assembly {\\n                elements := add(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    1\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        }\\n\\n        // Insert the item.\\n        assembly {\\n            let itemPointer := sub(\\n                add(accumulator, mul(elements, Conduit_transferItem_size)),\\n                Accumulator_itemSizeOffsetDifference\\n            )\\n            mstore(itemPointer, itemType)\\n            mstore(add(itemPointer, Conduit_transferItem_token_ptr), token)\\n            mstore(add(itemPointer, Conduit_transferItem_from_ptr), from)\\n            mstore(add(itemPointer, Conduit_transferItem_to_ptr), to)\\n            mstore(\\n                add(itemPointer, Conduit_transferItem_identifier_ptr),\\n                identifier\\n            )\\n            mstore(add(itemPointer, Conduit_transferItem_amount_ptr), amount)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4b3165cc66037d31d39c5ca2468c46202765bd3831c91a3b33e9c03a59b93a5d\",\"license\":\"MIT\"},\"contracts/lib/GettersAndDerivers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderParameters } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { ConsiderationBase } from \\\"./ConsiderationBase.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract GettersAndDerivers is ConsiderationBase {\\n\\n    constructor(address conduitController)\\n        ConsiderationBase(conduitController)\\n    {}\\n\\n    function _deriveOrderHash(\\n        OrderParameters memory orderParameters,\\n        uint256 counter\\n    ) internal view returns (bytes32 orderHash) {\\n        bytes32 typeHash = _ORDER_TYPEHASH;\\n\\n        assembly {\\n            let typeHashPtr := sub(orderParameters, OneWord)\\n\\n            let previousValue := mload(typeHashPtr)\\n\\n            mstore(typeHashPtr, typeHash)\\n\\n            let counterPtr := add(\\n                orderParameters,\\n                OrderParameters_counter_offset\\n            )\\n\\n            let counterDataPtr := mload(counterPtr)\\n\\n            mstore(counterPtr, counter)\\n\\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\\n\\n            mstore(typeHashPtr, previousValue)\\n\\n            mstore(counterPtr, counterDataPtr)\\n        }\\n    }\\n\\n    function _deriveConduit(bytes32 conduitKey)\\n        internal\\n        view\\n        returns (address conduit)\\n    {\\n        // Read conduit controller address from runtime and place on the stack.\\n        address conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Read conduit creation code hash from runtime and place on the stack.\\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\\n\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Retrieve the free memory pointer; it will be replaced afterwards.\\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Place the control character and the conduit controller in scratch\\n            // space; note that eleven bytes at the beginning are left unused.\\n            mstore(0, or(MaskOverByteTwelve, conduitController))\\n\\n            // Place the conduit key in the next region of scratch space.\\n            mstore(OneWord, conduitKey)\\n\\n            // Place conduit creation code hash in free memory pointer location.\\n            mstore(TwoWords, conduitCreationCodeHash)\\n\\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\\n            conduit := and(\\n                // Hash the relevant region.\\n                keccak256(\\n                    // The region starts at memory pointer 11.\\n                    Create2AddressDerivation_ptr,\\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\\n                    Create2AddressDerivation_length\\n                ),\\n                // The address equals the last twenty bytes of the hash.\\n                MaskOverLastTwentyBytes\\n            )\\n\\n            // Restore the free memory pointer.\\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to get the EIP-712 domain separator. If the\\n     *      chainId matches the chainId set on deployment, the cached domain\\n     *      separator will be returned; otherwise, it will be derived from\\n     *      scratch.\\n     *\\n     * @return The domain separator.\\n     */\\n    function _domainSeparator() internal view returns (bytes32) {\\n        // prettier-ignore\\n        return block.chainid == _CHAIN_ID\\n            ? _DOMAIN_SEPARATOR\\n            : _deriveDomainSeparator();\\n    }\\n\\n    /**\\n     * @dev Internal view function to retrieve configuration information for\\n     *      this contract.\\n     *\\n     * @return version           The contract version.\\n     * @return domainSeparator   The domain separator for this contract.\\n     * @return conduitController The conduit Controller set for this contract.\\n     */\\n    function _information()\\n        internal\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        // Derive the domain separator.\\n        domainSeparator = _domainSeparator();\\n\\n        // Declare variable as immutables cannot be accessed within assembly.\\n        conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Allocate a string with the intended length.\\n        version = new string(Version_length);\\n\\n        // Set the version as data on the newly allocated string.\\n        assembly {\\n            mstore(add(version, OneWord), shl(Version_shift, Version))\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to efficiently derive an digest to sign for\\n     *      an order in accordance with EIP-712.\\n     *\\n     * @param domainSeparator The domain separator.\\n     * @param orderHash       The order hash.\\n     *\\n     * @return value The hash.\\n     */\\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\\n        internal\\n        pure\\n        returns (bytes32 value)\\n    {\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Place the EIP-712 prefix at the start of scratch space.\\n            mstore(0, EIP_712_PREFIX)\\n\\n            // Place the domain separator in the next region of scratch space.\\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\\n\\n            // Place the order hash in scratch space, spilling into the first\\n            // two bytes of the free memory pointer \\u2014 this should never be set\\n            // as memory cannot be expanded to that size, and will be zeroed out\\n            // after the hash is performed.\\n            mstore(EIP712_OrderHash_offset, orderHash)\\n\\n            // Hash the relevant region (65 bytes).\\n            value := keccak256(0, EIP712_DigestPayload_size)\\n\\n            // Clear out the dirtied bits in the memory pointer.\\n            mstore(EIP712_OrderHash_offset, 0)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5c0866572e7dfe34edad443a82e35851c4d3631cc9c5957994d68e41516dd6c4\",\"license\":\"MIT\"},\"contracts/lib/LowLevelHelpers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title LowLevelHelpers\\n * @author 0age\\n * @notice LowLevelHelpers contains logic for performing various low-level\\n *         operations.\\n */\\ncontract LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to staticcall an arbitrary target with given\\n     *      calldata. Note that no data is written to memory and no contract\\n     *      size check is performed.\\n     *\\n     * @param target   The account to staticcall.\\n     * @param callData The calldata to supply when staticcalling the target.\\n     *\\n     * @return success The status of the staticcall to the target.\\n     */\\n    function _staticcall(address target, bytes memory callData)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        assembly {\\n            // Perform the staticcall.\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(callData, OneWord),\\n                mload(callData),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to revert and pass along the revert reason if\\n     *      data was returned by the last call and that the size of that data\\n     *      does not exceed the currently allocated memory size.\\n     */\\n    function _revertWithReasonIfOneIsReturned() internal view {\\n        assembly {\\n            // If it returned a message, bubble it up as long as sufficient gas\\n            // remains to do so:\\n            if returndatasize() {\\n                // Ensure that sufficient gas is available to copy returndata\\n                // while expanding memory where necessary. Start by computing\\n                // the word size of returndata and allocated memory.\\n                let returnDataWords := div(\\n                    add(returndatasize(), AlmostOneWord),\\n                    OneWord\\n                )\\n\\n                // Note: use the free memory pointer in place of msize() to work\\n                // around a Yul warning that prevents accessing msize directly\\n                // when the IR pipeline is activated.\\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\\n\\n                // Next, compute the cost of the returndatacopy.\\n                let cost := mul(CostPerWord, returnDataWords)\\n\\n                // Then, compute cost of new memory allocation.\\n                if gt(returnDataWords, msizeWords) {\\n                    cost := add(\\n                        cost,\\n                        add(\\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\\n                            div(\\n                                sub(\\n                                    mul(returnDataWords, returnDataWords),\\n                                    mul(msizeWords, msizeWords)\\n                                ),\\n                                MemoryExpansionCoefficient\\n                            )\\n                        )\\n                    )\\n                }\\n\\n                // Finally, add a small constant and compare to gas remaining;\\n                // bubble up the revert data if enough gas is still available.\\n                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                    // Copy returndata to memory; overwrite existing memory.\\n                    returndatacopy(0, 0, returndatasize())\\n\\n                    // Revert, specifying memory region with copied returndata.\\n                    revert(0, returndatasize())\\n                }\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to determine if the first word of returndata\\n     *      matches an expected magic value.\\n     *\\n     * @param expected The expected magic value.\\n     *\\n     * @return A boolean indicating whether the expected value matches the one\\n     *         located in the first word of returndata.\\n     */\\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\\n        // Declare a variable for the value held by the return data buffer.\\n        bytes4 result;\\n\\n        // Utilize assembly in order to read directly from returndata buffer.\\n        assembly {\\n            // Only put result on stack if return data is exactly one word.\\n            if eq(returndatasize(), OneWord) {\\n                // Copy the word directly from return data into scratch space.\\n                returndatacopy(0, 0, OneWord)\\n\\n                // Take value from scratch space and place it on the stack.\\n                result := mload(0)\\n            }\\n        }\\n\\n        // Return a boolean indicating whether expected and located value match.\\n        return result != expected;\\n    }\\n}\\n\",\"keccak256\":\"0x57700a6f8f18d1cdfc8492724ef3b9f89aa143382f13794489df70c1f3fc027c\",\"license\":\"MIT\"},\"contracts/lib/OrderFulfiller.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport {\\n    ItemType\\n} from \\\"./ConsiderationEnums.sol\\\";\\n\\nimport {\\n    Order,\\n    OrderParameters\\n} from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { OrderValidator } from \\\"./OrderValidator.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract OrderFulfiller is OrderValidator {\\n\\n    struct Dispatch {\\n        uint256 payment;\\n        uint256 toOfferer;\\n        uint256 toPlatform;\\n        uint256 toArtist;\\n    }\\n\\n    constructor(address conduitController, address shadowToken) OrderValidator(conduitController, shadowToken) {}\\n\\n    function _calculateDispatch(\\n        OrderParameters calldata params,\\n        uint256 payTimes,\\n        bool isFirst,\\n        bool isFinalize\\n    )\\n        internal\\n        pure\\n        returns (Dispatch memory ret)\\n    {\\n        uint256 royalty;\\n        uint256 paidTimes = params.periods - payTimes;\\n\\n        ret.toPlatform = params.withdrawFee;\\n        if (isFinalize) {\\n            royalty = params.royalty - paidTimes * (params.royalty / params.periods);\\n            ret.payment = params.amount - paidTimes* (params.amount / params.periods);\\n            ret.toOfferer = params.amount - (params.amount / params.periods) * params.ratio / 10000 * paidTimes - ret.toPlatform - royalty;\\n            ret.toArtist = params.royalty;\\n        } else {\\n            royalty = payTimes * (params.royalty / params.periods);\\n            ret.payment = payTimes * (params.amount / params.periods);            \\n            ret.toOfferer = ret.payment * params.ratio / 10000 - ret.toPlatform - royalty;\\n            if (isFirst) {\\n                ret.payment += params.fee;\\n                ret.toPlatform += params.fee;\\n            }\\n        }\\n    }\\n\\n    function _validateAndFulfillOrder(Order calldata order, bytes32 fulfillerConduitKey)\\n        internal\\n        returns (bool)\\n    {\\n        (\\n            bytes32 orderHash,\\n            bool valid,\\n            uint256 shadowId\\n        ) = _validateOrderAndUpdateStatus(\\n            order,\\n            true\\n        );\\n\\n        if (!valid) {\\n            return false;\\n        }\\n\\n        OrderParameters calldata orderParameters = order.parameters;\\n        Dispatch memory dispatch = _calculateDispatch(orderParameters, 1, true, false);\\n\\n        if (orderParameters.currency == address(0)) {\\n            _transferIndividual721Or1155Item(\\n                ItemType.ERC721,\\n                orderParameters.token,\\n                orderParameters.offerer,\\n                address(this),\\n                orderParameters.identifier,\\n                1,\\n                orderParameters.conduitKey\\n            );\\n\\n            _transferEthAndFinalize(orderParameters, dispatch);\\n        } else {\\n            bytes memory accumulator = new bytes(AccumulatorDisarmed);\\n            _transferERC721(\\n                orderParameters.token,\\n                orderParameters.offerer,\\n                address(this),\\n                orderParameters.identifier,\\n                1,\\n                orderParameters.conduitKey,\\n                accumulator\\n            );\\n\\n            _transferERC20AndFinalize(\\n                orderParameters,\\n                dispatch,\\n                fulfillerConduitKey,\\n                accumulator\\n            );\\n        }\\n\\n        emit OrderFulfilled(\\n            orderHash,\\n            orderParameters.offerer,\\n            shadowId\\n        );\\n\\n        return true;\\n    }\\n\\n    function _validateAndRepayOrder(OrderParameters calldata parameters, bytes32 fulfillerConduitKey, uint256 payTimes)\\n        internal\\n        returns (bool)\\n    {\\n        bytes32 orderHash;\\n        address fulfiller;\\n        bool isFinalized;\\n        {\\n            bool valid;\\n            (\\n                orderHash,\\n                fulfiller,\\n                valid,\\n                isFinalized\\n            ) = _validateOrderAndUpdateRepayStatus(\\n                parameters,\\n                payTimes,\\n                true\\n            );\\n\\n            if (!valid) {\\n                return false;\\n            }\\n        }\\n\\n        Dispatch memory dispatch = _calculateDispatch(parameters, payTimes, false, isFinalized);\\n\\n        if (parameters.currency == address(0)) {\\n            _transferEthAndFinalize(parameters, dispatch);\\n        } else {\\n            bytes memory accumulator = new bytes(AccumulatorDisarmed);\\n            _transferERC20AndFinalize(\\n                parameters,\\n                dispatch,\\n                fulfillerConduitKey,\\n                accumulator\\n            );\\n        }\\n\\n        if (isFinalized) {\\n            _transferIndividual721Or1155Item(\\n                ItemType.ERC721,\\n                parameters.token,\\n                address(this),\\n                fulfiller,\\n                parameters.identifier,\\n                1,\\n                bytes32(0)\\n            );\\n        }\\n\\n        emit OrderRepaid(\\n            orderHash,\\n            payTimes,\\n            isFinalized\\n        );\\n\\n        return true;\\n    }\\n\\n    function _validateAndBreakOrder(OrderParameters calldata parameters)\\n        internal\\n        returns (bool)\\n    {\\n        (\\n            bytes32 orderHash,\\n            uint256 paidTimes,\\n            bool valid\\n        ) = _validateOrderAndUpdateBreakStatus(\\n            parameters,\\n            true\\n        );\\n\\n        if (!valid) {\\n            return false;\\n        }\\n\\n        _transferIndividual721Or1155Item(\\n            ItemType.ERC721,\\n            parameters.token,\\n            address(this),\\n            parameters.offerer,\\n            parameters.identifier,\\n            1,\\n            bytes32(0)\\n        );\\n\\n        if (parameters.currency == address(0)) {\\n            _transferEthBroken(parameters, paidTimes);\\n        } else {\\n            _transferERC20Broken(\\n                parameters,\\n                paidTimes\\n            );\\n        }\\n\\n        emit OrderBroken(\\n            orderHash,\\n            parameters.offerer\\n        );\\n\\n        return true;\\n    }\\n\\n    function _transferEthBroken(\\n        OrderParameters calldata orderParameters,\\n        uint256 paidTimes\\n    ) internal {\\n        _transferEth(\\n            payable(orderParameters.offerer),\\n            orderParameters.royalty / orderParameters.periods * paidTimes\\n        );\\n        uint256 toPlatform = orderParameters.amount / orderParameters.periods * paidTimes;\\n        toPlatform = toPlatform - toPlatform * orderParameters.ratio / 10000;\\n        _transferEth(\\n            payable(orderParameters.platform),\\n            toPlatform\\n        );\\n    }\\n\\n    function _transferERC20Broken(\\n        OrderParameters calldata parameters,\\n        uint256 paidTimes\\n    ) internal {\\n        _performSelfERC20Transfer(parameters.currency, parameters.offerer, parameters.royalty / parameters.periods * paidTimes);\\n\\n        uint256 toPlatform = parameters.amount / parameters.periods * paidTimes;\\n        toPlatform = toPlatform - toPlatform * parameters.ratio / 10000;\\n        _performSelfERC20Transfer(parameters.currency, parameters.platform, toPlatform);\\n    }\\n\\n    function _transferEthAndFinalize(\\n        OrderParameters calldata orderParameters,\\n        Dispatch memory dispatch\\n    ) internal {\\n        uint256 etherRemaining = msg.value;\\n\\n        if (dispatch.payment > etherRemaining) {\\n            revert InsufficientEtherSupplied();\\n        }\\n\\n        _transferEth(\\n            payable(orderParameters.offerer),\\n            dispatch.toOfferer\\n        );\\n\\n        _transferEth(\\n            payable(orderParameters.platform),\\n            dispatch.toPlatform\\n        );\\n\\n        if (dispatch.toArtist > 0) {\\n            _transferEth(\\n                payable(orderParameters.artist),\\n                dispatch.toArtist\\n            );\\n        }\\n\\n        etherRemaining -= dispatch.payment;\\n\\n        if (etherRemaining > 0) {\\n            unchecked {\\n                _transferEth(payable(msg.sender), etherRemaining);\\n            }\\n        }\\n    }\\n\\n    function _transferERC20AndFinalize(\\n        OrderParameters calldata parameters,\\n        Dispatch memory dispatch,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        address from = msg.sender;\\n        address token = parameters.currency;\\n\\n        _transferERC20(\\n            token,\\n            from,\\n            parameters.platform,\\n            dispatch.toPlatform,\\n            conduitKey,\\n            accumulator\\n        );\\n\\n        if (dispatch.toArtist > 0) {\\n            _transferERC20(\\n                token,\\n                from,\\n                parameters.artist,\\n                dispatch.toArtist,\\n                conduitKey,\\n                accumulator\\n            );\\n        }\\n\\n        uint256 left = dispatch.payment - dispatch.toPlatform - dispatch.toArtist;\\n        if (left >= dispatch.toOfferer) {\\n            _transferERC20(\\n                token,\\n                from,\\n                parameters.offerer,\\n                dispatch.toOfferer,\\n                conduitKey,\\n                accumulator\\n            );\\n            left -= dispatch.toOfferer;\\n            if (left > 0) {\\n                _transferERC20(\\n                    token,\\n                    from,\\n                    address(this),\\n                    left,\\n                    conduitKey,\\n                    accumulator\\n                );\\n            }\\n            _triggerIfArmed(accumulator);\\n        } else {\\n            _transferERC20(\\n                token,\\n                from,\\n                parameters.offerer,\\n                left,\\n                conduitKey,\\n                accumulator\\n            );\\n            _triggerIfArmed(accumulator);\\n\\n            _performSelfERC20Transfer(token, parameters.offerer, dispatch.toOfferer - left);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcc6c4cf70611dcb3ddb97629ce2d8650466b0d48a8889efbc8baf328535f523d\",\"license\":\"MIT\"},\"contracts/lib/OrderValidator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    OrderParameters,\\n    Order,\\n    OrderComponents,\\n    OrderStatus\\n} from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\nimport { Executor } from \\\"./Executor.sol\\\";\\nimport { Shadow } from \\\"./Shadow.sol\\\";\\n\\ncontract OrderValidator is Executor, Shadow {\\n\\n    mapping(bytes32 => OrderStatus) private _orderStatus;\\n\\n    constructor(address conduitController, address shadowToken) Executor(conduitController) Shadow(shadowToken) {}\\n\\n    function _validateOrderAndUpdateStatus(\\n        Order calldata order,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            bool valid,\\n            uint256 shadowId\\n        )\\n    {\\n        OrderParameters calldata orderParameters = order.parameters;\\n        if (\\n            !_verifyTime(\\n                orderParameters.startTime,\\n                orderParameters.endTime,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (bytes32(0), false, 0);\\n        }\\n\\n        if (orderParameters.periods < 2) {\\n            if (revertOnInvalid) {\\n                revert InvalidOrderParameters();\\n            }\\n            return (bytes32(0), false, 0);\\n        }\\n\\n        orderHash = _deriveOrderHash(\\n            orderParameters,\\n            _getCounter(orderParameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                true,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, false, 0);\\n        }\\n\\n        if (!orderStatus.isValidated) {\\n            _verifySignature(\\n                orderParameters.offerer,\\n                orderHash,\\n                order.signature\\n            );\\n        }\\n\\n        shadowId = _mintToken(\\n            msg.sender,\\n            orderParameters.token,\\n            orderParameters.identifier,\\n            orderParameters.duration\\n        );\\n\\n        orderStatus.isValidated = true;\\n        orderStatus.isCancelled = false;\\n        orderStatus.isBroken = false;\\n        orderStatus.fulfiller = msg.sender;\\n        orderStatus.startedAt = block.timestamp;\\n        orderStatus.shadowId = shadowId;\\n        orderStatus.paidTimes = 1;\\n\\n        valid = true;\\n    }\\n\\n    function _validateOrderAndUpdateRepayStatus(\\n        OrderParameters calldata parameters,\\n        uint256 payTimes,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            address fulfiller,\\n            bool valid,\\n            bool isFinalized\\n        )\\n    {\\n        orderHash = _deriveOrderHash(\\n            parameters,\\n            _getCounter(parameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        if (!orderStatus.isValidated) {\\n            if (revertOnInvalid) {\\n                revert OrderNotValidated(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                false,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (orderStatus.paidTimes + payTimes > parameters.periods || payTimes < 1) {\\n            if (revertOnInvalid) {\\n                revert OrderInvalidRepayParameters(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (orderStatus.startedAt + orderStatus.paidTimes * parameters.duration < block.timestamp) {\\n            if (revertOnInvalid) {\\n                revert OrderExpired(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        orderStatus.paidTimes += payTimes;\\n        if (orderStatus.paidTimes == parameters.periods) {\\n            orderStatus.isFinalized = true;\\n            isFinalized = true;\\n            _burnToken(orderStatus.shadowId);\\n        } else {\\n            _extendToken(\\n                orderStatus.fulfiller,\\n                orderStatus.shadowId,\\n                orderStatus.startedAt + orderStatus.paidTimes * parameters.duration\\n            );\\n        }\\n\\n        valid = true;\\n        fulfiller = orderStatus.fulfiller;\\n    }\\n\\n    function _validateOrderAndUpdateBreakStatus(\\n        OrderParameters calldata parameters,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            uint256 paidTimes,\\n            bool valid\\n        )\\n    {\\n        orderHash = _deriveOrderHash(\\n            parameters,\\n            _getCounter(parameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        if (!orderStatus.isValidated) {\\n            if (revertOnInvalid) {\\n                revert OrderNotValidated(orderHash);\\n            }\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        paidTimes = orderStatus.paidTimes;\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                false,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        if (orderStatus.startedAt + paidTimes * parameters.duration > block.timestamp) {\\n            if (revertOnInvalid) {\\n                revert OrderNotExpired(orderHash);\\n            }\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        _burnToken(orderStatus.shadowId);\\n\\n        orderStatus.isFinalized = true;\\n        orderStatus.isBroken = true;\\n        valid = true;\\n    }\\n\\n    function _cancel(OrderComponents[] calldata orders)\\n        internal\\n        returns (bool cancelled)\\n    {\\n        // Ensure that the reentrancy guard is not currently set.\\n        _assertNonReentrant();\\n\\n        // Declare variables outside of the loop.\\n        OrderStatus storage orderStatus;\\n        address offerer;\\n\\n        // Skip overflow check as for loop is indexed starting at zero.\\n        unchecked {\\n            // Read length of the orders array from memory and place on stack.\\n            uint256 totalOrders = orders.length;\\n\\n            // Iterate over each order.\\n            for (uint256 i = 0; i < totalOrders; ) {\\n                // Retrieve the order.\\n                OrderComponents calldata order = orders[i];\\n\\n                offerer = order.offerer;\\n\\n                if (msg.sender != offerer) {\\n                    revert InvalidCanceller();\\n                }\\n\\n                // Derive order hash using the order parameters and the counter.\\n                bytes32 orderHash = _deriveOrderHash(\\n                    OrderParameters(\\n                        offerer,\\n                        order.token,\\n                        order.identifier,\\n                        order.currency,\\n                        order.artist,\\n                        order.platform,\\n                        order.startTime,\\n                        order.endTime,\\n                        order.duration,\\n                        order.periods,\\n                        order.amount,\\n                        order.ratio,\\n                        order.royalty,\\n                        order.fee,\\n                        order.withdrawFee,\\n                        order.salt,\\n                        order.conduitKey\\n                    ),\\n                    order.counter\\n                );\\n\\n                // Retrieve the order status using the derived order hash.\\n                orderStatus = _orderStatus[orderHash];\\n\\n                if (orderStatus.startedAt > 0) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n\\n                // Update the order status as not valid and cancelled.\\n                orderStatus.isValidated = false;\\n                orderStatus.isCancelled = true;\\n\\n                // Emit an event signifying that the order has been cancelled.\\n                emit OrderCancelled(orderHash, offerer);\\n\\n                // Increment counter inside body of loop for gas efficiency.\\n                ++i;\\n            }\\n        }\\n\\n        // Return a boolean indicating that orders were successfully cancelled.\\n        cancelled = true;\\n    }\\n\\n    function _validate(Order[] calldata orders)\\n        internal\\n        returns (bool validated)\\n    {\\n        // Ensure that the reentrancy guard is not currently set.\\n        _assertNonReentrant();\\n\\n        // Declare variables outside of the loop.\\n        OrderStatus storage orderStatus;\\n        bytes32 orderHash;\\n        address offerer;\\n\\n        // Skip overflow check as for loop is indexed starting at zero.\\n        unchecked {\\n            // Read length of the orders array from memory and place on stack.\\n            uint256 totalOrders = orders.length;\\n\\n            // Iterate over each order.\\n            for (uint256 i = 0; i < totalOrders; ) {\\n                // Retrieve the order.\\n                Order calldata order = orders[i];\\n\\n                // Retrieve the order parameters.\\n                OrderParameters calldata orderParameters = order.parameters;\\n\\n                // Move offerer from memory to the stack.\\n                offerer = orderParameters.offerer;\\n\\n                // Get current counter & use it w/ params to derive order hash.\\n                orderHash = _deriveOrderHash(\\n                    OrderParameters(\\n                        offerer,\\n                        orderParameters.token,\\n                        orderParameters.identifier,\\n                        orderParameters.currency,\\n                        orderParameters.artist,\\n                        orderParameters.platform,\\n                        orderParameters.startTime,\\n                        orderParameters.endTime,\\n                        orderParameters.duration,\\n                        orderParameters.periods,\\n                        orderParameters.amount,\\n                        orderParameters.ratio,\\n                        orderParameters.royalty,\\n                        orderParameters.fee,\\n                        orderParameters.withdrawFee,\\n                        orderParameters.salt,\\n                        orderParameters.conduitKey\\n                    ),\\n                    _getCounter(orderParameters.offerer)\\n                );\\n\\n                // Retrieve the order status using the derived order hash.\\n                orderStatus = _orderStatus[orderHash];\\n\\n                // Ensure order is fillable and retrieve the filled amount.\\n                _verifyOrderStatus(\\n                    orderHash,\\n                    orderStatus,\\n                    true, // Signifies that partially filled orders are valid.\\n                    true // Signifies to revert if the order is invalid.\\n                );\\n\\n                // If the order has not already been validated...\\n                if (!orderStatus.isValidated) {\\n                    // Verify the supplied signature.\\n                    _verifySignature(offerer, orderHash, order.signature);\\n\\n                    // Update order status to mark the order as valid.\\n                    orderStatus.isValidated = true;\\n\\n                    // Emit an event signifying the order has been validated.\\n                    emit OrderValidated(\\n                        orderHash,\\n                        offerer\\n                    );\\n                }\\n\\n                // Increment counter inside body of the loop for gas efficiency.\\n                ++i;\\n            }\\n        }\\n\\n        // Return a boolean indicating that orders were successfully validated.\\n        validated = true;\\n    }\\n\\n    function _getOrderStatus(bytes32 orderHash)\\n        internal\\n        view\\n        returns (\\n            bool isValidated,\\n            bool isCancelled,\\n            bool isFinalized,\\n            bool isBroken,\\n            address fulfiller,\\n            uint256 startedAt,\\n            uint256 shadowId,\\n            uint256 paidTimes\\n        )\\n    {\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        return (\\n            orderStatus.isValidated,\\n            orderStatus.isCancelled,\\n            orderStatus.isFinalized,\\n            orderStatus.isBroken,\\n            orderStatus.fulfiller,\\n            orderStatus.startedAt,\\n            orderStatus.shadowId,\\n            orderStatus.paidTimes\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x4076a1d39f964a1c535665dcacbe5a04e9b001273db63b3846bf5eec9c9e88bd\",\"license\":\"MIT\"},\"contracts/lib/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ReentrancyErrors } from \\\"../interfaces/ReentrancyErrors.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title ReentrancyGuard\\n * @author 0age\\n * @notice ReentrancyGuard contains a storage variable and related functionality\\n *         for protecting against reentrancy.\\n */\\ncontract ReentrancyGuard is ReentrancyErrors {\\n    // Prevent reentrant calls on protected functions.\\n    uint256 private _reentrancyGuard;\\n\\n    /**\\n     * @dev Initialize the reentrancy guard during deployment.\\n     */\\n    constructor() {\\n        // Initialize the reentrancy guard in a cleared state.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to ensure that the sentinel value for the\\n     *      reentrancy guard is not currently set and, if not, to set the\\n     *      sentinel value for the reentrancy guard.\\n     */\\n    function _setReentrancyGuard() internal {\\n        // Ensure that the reentrancy guard is not already set.\\n        _assertNonReentrant();\\n\\n        // Set the reentrancy guard.\\n        _reentrancyGuard = _ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to unset the reentrancy guard sentinel value.\\n     */\\n    function _clearReentrancyGuard() internal {\\n        // Clear the reentrancy guard.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal view function to ensure that the sentinel value for the\\n            reentrancy guard is not currently set.\\n     */\\n    function _assertNonReentrant() internal view {\\n        // Ensure that the reentrancy guard is not currently set.\\n        if (_reentrancyGuard != _NOT_ENTERED) {\\n            revert NoReentrantCalls();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa52711c788a24071f8a872ea5ee3030f0f8f592abf8f0d5577707e585a7628d5\",\"license\":\"MIT\"},\"contracts/lib/Shadow.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { IERC4907A } from \\\"erc721a/contracts/extensions/IERC4907A.sol\\\";\\n\\ninterface IMintBurnableERC4907 {\\n    function mint(address to, address tokenAddress, uint256 tokenId) external returns (uint256);\\n    function burn(uint256 tokenId) external;\\n}\\n\\ncontract Shadow {\\n    \\n    address public immutable shadowToken;\\n\\n    constructor(address _token) {\\n        shadowToken = _token;\\n    }\\n\\n    function _mintToken(\\n        address to,\\n        address token,\\n        uint256 identifier,\\n        uint256 duration\\n    ) internal returns (uint256) {\\n        uint256 tid = IMintBurnableERC4907(shadowToken).mint(address(this), token, identifier);\\n        IERC4907A(shadowToken).setUser(tid, to, uint64(duration + block.timestamp));\\n        return tid;\\n    }\\n\\n    function _extendToken(address to, uint256 tokenId, uint256 expires) internal {\\n        IERC4907A(shadowToken).setUser(tokenId, to, uint64(expires));\\n    }\\n\\n    function _burnToken(uint256 tokenId) internal {\\n        IMintBurnableERC4907(shadowToken).burn(tokenId);\\n    }\\n}\",\"keccak256\":\"0x71b95c35b423d619bb4583e8a39c0227fd730c090d4b7071e79c8cac87910e8d\",\"license\":\"MIT\"},\"contracts/lib/SignatureVerification.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { EIP1271Interface } from \\\"../interfaces/EIP1271Interface.sol\\\";\\n\\nimport {\\n    SignatureVerificationErrors\\n} from \\\"../interfaces/SignatureVerificationErrors.sol\\\";\\n\\nimport { LowLevelHelpers } from \\\"./LowLevelHelpers.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title SignatureVerification\\n * @author 0age\\n * @notice SignatureVerification contains logic for verifying signatures.\\n */\\ncontract SignatureVerification is SignatureVerificationErrors, LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied signer.\\n     *\\n     * @param signer    The signer for the order.\\n     * @param digest    The digest to verify the signature against.\\n     * @param signature A signature from the signer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _assertValidSignature(\\n        address signer,\\n        bytes32 digest,\\n        bytes memory signature\\n    ) internal view {\\n        // Declare value for ecrecover equality or 1271 call success status.\\n        bool success;\\n\\n        // Utilize assembly to perform optimized signature verification check.\\n        assembly {\\n            // Ensure that first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Declare value for v signature parameter.\\n            let v\\n\\n            // Get the length of the signature.\\n            let signatureLength := mload(signature)\\n\\n            // Get the pointer to the value preceding the signature length.\\n            // This will be used for temporary memory overrides - either the\\n            // signature head for isValidSignature or the digest for ecrecover.\\n            let wordBeforeSignaturePtr := sub(signature, OneWord)\\n\\n            // Cache the current value behind the signature to restore it later.\\n            let cachedWordBeforeSignature := mload(wordBeforeSignaturePtr)\\n\\n            // Declare lenDiff + recoveredSigner scope to manage stack pressure.\\n            {\\n                // Take the difference between the max ECDSA signature length\\n                // and the actual signature length. Overflow desired for any\\n                // values > 65. If the diff is not 0 or 1, it is not a valid\\n                // ECDSA signature - move on to EIP1271 check.\\n                let lenDiff := sub(ECDSA_MaxLength, signatureLength)\\n\\n                // Declare variable for recovered signer.\\n                let recoveredSigner\\n\\n                // If diff is 0 or 1, it may be an ECDSA signature.\\n                // Try to recover signer.\\n                if iszero(gt(lenDiff, 1)) {\\n                    // Read the signature `s` value.\\n                    let originalSignatureS := mload(\\n                        add(signature, ECDSA_signature_s_offset)\\n                    )\\n\\n                    // Read the first byte of the word after `s`. If the\\n                    // signature is 65 bytes, this will be the real `v` value.\\n                    // If not, it will need to be modified - doing it this way\\n                    // saves an extra condition.\\n                    v := byte(\\n                        0,\\n                        mload(add(signature, ECDSA_signature_v_offset))\\n                    )\\n\\n                    // If lenDiff is 1, parse 64-byte signature as ECDSA.\\n                    if lenDiff {\\n                        // Extract yParity from highest bit of vs and add 27 to\\n                        // get v.\\n                        v := add(\\n                            shr(MaxUint8, originalSignatureS),\\n                            Signature_lower_v\\n                        )\\n\\n                        // Extract canonical s from vs, all but the highest bit.\\n                        // Temporarily overwrite the original `s` value in the\\n                        // signature.\\n                        mstore(\\n                            add(signature, ECDSA_signature_s_offset),\\n                            and(\\n                                originalSignatureS,\\n                                EIP2098_allButHighestBitMask\\n                            )\\n                        )\\n                    }\\n                    // Temporarily overwrite the signature length with `v` to\\n                    // conform to the expected input for ecrecover.\\n                    mstore(signature, v)\\n\\n                    // Temporarily overwrite the word before the length with\\n                    // `digest` to conform to the expected input for ecrecover.\\n                    mstore(wordBeforeSignaturePtr, digest)\\n\\n                    // Attempt to recover the signer for the given signature. Do\\n                    // not check the call status as ecrecover will return a null\\n                    // address if the signature is invalid.\\n                    pop(\\n                        staticcall(\\n                            gas(),\\n                            Ecrecover_precompile, // Call ecrecover precompile.\\n                            wordBeforeSignaturePtr, // Use data memory location.\\n                            Ecrecover_args_size, // Size of digest, v, r, and s.\\n                            0, // Write result to scratch space.\\n                            OneWord // Provide size of returned result.\\n                        )\\n                    )\\n\\n                    // Restore cached word before signature.\\n                    mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n\\n                    // Restore cached signature length.\\n                    mstore(signature, signatureLength)\\n\\n                    // Restore cached signature `s` value.\\n                    mstore(\\n                        add(signature, ECDSA_signature_s_offset),\\n                        originalSignatureS\\n                    )\\n\\n                    // Read the recovered signer from the buffer given as return\\n                    // space for ecrecover.\\n                    recoveredSigner := mload(0)\\n                }\\n\\n                // Set success to true if the signature provided was a valid\\n                // ECDSA signature and the signer is not the null address. Use\\n                // gt instead of direct as success is used outside of assembly.\\n                success := and(eq(signer, recoveredSigner), gt(signer, 0))\\n            }\\n\\n            // If the signature was not verified with ecrecover, try EIP1271.\\n            if iszero(success) {\\n                // Temporarily overwrite the word before the signature length\\n                // and use it as the head of the signature input to\\n                // `isValidSignature`, which has a value of 64.\\n                mstore(\\n                    wordBeforeSignaturePtr,\\n                    EIP1271_isValidSignature_signature_head_offset\\n                )\\n\\n                // Get pointer to use for the selector of `isValidSignature`.\\n                let selectorPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_selector_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the selector pointer.\\n                let cachedWordOverwrittenBySelector := mload(selectorPtr)\\n\\n                // Get pointer to use for `digest` input to `isValidSignature`.\\n                let digestPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_digest_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the digest pointer.\\n                let cachedWordOverwrittenByDigest := mload(digestPtr)\\n\\n                // Write the selector first, since it overlaps the digest.\\n                mstore(selectorPtr, EIP1271_isValidSignature_selector)\\n\\n                // Next, write the digest.\\n                mstore(digestPtr, digest)\\n\\n                // Call signer with `isValidSignature` to validate signature.\\n                success := staticcall(\\n                    gas(),\\n                    signer,\\n                    selectorPtr,\\n                    add(\\n                        signatureLength,\\n                        EIP1271_isValidSignature_calldata_baseLength\\n                    ),\\n                    0,\\n                    OneWord\\n                )\\n\\n                // Determine if the signature is valid on successful calls.\\n                if success {\\n                    // If first word of scratch space does not contain EIP-1271\\n                    // signature selector, revert.\\n                    if iszero(eq(mload(0), EIP1271_isValidSignature_selector)) {\\n                        // Revert with bad 1271 signature if signer has code.\\n                        if extcodesize(signer) {\\n                            // Bad contract signature.\\n                            mstore(0, BadContractSignature_error_signature)\\n                            revert(0, BadContractSignature_error_length)\\n                        }\\n\\n                        // Check if signature length was invalid.\\n                        if gt(sub(ECDSA_MaxLength, signatureLength), 1) {\\n                            // Revert with generic invalid signature error.\\n                            mstore(0, InvalidSignature_error_signature)\\n                            revert(0, InvalidSignature_error_length)\\n                        }\\n\\n                        // Check if v was invalid.\\n                        if iszero(\\n                            byte(v, ECDSA_twentySeventhAndTwentyEighthBytesSet)\\n                        ) {\\n                            // Revert with invalid v value.\\n                            mstore(0, BadSignatureV_error_signature)\\n                            mstore(BadSignatureV_error_offset, v)\\n                            revert(0, BadSignatureV_error_length)\\n                        }\\n\\n                        // Revert with generic invalid signer error message.\\n                        mstore(0, InvalidSigner_error_signature)\\n                        revert(0, InvalidSigner_error_length)\\n                    }\\n                }\\n\\n                // Restore the cached values overwritten by selector, digest and\\n                // signature head.\\n                mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n                mstore(selectorPtr, cachedWordOverwrittenBySelector)\\n                mstore(digestPtr, cachedWordOverwrittenByDigest)\\n            }\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Revert and pass reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with error indicating bad contract signature.\\n            assembly {\\n                mstore(0, BadContractSignature_error_signature)\\n                revert(0, BadContractSignature_error_length)\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9af8a720f3f6aac730d7896484f407ecea62105c1c9dc45666273d51555a0f42\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport \\\"./TokenTransferrerConstants.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { ConduitBatch1155Transfer } from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title TokenTransferrer\\n * @author 0age\\n * @custom:coauthor d1ll0n\\n * @custom:coauthor transmissions11\\n * @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\\n *         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\\n *         by conduits deployed by the ConduitController. Use great caution when\\n *         considering these functions for use in other codebases, as there are\\n *         significant side effects and edge cases that need to be thoroughly\\n *         understood and carefully addressed.\\n */\\ncontract TokenTransferrer is TokenTransferrerErrors {\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set on the\\n     *      contract performing the transfer.\\n     *\\n     * @param token      The ERC20 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC20Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\\n            mstore(ERC20_transferFrom_from_ptr, from)\\n            mstore(ERC20_transferFrom_to_ptr, to)\\n            mstore(ERC20_transferFrom_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transferFrom_sig_ptr,\\n                ERC20_transferFrom_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                from\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            from\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    function _performSelfERC20Transfer(\\n        address token,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transfer_sig_ptr, ERC20_transfer_signature)\\n            mstore(ERC20_transfer_to_ptr, to)\\n            mstore(ERC20_transfer_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transfer_sig_ptr,\\n                ERC20_transfer_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                address()\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            address()\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer an ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer. Note that this function does\\n     *      not check whether the receiver can accept the ERC721 token (i.e. it\\n     *      does not use `safeTransferFrom`).\\n     *\\n     * @param token      The ERC721 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     */\\n    function _performERC721Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC721 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data to memory starting with function selector.\\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\\n            mstore(ERC721_transferFrom_from_ptr, from)\\n            mstore(ERC721_transferFrom_to_ptr, to)\\n            mstore(ERC721_transferFrom_id_ptr, identifier)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC721_transferFrom_sig_ptr,\\n                ERC721_transferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer.\\n     *\\n     * @param token      The ERC1155 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The id to transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC1155Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The following memory slots will be used when populating call data\\n            // for the transfer; read the values and restore them later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n            let slot0x80 := mload(Slot0x80)\\n            let slot0xA0 := mload(Slot0xA0)\\n            let slot0xC0 := mload(Slot0xC0)\\n\\n            // Write call data into memory, beginning with function selector.\\n            mstore(\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_signature\\n            )\\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\\n            mstore(\\n                ERC1155_safeTransferFrom_data_offset_ptr,\\n                ERC1155_safeTransferFrom_data_length_offset\\n            )\\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer. NOTE: this function is not\\n     *      memory-safe; it will overwrite existing memory, restore the free\\n     *      memory pointer to the default value, and overwrite the zero slot.\\n     *      This function should only be called once memory is no longer\\n     *      required and when uninitialized arrays are not utilized, and memory\\n     *      should be considered fully corrupted (aside from the existence of a\\n     *      default-value free memory pointer) after calling this function.\\n     *\\n     * @param batchTransfers The group of 1155 batch transfers to perform.\\n     */\\n    function _performERC1155BatchTransfers(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) internal {\\n        // Utilize assembly to perform optimized batch 1155 transfers.\\n        assembly {\\n            let len := batchTransfers.length\\n            // Pointer to first head in the array, which is offset to the struct\\n            // at each index. This gets incremented after each loop to avoid\\n            // multiplying by 32 to get the offset for each element.\\n            let nextElementHeadPtr := batchTransfers.offset\\n\\n            // Pointer to beginning of the head of the array. This is the\\n            // reference position each offset references. It's held static to\\n            // let each loop calculate the data position for an element.\\n            let arrayHeadPtr := nextElementHeadPtr\\n\\n            // Write the function selector, which will be reused for each call:\\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\n            mstore(\\n                ConduitBatch1155Transfer_from_offset,\\n                ERC1155_safeBatchTransferFrom_signature\\n            )\\n\\n            // Iterate over each batch transfer.\\n            for {\\n                let i := 0\\n            } lt(i, len) {\\n                i := add(i, 1)\\n            } {\\n                // Read the offset to the beginning of the element and add\\n                // it to pointer to the beginning of the array head to get\\n                // the absolute position of the element in calldata.\\n                let elementPtr := add(\\n                    arrayHeadPtr,\\n                    calldataload(nextElementHeadPtr)\\n                )\\n\\n                // Retrieve the token from calldata.\\n                let token := calldataload(elementPtr)\\n\\n                // If the token has no code, revert.\\n                if iszero(extcodesize(token)) {\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Get the total number of supplied ids.\\n                let idsLength := calldataload(\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\\n                )\\n\\n                // Determine the expected offset for the amounts array.\\n                let expectedAmountsOffset := add(\\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\\n                    mul(idsLength, OneWord)\\n                )\\n\\n                // Validate struct encoding.\\n                let invalidEncoding := iszero(\\n                    and(\\n                        // ids.length == amounts.length\\n                        eq(\\n                            idsLength,\\n                            calldataload(add(elementPtr, expectedAmountsOffset))\\n                        ),\\n                        and(\\n                            // ids_offset == 0xa0\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatch1155Transfer_ids_head_offset\\n                                    )\\n                                ),\\n                                ConduitBatch1155Transfer_ids_length_offset\\n                            ),\\n                            // amounts_offset == 0xc0 + ids.length*32\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatchTransfer_amounts_head_offset\\n                                    )\\n                                ),\\n                                expectedAmountsOffset\\n                            )\\n                        )\\n                    )\\n                )\\n\\n                // Revert with an error if the encoding is not valid.\\n                if invalidEncoding {\\n                    mstore(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_selector\\n                    )\\n                    revert(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_length\\n                    )\\n                }\\n\\n                // Update the offset position for the next loop\\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\\n\\n                // Copy the first section of calldata (before dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\\n                    ConduitBatch1155Transfer_usable_head_size\\n                )\\n\\n                // Determine size of calldata required for ids and amounts. Note\\n                // that the size includes both lengths as well as the data.\\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\\n\\n                // Update the offset for the data array in memory.\\n                mstore(\\n                    BatchTransfer1155Params_data_head_ptr,\\n                    add(\\n                        BatchTransfer1155Params_ids_length_offset,\\n                        idsAndAmountsSize\\n                    )\\n                )\\n\\n                // Set the length of the data array in memory to zero.\\n                mstore(\\n                    add(\\n                        BatchTransfer1155Params_data_length_basePtr,\\n                        idsAndAmountsSize\\n                    ),\\n                    0\\n                )\\n\\n                // Determine the total calldata size for the call to transfer.\\n                let transferDataSize := add(\\n                    BatchTransfer1155Params_calldata_baseSize,\\n                    idsAndAmountsSize\\n                )\\n\\n                // Copy second section of calldata (including dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ids_length_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\\n                    idsAndAmountsSize\\n                )\\n\\n                // Perform the call to transfer 1155 tokens.\\n                let success := call(\\n                    gas(),\\n                    token,\\n                    0,\\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\\n                    transferDataSize, // Location of the length of callData.\\n                    0,\\n                    0\\n                )\\n\\n                // If the transfer reverted:\\n                if iszero(success) {\\n                    // If it returned a message, bubble it up as long as\\n                    // sufficient gas remains to do so:\\n                    if returndatasize() {\\n                        // Ensure that sufficient gas is available to copy\\n                        // returndata while expanding memory where necessary.\\n                        // Start by computing word size of returndata and\\n                        // allocated memory. Round up to the nearest full word.\\n                        let returnDataWords := div(\\n                            add(returndatasize(), AlmostOneWord),\\n                            OneWord\\n                        )\\n\\n                        // Note: use transferDataSize in place of msize() to\\n                        // work around a Yul warning that prevents accessing\\n                        // msize directly when the IR pipeline is activated.\\n                        // The free memory pointer is not used here because\\n                        // this function does almost all memory management\\n                        // manually and does not update it, and transferDataSize\\n                        // should be the largest memory value used (unless a\\n                        // previous batch was larger).\\n                        let msizeWords := div(transferDataSize, OneWord)\\n\\n                        // Next, compute the cost of the returndatacopy.\\n                        let cost := mul(CostPerWord, returnDataWords)\\n\\n                        // Then, compute cost of new memory allocation.\\n                        if gt(returnDataWords, msizeWords) {\\n                            cost := add(\\n                                cost,\\n                                add(\\n                                    mul(\\n                                        sub(returnDataWords, msizeWords),\\n                                        CostPerWord\\n                                    ),\\n                                    div(\\n                                        sub(\\n                                            mul(\\n                                                returnDataWords,\\n                                                returnDataWords\\n                                            ),\\n                                            mul(msizeWords, msizeWords)\\n                                        ),\\n                                        MemoryExpansionCoefficient\\n                                    )\\n                                )\\n                            )\\n                        }\\n\\n                        // Finally, add a small constant and compare to gas\\n                        // remaining; bubble up the revert data if enough gas is\\n                        // still available.\\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\\n                            // Copy returndata to memory; overwrite existing.\\n                            returndatacopy(0, 0, returndatasize())\\n\\n                            // Revert with memory region containing returndata.\\n                            revert(0, returndatasize())\\n                        }\\n                    }\\n\\n                    // Set the error signature.\\n                    mstore(\\n                        0,\\n                        ERC1155BatchTransferGenericFailure_error_signature\\n                    )\\n\\n                    // Write the token.\\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\\n\\n                    // Increase the offset to ids by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_ids_head_ptr,\\n                        ERC1155BatchTransferGenericFailure_ids_offset\\n                    )\\n\\n                    // Increase the offset to amounts by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_amounts_head_ptr,\\n                        add(\\n                            OneWord,\\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\\n                        )\\n                    )\\n\\n                    // Return modified region. The total size stays the same as\\n                    // `token` uses the same number of bytes as `data.length`.\\n                    revert(0, transferDataSize)\\n                }\\n            }\\n\\n            // Reset the free memory pointer to the default value; memory must\\n            // be assumed to be dirtied and not reused from this point forward.\\n            // Also note that the zero slot is not reset to zero, meaning empty\\n            // arrays cannot be safely created or utilized until it is restored.\\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9be626e5928b95748e08259c63a6168d3e0b3e490f2f340491b8afd546cbbcd1\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrerConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\nuint256 constant Slot0xC0 = 0xc0;\\n\\n// abi.encodeWithSignature(\\\"transferFrom(address,address,uint256)\\\")\\nuint256 constant ERC20_transferFrom_signature = (\\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"transfer(address,uint256)\\\")\\nuint256 constant ERC20_transfer_signature = (\\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transfer_sig_ptr = 0x0;\\nuint256 constant ERC20_transfer_to_ptr = 0x04;\\nuint256 constant ERC20_transfer_amount_ptr = 0x24;\\nuint256 constant ERC20_transfer_length = 0x44; // 4 + 32 * 2 == 68\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeTransferFrom(address,address,uint256,uint256,bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeTransferFrom_signature = (\\n    0xf242432a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\\n);\\n\\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\\n);\\n\\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\n// abi.encodeWithSignature(\\n//     \\\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\\\"\\n// )\\nuint256 constant TokenTransferGenericFailure_error_signature = (\\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\\n\\n// 4 + 32 * 5 == 164\\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\\n\\n// abi.encodeWithSignature(\\n//     \\\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\\\"\\n// )\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\\n    0x9889192300000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\\n\\n// 4 + 32 * 4 == 132\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200;\\n\\n// Values are offset by 32 bytes in order to write the token to the beginning\\n// in the event of a revert\\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x64;\\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0xc4;\\nuint256 constant BatchTransfer1155Params_calldata_baseSize = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\\n\\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\\n\\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\\n\\n// Note: abbreviated version of above constant to adhere to line length limit.\\nuint256 constant ConduitBatchTransfer_amounts_head_offset = 0x80;\\n\\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\\n    0xafc445e200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\\nuint256 constant ERC1155BatchTransferGenericFailure_ids_offset = 0xc0;\\n\",\"keccak256\":\"0x002bea8dcc1d37a0cdd6d1c25f536a1a13e01e1fb32b7bbb2a3016425e40b672\",\"license\":\"MIT\"},\"contracts/lib/Verifiers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderStatus } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { Assertions } from \\\"./Assertions.sol\\\";\\n\\nimport { SignatureVerification } from \\\"./SignatureVerification.sol\\\";\\n\\n/**\\n * @title Verifiers\\n * @author 0age\\n * @notice Verifiers contains functions for performing verifications.\\n */\\ncontract Verifiers is Assertions, SignatureVerification {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Assertions(conduitController) {}\\n\\n    /**\\n     * @dev Internal view function to ensure that the current time falls within\\n     *      an order's valid timespan.\\n     *\\n     * @param startTime       The time at which the order becomes active.\\n     * @param endTime         The time at which the order becomes inactive.\\n     * @param revertOnInvalid A boolean indicating whether to revert if the\\n     *                        order is not active.\\n     *\\n     * @return valid A boolean indicating whether the order is active.\\n     */\\n    function _verifyTime(\\n        uint256 startTime,\\n        uint256 endTime,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        // Revert if order's timespan hasn't started yet or has already ended.\\n        if (startTime > block.timestamp || endTime <= block.timestamp) {\\n            // Only revert if revertOnInvalid has been supplied as true.\\n            if (revertOnInvalid) {\\n                revert InvalidTime();\\n            }\\n\\n            // Return false as the order is invalid.\\n            return false;\\n        }\\n\\n        // Return true as the order time is valid.\\n        valid = true;\\n    }\\n\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied offerer. Note that in cases where a 64 or 65 byte signature\\n     *      is supplied, only standard ECDSA signatures that recover to a\\n     *      non-zero address are supported.\\n     *\\n     * @param offerer   The offerer for the order.\\n     * @param orderHash The order hash.\\n     * @param signature A signature from the offerer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _verifySignature(\\n        address offerer,\\n        bytes32 orderHash,\\n        bytes memory signature\\n    ) internal view {\\n        // Skip signature verification if the offerer is the caller.\\n        if (offerer == msg.sender) {\\n            return;\\n        }\\n\\n        // Derive EIP-712 digest using the domain separator and the order hash.\\n        bytes32 digest = _deriveEIP712Digest(_domainSeparator(), orderHash);\\n\\n        // Ensure that the signature for the digest is valid for the offerer.\\n        _assertValidSignature(offerer, digest, signature);\\n    }\\n\\n    function _verifyOrderStatus(\\n        bytes32 orderHash,\\n        OrderStatus storage orderStatus,\\n        bool firstPay,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        if (orderStatus.isCancelled) {\\n            if (revertOnInvalid) {\\n                revert OrderIsCancelled(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (orderStatus.isFinalized) {\\n            if (revertOnInvalid) {\\n                revert OrderAlreadyFinalized(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (firstPay) {\\n            if (orderStatus.paidTimes > 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        } else {\\n            if (orderStatus.paidTimes == 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderNotStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        }\\n\\n        valid = true;\\n    }\\n}\\n\",\"keccak256\":\"0x4166159d504ffb5810fbad9c64445fd23659f5b19e84a61dde67f8760bcd1255\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7723,"contract":"contracts/lib/Consideration.sol:Consideration","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":5403,"contract":"contracts/lib/Consideration.sol:Consideration","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":6907,"contract":"contracts/lib/Consideration.sol:Consideration","label":"_orderStatus","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)"},{"astId":4379,"contract":"contracts/lib/Consideration.sol:Consideration","label":"_orderStatus","offset":0,"slot":"3","type":"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OrderStatus)","numberOfBytes":"32","value":"t_struct(OrderStatus)5389_storage"},"t_struct(OrderStatus)5389_storage":{"encoding":"inplace","label":"struct OrderStatus","members":[{"astId":5374,"contract":"contracts/lib/Consideration.sol:Consideration","label":"isValidated","offset":0,"slot":"0","type":"t_bool"},{"astId":5376,"contract":"contracts/lib/Consideration.sol:Consideration","label":"isCancelled","offset":1,"slot":"0","type":"t_bool"},{"astId":5378,"contract":"contracts/lib/Consideration.sol:Consideration","label":"isFinalized","offset":2,"slot":"0","type":"t_bool"},{"astId":5380,"contract":"contracts/lib/Consideration.sol:Consideration","label":"isBroken","offset":3,"slot":"0","type":"t_bool"},{"astId":5382,"contract":"contracts/lib/Consideration.sol:Consideration","label":"fulfiller","offset":4,"slot":"0","type":"t_address"},{"astId":5384,"contract":"contracts/lib/Consideration.sol:Consideration","label":"startedAt","offset":0,"slot":"1","type":"t_uint256"},{"astId":5386,"contract":"contracts/lib/Consideration.sol:Consideration","label":"shadowId","offset":0,"slot":"2","type":"t_uint256"},{"astId":5388,"contract":"contracts/lib/Consideration.sol:Consideration","label":"paidTimes","offset":0,"slot":"3","type":"t_uint256"}],"numberOfBytes":"128"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ConsiderationBase.sol":{"ConsiderationBase":{"abi":[{"inputs":[{"internalType":"address","name":"conduitController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4654":{"entryPoint":null,"id":4654,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_4760":{"entryPoint":261,"id":4760,"parameterSlots":0,"returnSlots":4},"@_nameString_4683":{"entryPoint":null,"id":4683,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":1113,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_bytes32_fromMemory":{"entryPoint":1161,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_stringliteral_0c2a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e4b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_41ba":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_59d7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5c66":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7afc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89a9":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9c70":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b48f":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bab2":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_cfcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6455:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:54","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:54"},"nodeType":"YulFunctionCall","src":"143:12:54"},"nodeType":"YulExpressionStatement","src":"143:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:54"},"nodeType":"YulFunctionCall","src":"112:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:54"},"nodeType":"YulFunctionCall","src":"108:32:54"},"nodeType":"YulIf","src":"105:52:54"},{"nodeType":"YulVariableDeclaration","src":"166:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:54"},"nodeType":"YulFunctionCall","src":"179:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:54"},"nodeType":"YulFunctionCall","src":"260:12:54"},"nodeType":"YulExpressionStatement","src":"260:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:54"},"nodeType":"YulFunctionCall","src":"239:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:54"},"nodeType":"YulFunctionCall","src":"235:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:54"},"nodeType":"YulFunctionCall","src":"224:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:54"},"nodeType":"YulFunctionCall","src":"214:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:54"},"nodeType":"YulFunctionCall","src":"207:50:54"},"nodeType":"YulIf","src":"204:70:54"},{"nodeType":"YulAssignment","src":"283:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:54"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:54","type":""}],"src":"14:290:54"},{"body":{"nodeType":"YulBlock","src":"407:147:54","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:54"},"nodeType":"YulFunctionCall","src":"455:12:54"},"nodeType":"YulExpressionStatement","src":"455:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:54"},"nodeType":"YulFunctionCall","src":"424:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:54"},"nodeType":"YulFunctionCall","src":"420:32:54"},"nodeType":"YulIf","src":"417:52:54"},{"nodeType":"YulAssignment","src":"478:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:54"},"nodeType":"YulFunctionCall","src":"488:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:54"}]},{"nodeType":"YulAssignment","src":"513:35:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:54"},"nodeType":"YulFunctionCall","src":"529:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:54"},"nodeType":"YulFunctionCall","src":"523:25:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:54","type":""}],"src":"309:245:54"},{"body":{"nodeType":"YulBlock","src":"614:76:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:54"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:54","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:54"},"nodeType":"YulFunctionCall","src":"624:32:54"},"nodeType":"YulExpressionStatement","src":"624:32:54"},{"nodeType":"YulAssignment","src":"665:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:54","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:54"},"nodeType":"YulFunctionCall","src":"672:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:54"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:54","type":""}],"src":"559:131:54"},{"body":{"nodeType":"YulBlock","src":"750:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:54"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:54","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:54"},"nodeType":"YulFunctionCall","src":"760:31:54"},"nodeType":"YulExpressionStatement","src":"760:31:54"},{"nodeType":"YulAssignment","src":"800:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:54"},"nodeType":"YulFunctionCall","src":"807:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:54"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:54","type":""}],"src":"695:130:54"},{"body":{"nodeType":"YulBlock","src":"885:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:54"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:54","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:54"},"nodeType":"YulFunctionCall","src":"895:30:54"},"nodeType":"YulExpressionStatement","src":"895:30:54"},{"nodeType":"YulAssignment","src":"934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:54"},"nodeType":"YulFunctionCall","src":"941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:54"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:54","type":""}],"src":"830:129:54"},{"body":{"nodeType":"YulBlock","src":"1019:73:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:54"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:54","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:54"},"nodeType":"YulFunctionCall","src":"1029:29:54"},"nodeType":"YulExpressionStatement","src":"1029:29:54"},{"nodeType":"YulAssignment","src":"1067:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:54","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:54"},"nodeType":"YulFunctionCall","src":"1074:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:54"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:54","type":""}],"src":"964:128:54"},{"body":{"nodeType":"YulBlock","src":"1152:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:54"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:54","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:54"},"nodeType":"YulFunctionCall","src":"1162:31:54"},"nodeType":"YulExpressionStatement","src":"1162:31:54"},{"nodeType":"YulAssignment","src":"1202:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:54"},"nodeType":"YulFunctionCall","src":"1209:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:54"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:54","type":""}],"src":"1097:130:54"},{"body":{"nodeType":"YulBlock","src":"1287:71:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:54"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:54","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:54"},"nodeType":"YulFunctionCall","src":"1297:27:54"},"nodeType":"YulExpressionStatement","src":"1297:27:54"},{"nodeType":"YulAssignment","src":"1333:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:54","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:54"},"nodeType":"YulFunctionCall","src":"1340:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:54"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:54","type":""}],"src":"1232:126:54"},{"body":{"nodeType":"YulBlock","src":"1418:79:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:54"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:54","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:54"},"nodeType":"YulFunctionCall","src":"1428:35:54"},"nodeType":"YulExpressionStatement","src":"1428:35:54"},{"nodeType":"YulAssignment","src":"1472:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:54","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:54"},"nodeType":"YulFunctionCall","src":"1479:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:54"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:54","type":""}],"src":"1363:134:54"},{"body":{"nodeType":"YulBlock","src":"1557:72:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:54"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:54","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:54"},"nodeType":"YulFunctionCall","src":"1567:28:54"},"nodeType":"YulExpressionStatement","src":"1567:28:54"},{"nodeType":"YulAssignment","src":"1604:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:54"},"nodeType":"YulFunctionCall","src":"1611:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:54"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:54","type":""}],"src":"1502:127:54"},{"body":{"nodeType":"YulBlock","src":"1689:78:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:54"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:54","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:54"},"nodeType":"YulFunctionCall","src":"1699:34:54"},"nodeType":"YulExpressionStatement","src":"1699:34:54"},{"nodeType":"YulAssignment","src":"1742:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:54","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:54"},"nodeType":"YulFunctionCall","src":"1749:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:54"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:54","type":""}],"src":"1634:133:54"},{"body":{"nodeType":"YulBlock","src":"1827:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:54"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:54","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:54"},"nodeType":"YulFunctionCall","src":"1837:30:54"},"nodeType":"YulExpressionStatement","src":"1837:30:54"},{"nodeType":"YulAssignment","src":"1876:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:54"},"nodeType":"YulFunctionCall","src":"1883:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:54"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:54","type":""}],"src":"1772:129:54"},{"body":{"nodeType":"YulBlock","src":"1961:59:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:54"},"nodeType":"YulFunctionCall","src":"1971:16:54"},"nodeType":"YulExpressionStatement","src":"1971:16:54"},{"nodeType":"YulAssignment","src":"1996:18:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:54"},"nodeType":"YulFunctionCall","src":"2003:11:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:54"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:54","type":""}],"src":"1906:114:54"},{"body":{"nodeType":"YulBlock","src":"4136:815:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:54"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:54","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:54"},"nodeType":"YulFunctionCall","src":"4146:31:54"},"nodeType":"YulExpressionStatement","src":"4146:31:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:54"},"nodeType":"YulFunctionCall","src":"4193:12:54"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:54","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:54"},"nodeType":"YulFunctionCall","src":"4186:40:54"},"nodeType":"YulExpressionStatement","src":"4186:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:54"},"nodeType":"YulFunctionCall","src":"4242:12:54"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:54","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:54"},"nodeType":"YulFunctionCall","src":"4235:38:54"},"nodeType":"YulExpressionStatement","src":"4235:38:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:54","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:54"},"nodeType":"YulFunctionCall","src":"4289:12:54"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:54","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:54"},"nodeType":"YulFunctionCall","src":"4282:43:54"},"nodeType":"YulExpressionStatement","src":"4282:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:54","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:54"},"nodeType":"YulFunctionCall","src":"4341:12:54"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:54","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:54"},"nodeType":"YulFunctionCall","src":"4334:41:54"},"nodeType":"YulExpressionStatement","src":"4334:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:54"},"nodeType":"YulFunctionCall","src":"4391:12:54"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:54","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:54"},"nodeType":"YulFunctionCall","src":"4384:39:54"},"nodeType":"YulExpressionStatement","src":"4384:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:54","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:54"},"nodeType":"YulFunctionCall","src":"4439:12:54"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:54","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:54"},"nodeType":"YulFunctionCall","src":"4432:41:54"},"nodeType":"YulExpressionStatement","src":"4432:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:54","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:54"},"nodeType":"YulFunctionCall","src":"4489:13:54"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:54","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:54"},"nodeType":"YulFunctionCall","src":"4482:43:54"},"nodeType":"YulExpressionStatement","src":"4482:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:54","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:54"},"nodeType":"YulFunctionCall","src":"4541:13:54"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:54","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:54"},"nodeType":"YulFunctionCall","src":"4534:41:54"},"nodeType":"YulExpressionStatement","src":"4534:41:54"},{"nodeType":"YulAssignment","src":"4584:361:54","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:54","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:54"},"nodeType":"YulFunctionCall","src":"4921:13:54"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:54"},"nodeType":"YulFunctionCall","src":"4891:44:54"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:54"},"nodeType":"YulFunctionCall","src":"4861:75:54"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:54"},"nodeType":"YulFunctionCall","src":"4831:106:54"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:54"},"nodeType":"YulFunctionCall","src":"4801:137:54"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:54"},"nodeType":"YulFunctionCall","src":"4771:168:54"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:54"},"nodeType":"YulFunctionCall","src":"4741:199:54"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:54"},"nodeType":"YulFunctionCall","src":"4711:230:54"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:54"},"nodeType":"YulFunctionCall","src":"4681:261:54"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:54"},"nodeType":"YulFunctionCall","src":"4651:292:54"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:54"},"nodeType":"YulFunctionCall","src":"4621:323:54"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:54"},"nodeType":"YulFunctionCall","src":"4591:354:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4120:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:54","type":""}],"src":"2025:2926:54"},{"body":{"nodeType":"YulBlock","src":"5653:306:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:54"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:54","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:54"},"nodeType":"YulFunctionCall","src":"5663:28:54"},"nodeType":"YulExpressionStatement","src":"5663:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:54"},"nodeType":"YulFunctionCall","src":"5707:12:54"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:54","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:54"},"nodeType":"YulFunctionCall","src":"5700:36:54"},"nodeType":"YulExpressionStatement","src":"5700:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:54","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:54"},"nodeType":"YulFunctionCall","src":"5752:12:54"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:54","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:54"},"nodeType":"YulFunctionCall","src":"5745:39:54"},"nodeType":"YulExpressionStatement","src":"5745:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:54","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:54"},"nodeType":"YulFunctionCall","src":"5800:12:54"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:54","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:54"},"nodeType":"YulFunctionCall","src":"5793:40:54"},"nodeType":"YulExpressionStatement","src":"5793:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:54","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:54"},"nodeType":"YulFunctionCall","src":"5849:12:54"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:54","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:54"},"nodeType":"YulFunctionCall","src":"5842:49:54"},"nodeType":"YulExpressionStatement","src":"5842:49:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:54","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:54"},"nodeType":"YulFunctionCall","src":"5907:12:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:54"},"nodeType":"YulFunctionCall","src":"5900:25:54"},"nodeType":"YulExpressionStatement","src":"5900:25:54"},{"nodeType":"YulAssignment","src":"5934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:54"},"nodeType":"YulFunctionCall","src":"5941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5637:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:54","type":""}],"src":"4956:1003:54"},{"body":{"nodeType":"YulBlock","src":"6177:276:54","statements":[{"nodeType":"YulAssignment","src":"6187:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:54"},"nodeType":"YulFunctionCall","src":"6195:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:54"},"nodeType":"YulFunctionCall","src":"6223:25:54"},"nodeType":"YulExpressionStatement","src":"6223:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:54"},"nodeType":"YulFunctionCall","src":"6264:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:54"},"nodeType":"YulFunctionCall","src":"6257:34:54"},"nodeType":"YulExpressionStatement","src":"6257:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:54"},"nodeType":"YulFunctionCall","src":"6307:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:54"},"nodeType":"YulFunctionCall","src":"6300:34:54"},"nodeType":"YulExpressionStatement","src":"6300:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:54"},"nodeType":"YulFunctionCall","src":"6350:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:54"},"nodeType":"YulFunctionCall","src":"6343:34:54"},"nodeType":"YulExpressionStatement","src":"6343:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:54"},"nodeType":"YulFunctionCall","src":"6393:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:54"},"nodeType":"YulFunctionCall","src":"6430:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:54"},"nodeType":"YulFunctionCall","src":"6426:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:54"},"nodeType":"YulFunctionCall","src":"6414:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:54"},"nodeType":"YulFunctionCall","src":"6386:61:54"},"nodeType":"YulExpressionStatement","src":"6386:61:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6114:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:54","type":""}],"src":"5964:489:54"}]},"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_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_9c70(pos) -> end\n    {\n        mstore(pos, \"uint256 duration,\")\n        end := add(pos, 17)\n    }\n    function abi_encode_stringliteral_bab2(pos) -> end\n    {\n        mstore(pos, \"uint256 periods,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_1e4b(pos) -> end\n    {\n        mstore(pos, \"uint256 amount,\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_89a9(pos) -> end\n    {\n        mstore(pos, \"uint256 ratio,\")\n        end := add(pos, 14)\n    }\n    function abi_encode_stringliteral_5c66(pos) -> end\n    {\n        mstore(pos, \"uint256 royalty,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_b48f(pos) -> end\n    {\n        mstore(pos, \"uint256 fee,\")\n        end := add(pos, 12)\n    }\n    function abi_encode_stringliteral_0c2a(pos) -> end\n    {\n        mstore(pos, \"uint256 withdrawFee,\")\n        end := add(pos, 20)\n    }\n    function abi_encode_stringliteral_7afc(pos) -> end\n    {\n        mstore(pos, \"uint256 salt,\")\n        end := add(pos, 13)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral_41ba(pos) -> end\n    {\n        mstore(pos, \"uint256 counter\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address token,\")\n        mstore(add(pos, 46), \"uint256 identifier,\")\n        mstore(add(pos, 65), \"address currency,\")\n        mstore(add(pos, 82), \"address artist,\")\n        mstore(add(pos, 97), \"address platform,\")\n        mstore(add(pos, 114), \"uint256 startTime,\")\n        mstore(add(pos, 132), \"uint256 endTime,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral_41ba(abi_encode_stringliteral_cfcd(abi_encode_stringliteral_7afc(abi_encode_stringliteral_0c2a(abi_encode_stringliteral_b48f(abi_encode_stringliteral_5c66(abi_encode_stringliteral_89a9(abi_encode_stringliteral_1e4b(abi_encode_stringliteral_bab2(abi_encode_stringliteral_9c70(add(pos, 148))))))))))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"61018060405234801561001157600080fd5b5060405161053738038061053783398101604081905261003091610459565b610038610105565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa9190610489565b5061016052506104ad565b600080808061013460408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3945060009161038e91016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b60006020828403121561046b57600080fd5b81516001600160a01b038116811461048257600080fd5b9392505050565b6000806040838503121561049c57600080fd5b505080516020909101519092909150565b60805160a05160c05160e05161010051610120516101405161016051603f6104f86000396000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220df0b9e7302a6799b2fa07ec3632bc7694bb64a16ffe6fae437999f220fa7a2c364736f6c634300080e0033","opcodes":"PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x537 CODESIZE SUB DUP1 PUSH2 0x537 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x459 JUMP JUMPDEST PUSH2 0x38 PUSH2 0x105 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6 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 0xFA SWAP2 SWAP1 PUSH2 0x489 JUMP JUMPDEST POP PUSH2 0x160 MSTORE POP PUSH2 0x4AD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x134 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x312E3 PUSH1 0xEC SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP6 POP PUSH32 0xE6BBD6277E1BF288EED5E8D1780F9A50B239E86B153736BCEEBCCF4EA79D90B3 SWAP5 POP PUSH1 0x0 SWAP2 PUSH2 0x38E SWAP2 ADD PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL DUP2 MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0x10 DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965722C00000000000000000000000000 PUSH1 0x2E DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC818DD5C9C995B98DE4B PUSH1 0x7A SHL PUSH1 0x41 DUP3 ADD MSTORE PUSH15 0x1859191C995CDCC8185C9D1A5CDD0B PUSH1 0x8A SHL PUSH1 0x52 DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC81C1B185D199BDC9B4B PUSH1 0x7A SHL PUSH1 0x61 DUP3 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH1 0x72 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88191D5C985D1A5BDB8B PUSH1 0x7A SHL PUSH1 0x94 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C195C9A5BD91CCB PUSH1 0x82 SHL PUSH1 0xA5 DUP3 ADD MSTORE PUSH15 0x1D5A5B9D0C8D4D88185B5BDD5B9D0B PUSH1 0x8A SHL PUSH1 0xB5 DUP3 ADD MSTORE PUSH14 0x1D5A5B9D0C8D4D881C985D1A5BCB PUSH1 0x92 SHL PUSH1 0xC4 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C9BDE585B1D1E4B PUSH1 0x82 SHL PUSH1 0xD2 DUP3 ADD MSTORE PUSH12 0x1D5A5B9D0C8D4D881999594B PUSH1 0xA2 SHL PUSH1 0xE2 DUP3 ADD MSTORE PUSH32 0x75696E743235362077697468647261774665652C000000000000000000000000 PUSH1 0xEE DUP3 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x102 DUP3 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x10F DUP3 ADD MSTORE PUSH15 0x3AB4B73A191A9B1031B7BAB73A32B9 PUSH1 0x89 SHL PUSH2 0x122 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH2 0x131 DUP3 ADD MSTORE PUSH2 0x132 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH1 0x3F PUSH2 0x4F8 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF SIGNEXTEND SWAP15 PUSH20 0x2A6799B2FA07EC3632BC7694BB64A16FFE6FAE4 CALLDATACOPY SWAP10 SWAP16 0x22 0xF 0xA7 LOG2 0xC3 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"154:2866:32:-:0;;;606:485;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;786:19;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:32;;-1:-1:-1;1203:187:32;;;6223:25:54;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:54;;6300:34;;;;6350:18;;;6343:34;1371:4:32;6393:19:54;;;6386:61;1203:187:32;;;;;;;;;;6195:19:54;;1203:187:32;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:32;;;;;;1032:42;;;-1:-1:-1;;;1032:42:32;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:32;;-1:-1:-1;154:2866:32;;1527:1491;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:32;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:32;;;;1909:724;1778:31;;-1:-1:-1;1834:23:32;;-1:-1:-1;;;1909:724:32;;;-1:-1:-1;;;4146:31:54;;-1:-1:-1;;;4202:2:54;4193:12;;4186:40;-1:-1:-1;;;4251:2:54;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:54;4341:12;;4334:41;-1:-1:-1;;;4400:2:54;4391:12;;4384:39;-1:-1:-1;;;4448:2:54;4439:12;;4432:41;-1:-1:-1;;;4498:3:54;4489:13;;4482:43;-1:-1:-1;;;4550:3:54;4541:13;;4534:41;-1:-1:-1;;;4930:3:54;4921:13;;624:32;-1:-1:-1;;;672:12:54;;;760:31;-1:-1:-1;;;807:12:54;;;895:30;-1:-1:-1;;;941:12:54;;;1029:29;-1:-1:-1;;;1074:12:54;;;1162:31;-1:-1:-1;;;1209:12:54;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:54;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:54;;;1837:30;-1:-1:-1;;;1883:12:54;;;1971:16;2003:11;;;2025:2926;1909:724:32;;;;-1:-1:-1;;1909:724:32;;;;;;;;;;-1:-1:-1;;;1909:724:32;2690:248;;5663:28:54;-1:-1:-1;;;5707:12:54;;;5700:36;-1:-1:-1;;;5752:12:54;;;5745:39;-1:-1:-1;;;5800:12:54;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:54;;;5900:25;1909:724:32;-1:-1:-1;5941:12:54;;2690:248:32;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:54:-;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:54;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:54:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:54;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:54:o;5964:489::-;154:2866:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220df0b9e7302a6799b2fa07ec3632bc7694bb64a16ffe6fae437999f220fa7a2c364736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF SIGNEXTEND SWAP15 PUSH20 0x2A6799B2FA07EC3632BC7694BB64A16FFE6FAE4 CALLDATACOPY SWAP10 SWAP16 0x22 0xF 0xA7 LOG2 0xC3 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"154:2866:32:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"infinite","totalCost":"infinite"},"internal":{"_deriveDomainSeparator()":"infinite","_deriveTypehashes()":"infinite","_nameString()":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ConsiderationBase.sol\":\"ConsiderationBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\ncontract ConsiderationBase {\\n    bytes32 internal immutable _NAME_HASH;\\n    bytes32 internal immutable _VERSION_HASH;\\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\\n    bytes32 internal immutable _ORDER_TYPEHASH;\\n    uint256 internal immutable _CHAIN_ID;\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n\\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n\\n    constructor(address conduitController) {\\n        (\\n            _NAME_HASH,\\n            _VERSION_HASH,\\n            _EIP_712_DOMAIN_TYPEHASH,\\n            _ORDER_TYPEHASH\\n        ) = _deriveTypehashes();\\n\\n        _CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\\n\\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\\n\\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\\n        );\\n    }\\n\\n    function _deriveDomainSeparator() internal view returns (bytes32) {\\n        return keccak256(\\n            abi.encode(\\n                _EIP_712_DOMAIN_TYPEHASH,\\n                _NAME_HASH,\\n                _VERSION_HASH,\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    function _nameString() internal pure virtual returns (string memory) {\\n        return \\\"Consideration\\\";\\n    }\\n\\n    function _deriveTypehashes()\\n        internal\\n        pure\\n        returns (\\n            bytes32 nameHash,\\n            bytes32 versionHash,\\n            bytes32 eip712DomainTypehash,\\n            bytes32 orderTypehash\\n        )\\n    {\\n        nameHash = keccak256(bytes(_nameString()));\\n\\n        versionHash = keccak256(bytes(\\\"1.0\\\"));\\n\\n        bytes memory orderComponentsTypeString = abi.encodePacked(\\n            \\\"OrderComponents(\\\",\\n                \\\"address offerer,\\\",\\n                \\\"address token,\\\",\\n                \\\"uint256 identifier,\\\",\\n                \\\"address currency,\\\",\\n                \\\"address artist,\\\",\\n                \\\"address platform,\\\",\\n                \\\"uint256 startTime,\\\",\\n                \\\"uint256 endTime,\\\",\\n                \\\"uint256 duration,\\\",\\n                \\\"uint256 periods,\\\",\\n                \\\"uint256 amount,\\\",\\n                \\\"uint256 ratio,\\\",\\n                \\\"uint256 royalty,\\\",\\n                \\\"uint256 fee,\\\",\\n                \\\"uint256 withdrawFee,\\\",\\n                \\\"uint256 salt,\\\",\\n                \\\"bytes32 conduitKey,\\\",\\n                \\\"uint256 counter\\\",\\n            \\\")\\\"\\n        );\\n\\n        eip712DomainTypehash = keccak256(\\n            abi.encodePacked(\\n                \\\"EIP712Domain(\\\",\\n                    \\\"string name,\\\",\\n                    \\\"string version,\\\",\\n                    \\\"uint256 chainId,\\\",\\n                    \\\"address verifyingContract\\\",\\n                \\\")\\\"\\n            )\\n        );\\n\\n        orderTypehash = keccak256(orderComponentsTypeString);\\n    }\\n}\",\"keccak256\":\"0x9cd33c5b8bd60301ea09c0305587414ef38f6898fa7a1e0dfb217dd26091d106\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/CounterManager.sol":{"CounterManager":{"abi":[{"inputs":[],"name":"BadFraction","type":"error"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"},{"internalType":"uint256","name":"considerationIndex","type":"uint256"},{"internalType":"uint256","name":"shortfallAmount","type":"uint256"}],"name":"ConsiderationNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherTransferGenericFailure","type":"error"},{"inputs":[],"name":"InsufficientEtherSupplied","type":"error"},{"inputs":[],"name":"InvalidBasicOrderParameterEncoding","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidCallToConduit","type":"error"},{"inputs":[],"name":"InvalidCanceller","type":"error"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidConduit","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidMsgValue","type":"error"},{"inputs":[],"name":"InvalidNativeOfferItem","type":"error"},{"inputs":[],"name":"InvalidOrderParameters","type":"error"},{"inputs":[],"name":"InvalidTime","type":"error"},{"inputs":[],"name":"MissingOriginalConsiderationItems","type":"error"},{"inputs":[],"name":"NoReentrantCalls","type":"error"},{"inputs":[],"name":"NoSpecifiedOrdersAvailable","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFilled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFinalized","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderInvalidRepayParameters","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderIsCancelled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotValidated","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderPartiallyFilled","type":"error"},{"inputs":[],"name":"PartialFillsNotEnabledForOrder","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCounter","type":"uint256"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"CounterIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderBroken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"},{"indexed":false,"internalType":"uint256","name":"shadowId","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payTimes","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finalized","type":"bool"}],"name":"OrderRepaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderValidated","type":"event"}],"devdoc":{"errors":{"BadFraction()":[{"details":"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator."}],"ConsiderationNotMet(uint256,uint256,uint256)":[{"details":"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.","params":{"considerationIndex":"The index of the consideration item on the                           order.","orderIndex":"The index of the order with the consideration                           item with a shortfall.","shortfallAmount":"The unfulfilled consideration amount."}}],"EtherTransferGenericFailure(address,uint256)":[{"details":"Revert with an error when an ether transfer reverts."}],"InsufficientEtherSupplied()":[{"details":"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders."}],"InvalidBasicOrderParameterEncoding()":[{"details":"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding."}],"InvalidCallToConduit(address)":[{"details":"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return."}],"InvalidCanceller()":[{"details":"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone."}],"InvalidConduit(bytes32,address)":[{"details":"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed)."}],"InvalidMsgValue(uint256)":[{"details":"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route."}],"InvalidNativeOfferItem()":[{"details":"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders."}],"InvalidTime()":[{"details":"Revert with an error when attempting to fill an order outside the      specified start time and end time."}],"MissingOriginalConsiderationItems()":[{"details":"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array."}],"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}],"NoSpecifiedOrdersAvailable()":[{"details":"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable."}],"OrderAlreadyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has      already been fully filled.","params":{"orderHash":"The order hash on which a fill was attempted."}}],"OrderIsCancelled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has been      cancelled.","params":{"orderHash":"The hash of the cancelled order."}}],"OrderPartiallyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill a basic order that has      been partially filled.","params":{"orderHash":"The hash of the partially used order."}}],"PartialFillsNotEnabledForOrder()":[{"details":"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_7732":{"entryPoint":null,"id":7732,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b506001600055603f8060226000396000f3fe6080604052600080fdfea2646970667358221220e7bdea476823006d04a6447f001aa7181bdb35c3c1a375979e452791a919efec64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x3F DUP1 PUSH1 0x22 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xBD 0xEA SELFBALANCE PUSH9 0x23006D04A6447F001A 0xA7 XOR SHL 0xDB CALLDATALOAD 0xC3 0xC1 LOG3 PUSH22 0x979E452791A919EFEC64736F6C634300080E00330000 ","sourceMap":"216:549:36:-:0;;;;;;;;;;;;-1:-1:-1;2345:1:33;658:16:42;:31;216:549:36;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220e7bdea476823006d04a6447f001aa7181bdb35c3c1a375979e452791a919efec64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xBD 0xEA SELFBALANCE PUSH9 0x23006D04A6447F001A 0xA7 XOR SHL 0xDB CALLDATALOAD 0xC3 0xC1 LOG3 PUSH22 0x979E452791A919EFEC64736F6C634300080E00330000 ","sourceMap":"216:549:36:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"22172","totalCost":"34772"},"internal":{"_getCounter(address)":"infinite","_incrementCounter()":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNativeOfferItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrderParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderInvalidRepayParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotValidated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"CounterIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderBroken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"name\":\"OrderRepaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"errors\":{\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidNativeOfferItem()\":[{\"details\":\"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/CounterManager.sol\":\"CounterManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConsiderationEventsAndErrors\\n * @author 0age\\n * @notice ConsiderationEventsAndErrors contains all events and errors.\\n */\\ninterface ConsiderationEventsAndErrors {\\n\\n    event OrderFulfilled(\\n        bytes32 orderHash,\\n        address indexed offerer,\\n        uint256 shadowId\\n    );\\n\\n    event OrderRepaid(\\n        bytes32 orderHash,\\n        uint256 payTimes,\\n        bool finalized\\n    );\\n\\n    event OrderBroken(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is successfully cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     * @param offerer   The offerer of the cancelled order.\\n     */\\n    event OrderCancelled(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is explicitly validated. Note that\\n     *      this event will not be emitted on partial fills even though they do\\n     *      validate the order as part of partial fulfillment.\\n     *\\n     * @param orderHash The hash of the validated order.\\n     * @param offerer   The offerer of the validated order.\\n     */\\n    event OrderValidated(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\\n     *\\n     * @param newCounter The new counter for the offerer.\\n     * @param offerer  The offerer in question.\\n     */\\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has\\n     *      already been fully filled.\\n     *\\n     * @param orderHash The order hash on which a fill was attempted.\\n     */\\n    error OrderAlreadyFilled(bytes32 orderHash);\\n\\n    error OrderAlreadyFinalized(bytes32 orderHash);\\n\\n    error OrderAlreadyStarted(bytes32 orderHash);\\n\\n    error OrderNotStarted(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order outside the\\n     *      specified start time and end time.\\n     */\\n    error InvalidTime();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order referencing an\\n     *      invalid conduit (i.e. one that has not been deployed).\\n     */\\n    error InvalidConduit(bytes32 conduitKey, address conduit);\\n\\n    /**\\n     * @dev Revert with an error when an order is supplied for fulfillment with\\n     *      a consideration array that is shorter than the original array.\\n     */\\n    error MissingOriginalConsiderationItems();\\n\\n    /**\\n     * @dev Revert with an error when a call to a conduit fails with revert data\\n     *      that is too expensive to return.\\n     */\\n    error InvalidCallToConduit(address conduit);\\n\\n    /**\\n     * @dev Revert with an error if a consideration amount has not been fully\\n     *      zeroed out after applying all fulfillments.\\n     *\\n     * @param orderIndex         The index of the order with the consideration\\n     *                           item with a shortfall.\\n     * @param considerationIndex The index of the consideration item on the\\n     *                           order.\\n     * @param shortfallAmount    The unfulfilled consideration amount.\\n     */\\n    error ConsiderationNotMet(\\n        uint256 orderIndex,\\n        uint256 considerationIndex,\\n        uint256 shortfallAmount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when insufficient ether is supplied as part of\\n     *      msg.value when fulfilling orders.\\n     */\\n    error InsufficientEtherSupplied();\\n\\n    /**\\n     * @dev Revert with an error when an ether transfer reverts.\\n     */\\n    error EtherTransferGenericFailure(address account, uint256 amount);\\n\\n    /**\\n     * @dev Revert with an error when a partial fill is attempted on an order\\n     *      that does not specify partial fill support in its order type.\\n     */\\n    error PartialFillsNotEnabledForOrder();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has been\\n     *      cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     */\\n    error OrderIsCancelled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order that has\\n     *      been partially filled.\\n     *\\n     * @param orderHash The hash of the partially used order.\\n     */\\n    error OrderPartiallyFilled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel an order as a caller\\n     *      other than the indicated offerer or zone.\\n     */\\n    error InvalidCanceller();\\n\\n    /**\\n     * @dev Revert with an error when supplying a fraction with a value of zero\\n     *      for the numerator or denominator, or one where the numerator exceeds\\n     *      the denominator.\\n     */\\n    error BadFraction();\\n\\n    /**\\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\\n     *      non-payable basic order route or does not supply any callvalue to a\\n     *      payable basic order route.\\n     */\\n    error InvalidMsgValue(uint256 value);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order using\\n     *      calldata not produced by default ABI encoding.\\n     */\\n    error InvalidBasicOrderParameterEncoding();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill any number of\\n     *      available orders when none are fulfillable.\\n     */\\n    error NoSpecifiedOrdersAvailable();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order with an\\n     *      offer for ETH outside of matching orders.\\n     */\\n    error InvalidNativeOfferItem();\\n\\n    error OrderNotValidated(bytes32 orderHash);\\n\\n    error OrderExpired(bytes32 orderHash);\\n\\n    error OrderNotExpired(bytes32 orderHash);\\n\\n    error OrderInvalidRepayParameters(bytes32 orderHash);\\n\\n    error InvalidOrderParameters();\\n}\\n\",\"keccak256\":\"0x71a166db3dbdc44218081f02a9fe0de3cf2d3d9680ac88ef68c0b376eb1a3e97\",\"license\":\"MIT\"},\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/CounterManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConsiderationEventsAndErrors\\n} from \\\"../interfaces/ConsiderationEventsAndErrors.sol\\\";\\n\\nimport { ReentrancyGuard } from \\\"./ReentrancyGuard.sol\\\";\\n\\ncontract CounterManager is ConsiderationEventsAndErrors, ReentrancyGuard {\\n\\n    mapping(address => uint256) private _counters;\\n\\n    function _incrementCounter() internal returns (uint256 newCounter) {\\n        _assertNonReentrant();\\n\\n        unchecked {\\n            newCounter = ++_counters[msg.sender];\\n        }\\n\\n        emit CounterIncremented(newCounter, msg.sender);\\n    }\\n\\n    function _getCounter(address offerer)\\n        internal\\n        view\\n        returns (uint256 currentCounter)\\n    {\\n        currentCounter = _counters[offerer];\\n    }\\n}\\n\",\"keccak256\":\"0xf07f27dab21fe6607342bc513064c81f10729cf4b9f41e6173ae66d6a4b7a25a\",\"license\":\"MIT\"},\"contracts/lib/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ReentrancyErrors } from \\\"../interfaces/ReentrancyErrors.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title ReentrancyGuard\\n * @author 0age\\n * @notice ReentrancyGuard contains a storage variable and related functionality\\n *         for protecting against reentrancy.\\n */\\ncontract ReentrancyGuard is ReentrancyErrors {\\n    // Prevent reentrant calls on protected functions.\\n    uint256 private _reentrancyGuard;\\n\\n    /**\\n     * @dev Initialize the reentrancy guard during deployment.\\n     */\\n    constructor() {\\n        // Initialize the reentrancy guard in a cleared state.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to ensure that the sentinel value for the\\n     *      reentrancy guard is not currently set and, if not, to set the\\n     *      sentinel value for the reentrancy guard.\\n     */\\n    function _setReentrancyGuard() internal {\\n        // Ensure that the reentrancy guard is not already set.\\n        _assertNonReentrant();\\n\\n        // Set the reentrancy guard.\\n        _reentrancyGuard = _ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to unset the reentrancy guard sentinel value.\\n     */\\n    function _clearReentrancyGuard() internal {\\n        // Clear the reentrancy guard.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal view function to ensure that the sentinel value for the\\n            reentrancy guard is not currently set.\\n     */\\n    function _assertNonReentrant() internal view {\\n        // Ensure that the reentrancy guard is not currently set.\\n        if (_reentrancyGuard != _NOT_ENTERED) {\\n            revert NoReentrantCalls();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa52711c788a24071f8a872ea5ee3030f0f8f592abf8f0d5577707e585a7628d5\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7723,"contract":"contracts/lib/CounterManager.sol:CounterManager","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":5403,"contract":"contracts/lib/CounterManager.sol:CounterManager","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/Executor.sol":{"Executor":{"abi":[{"inputs":[{"internalType":"address","name":"conduitController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadContractSignature","type":"error"},{"inputs":[],"name":"BadFraction","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"}],"name":"BadSignatureV","type":"error"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"},{"internalType":"uint256","name":"considerationIndex","type":"uint256"},{"internalType":"uint256","name":"shortfallAmount","type":"uint256"}],"name":"ConsiderationNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherTransferGenericFailure","type":"error"},{"inputs":[],"name":"InsufficientEtherSupplied","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidBasicOrderParameterEncoding","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidCallToConduit","type":"error"},{"inputs":[],"name":"InvalidCanceller","type":"error"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidConduit","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidMsgValue","type":"error"},{"inputs":[],"name":"InvalidNativeOfferItem","type":"error"},{"inputs":[],"name":"InvalidOrderParameters","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidTime","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[],"name":"MissingOriginalConsiderationItems","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[],"name":"NoReentrantCalls","type":"error"},{"inputs":[],"name":"NoSpecifiedOrdersAvailable","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFilled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFinalized","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderInvalidRepayParameters","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderIsCancelled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotValidated","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderPartiallyFilled","type":"error"},{"inputs":[],"name":"PartialFillsNotEnabledForOrder","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCounter","type":"uint256"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"CounterIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderBroken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"},{"indexed":false,"internalType":"uint256","name":"shadowId","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payTimes","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finalized","type":"bool"}],"name":"OrderRepaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderValidated","type":"event"}],"devdoc":{"author":"0age","errors":{"BadContractSignature()":[{"details":"Revert with an error when an EIP-1271 call to an account fails."}],"BadFraction()":[{"details":"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator."}],"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"BadSignatureV(uint8)":[{"details":"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.","params":{"v":"The invalid v value."}}],"ConsiderationNotMet(uint256,uint256,uint256)":[{"details":"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.","params":{"considerationIndex":"The index of the consideration item on the                           order.","orderIndex":"The index of the order with the consideration                           item with a shortfall.","shortfallAmount":"The unfulfilled consideration amount."}}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"EtherTransferGenericFailure(address,uint256)":[{"details":"Revert with an error when an ether transfer reverts."}],"InsufficientEtherSupplied()":[{"details":"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders."}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidBasicOrderParameterEncoding()":[{"details":"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding."}],"InvalidCallToConduit(address)":[{"details":"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return."}],"InvalidCanceller()":[{"details":"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone."}],"InvalidConduit(bytes32,address)":[{"details":"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed)."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"InvalidMsgValue(uint256)":[{"details":"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route."}],"InvalidNativeOfferItem()":[{"details":"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders."}],"InvalidSignature()":[{"details":"Revert with an error when a signer cannot be recovered from the      supplied signature."}],"InvalidSigner()":[{"details":"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract."}],"InvalidTime()":[{"details":"Revert with an error when attempting to fill an order outside the      specified start time and end time."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"MissingOriginalConsiderationItems()":[{"details":"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}],"NoSpecifiedOrdersAvailable()":[{"details":"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable."}],"OrderAlreadyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has      already been fully filled.","params":{"orderHash":"The order hash on which a fill was attempted."}}],"OrderIsCancelled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has been      cancelled.","params":{"orderHash":"The hash of the cancelled order."}}],"OrderPartiallyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill a basic order that has      been partially filled.","params":{"orderHash":"The hash of the partially used order."}}],"PartialFillsNotEnabledForOrder()":[{"details":"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type."}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{"constructor":{"details":"Derive and set hashes, reference chainId, and associated domain      separator during deployment.","params":{"conduitController":"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens."}}},"title":"Executor","version":1},"evm":{"bytecode":{"functionDebugData":{"@_4348":{"entryPoint":null,"id":4348,"parameterSlots":1,"returnSlots":0},"@_4654":{"entryPoint":null,"id":4654,"parameterSlots":1,"returnSlots":0},"@_5470":{"entryPoint":null,"id":5470,"parameterSlots":1,"returnSlots":0},"@_5935":{"entryPoint":null,"id":5935,"parameterSlots":1,"returnSlots":0},"@_7732":{"entryPoint":null,"id":7732,"parameterSlots":0,"returnSlots":0},"@_8290":{"entryPoint":null,"id":8290,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_4760":{"entryPoint":275,"id":4760,"parameterSlots":0,"returnSlots":4},"@_nameString_4683":{"entryPoint":null,"id":4683,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":1127,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_bytes32_fromMemory":{"entryPoint":1175,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_stringliteral_0c2a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e4b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_41ba":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_59d7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5c66":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7afc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89a9":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9c70":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b48f":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bab2":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_cfcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6455:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:54","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:54"},"nodeType":"YulFunctionCall","src":"143:12:54"},"nodeType":"YulExpressionStatement","src":"143:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:54"},"nodeType":"YulFunctionCall","src":"112:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:54"},"nodeType":"YulFunctionCall","src":"108:32:54"},"nodeType":"YulIf","src":"105:52:54"},{"nodeType":"YulVariableDeclaration","src":"166:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:54"},"nodeType":"YulFunctionCall","src":"179:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:54"},"nodeType":"YulFunctionCall","src":"260:12:54"},"nodeType":"YulExpressionStatement","src":"260:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:54"},"nodeType":"YulFunctionCall","src":"239:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:54"},"nodeType":"YulFunctionCall","src":"235:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:54"},"nodeType":"YulFunctionCall","src":"224:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:54"},"nodeType":"YulFunctionCall","src":"214:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:54"},"nodeType":"YulFunctionCall","src":"207:50:54"},"nodeType":"YulIf","src":"204:70:54"},{"nodeType":"YulAssignment","src":"283:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:54"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:54","type":""}],"src":"14:290:54"},{"body":{"nodeType":"YulBlock","src":"407:147:54","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:54"},"nodeType":"YulFunctionCall","src":"455:12:54"},"nodeType":"YulExpressionStatement","src":"455:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:54"},"nodeType":"YulFunctionCall","src":"424:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:54"},"nodeType":"YulFunctionCall","src":"420:32:54"},"nodeType":"YulIf","src":"417:52:54"},{"nodeType":"YulAssignment","src":"478:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:54"},"nodeType":"YulFunctionCall","src":"488:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:54"}]},{"nodeType":"YulAssignment","src":"513:35:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:54"},"nodeType":"YulFunctionCall","src":"529:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:54"},"nodeType":"YulFunctionCall","src":"523:25:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:54","type":""}],"src":"309:245:54"},{"body":{"nodeType":"YulBlock","src":"614:76:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:54"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:54","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:54"},"nodeType":"YulFunctionCall","src":"624:32:54"},"nodeType":"YulExpressionStatement","src":"624:32:54"},{"nodeType":"YulAssignment","src":"665:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:54","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:54"},"nodeType":"YulFunctionCall","src":"672:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:54"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:54","type":""}],"src":"559:131:54"},{"body":{"nodeType":"YulBlock","src":"750:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:54"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:54","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:54"},"nodeType":"YulFunctionCall","src":"760:31:54"},"nodeType":"YulExpressionStatement","src":"760:31:54"},{"nodeType":"YulAssignment","src":"800:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:54"},"nodeType":"YulFunctionCall","src":"807:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:54"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:54","type":""}],"src":"695:130:54"},{"body":{"nodeType":"YulBlock","src":"885:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:54"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:54","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:54"},"nodeType":"YulFunctionCall","src":"895:30:54"},"nodeType":"YulExpressionStatement","src":"895:30:54"},{"nodeType":"YulAssignment","src":"934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:54"},"nodeType":"YulFunctionCall","src":"941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:54"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:54","type":""}],"src":"830:129:54"},{"body":{"nodeType":"YulBlock","src":"1019:73:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:54"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:54","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:54"},"nodeType":"YulFunctionCall","src":"1029:29:54"},"nodeType":"YulExpressionStatement","src":"1029:29:54"},{"nodeType":"YulAssignment","src":"1067:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:54","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:54"},"nodeType":"YulFunctionCall","src":"1074:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:54"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:54","type":""}],"src":"964:128:54"},{"body":{"nodeType":"YulBlock","src":"1152:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:54"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:54","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:54"},"nodeType":"YulFunctionCall","src":"1162:31:54"},"nodeType":"YulExpressionStatement","src":"1162:31:54"},{"nodeType":"YulAssignment","src":"1202:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:54"},"nodeType":"YulFunctionCall","src":"1209:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:54"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:54","type":""}],"src":"1097:130:54"},{"body":{"nodeType":"YulBlock","src":"1287:71:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:54"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:54","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:54"},"nodeType":"YulFunctionCall","src":"1297:27:54"},"nodeType":"YulExpressionStatement","src":"1297:27:54"},{"nodeType":"YulAssignment","src":"1333:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:54","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:54"},"nodeType":"YulFunctionCall","src":"1340:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:54"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:54","type":""}],"src":"1232:126:54"},{"body":{"nodeType":"YulBlock","src":"1418:79:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:54"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:54","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:54"},"nodeType":"YulFunctionCall","src":"1428:35:54"},"nodeType":"YulExpressionStatement","src":"1428:35:54"},{"nodeType":"YulAssignment","src":"1472:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:54","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:54"},"nodeType":"YulFunctionCall","src":"1479:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:54"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:54","type":""}],"src":"1363:134:54"},{"body":{"nodeType":"YulBlock","src":"1557:72:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:54"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:54","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:54"},"nodeType":"YulFunctionCall","src":"1567:28:54"},"nodeType":"YulExpressionStatement","src":"1567:28:54"},{"nodeType":"YulAssignment","src":"1604:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:54"},"nodeType":"YulFunctionCall","src":"1611:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:54"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:54","type":""}],"src":"1502:127:54"},{"body":{"nodeType":"YulBlock","src":"1689:78:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:54"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:54","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:54"},"nodeType":"YulFunctionCall","src":"1699:34:54"},"nodeType":"YulExpressionStatement","src":"1699:34:54"},{"nodeType":"YulAssignment","src":"1742:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:54","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:54"},"nodeType":"YulFunctionCall","src":"1749:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:54"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:54","type":""}],"src":"1634:133:54"},{"body":{"nodeType":"YulBlock","src":"1827:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:54"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:54","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:54"},"nodeType":"YulFunctionCall","src":"1837:30:54"},"nodeType":"YulExpressionStatement","src":"1837:30:54"},{"nodeType":"YulAssignment","src":"1876:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:54"},"nodeType":"YulFunctionCall","src":"1883:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:54"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:54","type":""}],"src":"1772:129:54"},{"body":{"nodeType":"YulBlock","src":"1961:59:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:54"},"nodeType":"YulFunctionCall","src":"1971:16:54"},"nodeType":"YulExpressionStatement","src":"1971:16:54"},{"nodeType":"YulAssignment","src":"1996:18:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:54"},"nodeType":"YulFunctionCall","src":"2003:11:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:54"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:54","type":""}],"src":"1906:114:54"},{"body":{"nodeType":"YulBlock","src":"4136:815:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:54"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:54","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:54"},"nodeType":"YulFunctionCall","src":"4146:31:54"},"nodeType":"YulExpressionStatement","src":"4146:31:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:54"},"nodeType":"YulFunctionCall","src":"4193:12:54"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:54","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:54"},"nodeType":"YulFunctionCall","src":"4186:40:54"},"nodeType":"YulExpressionStatement","src":"4186:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:54"},"nodeType":"YulFunctionCall","src":"4242:12:54"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:54","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:54"},"nodeType":"YulFunctionCall","src":"4235:38:54"},"nodeType":"YulExpressionStatement","src":"4235:38:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:54","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:54"},"nodeType":"YulFunctionCall","src":"4289:12:54"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:54","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:54"},"nodeType":"YulFunctionCall","src":"4282:43:54"},"nodeType":"YulExpressionStatement","src":"4282:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:54","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:54"},"nodeType":"YulFunctionCall","src":"4341:12:54"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:54","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:54"},"nodeType":"YulFunctionCall","src":"4334:41:54"},"nodeType":"YulExpressionStatement","src":"4334:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:54"},"nodeType":"YulFunctionCall","src":"4391:12:54"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:54","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:54"},"nodeType":"YulFunctionCall","src":"4384:39:54"},"nodeType":"YulExpressionStatement","src":"4384:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:54","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:54"},"nodeType":"YulFunctionCall","src":"4439:12:54"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:54","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:54"},"nodeType":"YulFunctionCall","src":"4432:41:54"},"nodeType":"YulExpressionStatement","src":"4432:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:54","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:54"},"nodeType":"YulFunctionCall","src":"4489:13:54"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:54","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:54"},"nodeType":"YulFunctionCall","src":"4482:43:54"},"nodeType":"YulExpressionStatement","src":"4482:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:54","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:54"},"nodeType":"YulFunctionCall","src":"4541:13:54"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:54","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:54"},"nodeType":"YulFunctionCall","src":"4534:41:54"},"nodeType":"YulExpressionStatement","src":"4534:41:54"},{"nodeType":"YulAssignment","src":"4584:361:54","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:54","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:54"},"nodeType":"YulFunctionCall","src":"4921:13:54"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:54"},"nodeType":"YulFunctionCall","src":"4891:44:54"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:54"},"nodeType":"YulFunctionCall","src":"4861:75:54"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:54"},"nodeType":"YulFunctionCall","src":"4831:106:54"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:54"},"nodeType":"YulFunctionCall","src":"4801:137:54"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:54"},"nodeType":"YulFunctionCall","src":"4771:168:54"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:54"},"nodeType":"YulFunctionCall","src":"4741:199:54"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:54"},"nodeType":"YulFunctionCall","src":"4711:230:54"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:54"},"nodeType":"YulFunctionCall","src":"4681:261:54"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:54"},"nodeType":"YulFunctionCall","src":"4651:292:54"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:54"},"nodeType":"YulFunctionCall","src":"4621:323:54"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:54"},"nodeType":"YulFunctionCall","src":"4591:354:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4120:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:54","type":""}],"src":"2025:2926:54"},{"body":{"nodeType":"YulBlock","src":"5653:306:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:54"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:54","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:54"},"nodeType":"YulFunctionCall","src":"5663:28:54"},"nodeType":"YulExpressionStatement","src":"5663:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:54"},"nodeType":"YulFunctionCall","src":"5707:12:54"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:54","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:54"},"nodeType":"YulFunctionCall","src":"5700:36:54"},"nodeType":"YulExpressionStatement","src":"5700:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:54","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:54"},"nodeType":"YulFunctionCall","src":"5752:12:54"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:54","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:54"},"nodeType":"YulFunctionCall","src":"5745:39:54"},"nodeType":"YulExpressionStatement","src":"5745:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:54","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:54"},"nodeType":"YulFunctionCall","src":"5800:12:54"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:54","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:54"},"nodeType":"YulFunctionCall","src":"5793:40:54"},"nodeType":"YulExpressionStatement","src":"5793:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:54","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:54"},"nodeType":"YulFunctionCall","src":"5849:12:54"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:54","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:54"},"nodeType":"YulFunctionCall","src":"5842:49:54"},"nodeType":"YulExpressionStatement","src":"5842:49:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:54","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:54"},"nodeType":"YulFunctionCall","src":"5907:12:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:54"},"nodeType":"YulFunctionCall","src":"5900:25:54"},"nodeType":"YulExpressionStatement","src":"5900:25:54"},{"nodeType":"YulAssignment","src":"5934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:54"},"nodeType":"YulFunctionCall","src":"5941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5637:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:54","type":""}],"src":"4956:1003:54"},{"body":{"nodeType":"YulBlock","src":"6177:276:54","statements":[{"nodeType":"YulAssignment","src":"6187:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:54"},"nodeType":"YulFunctionCall","src":"6195:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:54"},"nodeType":"YulFunctionCall","src":"6223:25:54"},"nodeType":"YulExpressionStatement","src":"6223:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:54"},"nodeType":"YulFunctionCall","src":"6264:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:54"},"nodeType":"YulFunctionCall","src":"6257:34:54"},"nodeType":"YulExpressionStatement","src":"6257:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:54"},"nodeType":"YulFunctionCall","src":"6307:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:54"},"nodeType":"YulFunctionCall","src":"6300:34:54"},"nodeType":"YulExpressionStatement","src":"6300:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:54"},"nodeType":"YulFunctionCall","src":"6350:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:54"},"nodeType":"YulFunctionCall","src":"6343:34:54"},"nodeType":"YulExpressionStatement","src":"6343:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:54"},"nodeType":"YulFunctionCall","src":"6393:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:54"},"nodeType":"YulFunctionCall","src":"6430:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:54"},"nodeType":"YulFunctionCall","src":"6426:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:54"},"nodeType":"YulFunctionCall","src":"6414:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:54"},"nodeType":"YulFunctionCall","src":"6386:61:54"},"nodeType":"YulExpressionStatement","src":"6386:61:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6114:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:54","type":""}],"src":"5964:489:54"}]},"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_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_9c70(pos) -> end\n    {\n        mstore(pos, \"uint256 duration,\")\n        end := add(pos, 17)\n    }\n    function abi_encode_stringliteral_bab2(pos) -> end\n    {\n        mstore(pos, \"uint256 periods,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_1e4b(pos) -> end\n    {\n        mstore(pos, \"uint256 amount,\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_89a9(pos) -> end\n    {\n        mstore(pos, \"uint256 ratio,\")\n        end := add(pos, 14)\n    }\n    function abi_encode_stringliteral_5c66(pos) -> end\n    {\n        mstore(pos, \"uint256 royalty,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_b48f(pos) -> end\n    {\n        mstore(pos, \"uint256 fee,\")\n        end := add(pos, 12)\n    }\n    function abi_encode_stringliteral_0c2a(pos) -> end\n    {\n        mstore(pos, \"uint256 withdrawFee,\")\n        end := add(pos, 20)\n    }\n    function abi_encode_stringliteral_7afc(pos) -> end\n    {\n        mstore(pos, \"uint256 salt,\")\n        end := add(pos, 13)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral_41ba(pos) -> end\n    {\n        mstore(pos, \"uint256 counter\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address token,\")\n        mstore(add(pos, 46), \"uint256 identifier,\")\n        mstore(add(pos, 65), \"address currency,\")\n        mstore(add(pos, 82), \"address artist,\")\n        mstore(add(pos, 97), \"address platform,\")\n        mstore(add(pos, 114), \"uint256 startTime,\")\n        mstore(add(pos, 132), \"uint256 endTime,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral_41ba(abi_encode_stringliteral_cfcd(abi_encode_stringliteral_7afc(abi_encode_stringliteral_0c2a(abi_encode_stringliteral_b48f(abi_encode_stringliteral_5c66(abi_encode_stringliteral_89a9(abi_encode_stringliteral_1e4b(abi_encode_stringliteral_bab2(abi_encode_stringliteral_9c70(add(pos, 148))))))))))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"61018060405234801561001157600080fd5b5060405161054538038061054583398101604081905261003091610467565b8080808061003c610113565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fe9190610497565b506101605250506001600055506104bb915050565b600080808061014260408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3945060009161039c91016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b60006020828403121561047957600080fd5b81516001600160a01b038116811461049057600080fd5b9392505050565b600080604083850312156104aa57600080fd5b505080516020909101519092909150565b60805160a05160c05160e05161010051610120516101405161016051603f6105066000396000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220a39be3481ec5bc14e743aade6e40979d83af20344682a363de1722f9783f003264736f6c634300080e0033","opcodes":"PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x545 CODESIZE SUB DUP1 PUSH2 0x545 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x467 JUMP JUMPDEST DUP1 DUP1 DUP1 DUP1 PUSH2 0x3C PUSH2 0x113 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDA 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 0xFE SWAP2 SWAP1 PUSH2 0x497 JUMP JUMPDEST POP PUSH2 0x160 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x4BB SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x142 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x312E3 PUSH1 0xEC SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP6 POP PUSH32 0xE6BBD6277E1BF288EED5E8D1780F9A50B239E86B153736BCEEBCCF4EA79D90B3 SWAP5 POP PUSH1 0x0 SWAP2 PUSH2 0x39C SWAP2 ADD PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL DUP2 MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0x10 DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965722C00000000000000000000000000 PUSH1 0x2E DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC818DD5C9C995B98DE4B PUSH1 0x7A SHL PUSH1 0x41 DUP3 ADD MSTORE PUSH15 0x1859191C995CDCC8185C9D1A5CDD0B PUSH1 0x8A SHL PUSH1 0x52 DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC81C1B185D199BDC9B4B PUSH1 0x7A SHL PUSH1 0x61 DUP3 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH1 0x72 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88191D5C985D1A5BDB8B PUSH1 0x7A SHL PUSH1 0x94 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C195C9A5BD91CCB PUSH1 0x82 SHL PUSH1 0xA5 DUP3 ADD MSTORE PUSH15 0x1D5A5B9D0C8D4D88185B5BDD5B9D0B PUSH1 0x8A SHL PUSH1 0xB5 DUP3 ADD MSTORE PUSH14 0x1D5A5B9D0C8D4D881C985D1A5BCB PUSH1 0x92 SHL PUSH1 0xC4 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C9BDE585B1D1E4B PUSH1 0x82 SHL PUSH1 0xD2 DUP3 ADD MSTORE PUSH12 0x1D5A5B9D0C8D4D881999594B PUSH1 0xA2 SHL PUSH1 0xE2 DUP3 ADD MSTORE PUSH32 0x75696E743235362077697468647261774665652C000000000000000000000000 PUSH1 0xEE DUP3 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x102 DUP3 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x10F DUP3 ADD MSTORE PUSH15 0x3AB4B73A191A9B1031B7BAB73A32B9 PUSH1 0x89 SHL PUSH2 0x122 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH2 0x131 DUP3 ADD MSTORE PUSH2 0x132 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH1 0x3F PUSH2 0x506 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 SWAP12 0xE3 BASEFEE 0x1E 0xC5 0xBC EQ 0xE7 NUMBER 0xAA 0xDE PUSH15 0x40979D83AF20344682A363DE1722F9 PUSH25 0x3F003264736F6C634300080E00330000000000000000000000 ","sourceMap":"584:21859:37:-:0;;;992:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1041:17;;;;786:19:32;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:32;;-1:-1:-1;1203:187:32;;;6223:25:54;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:54;;6300:34;;;;6350:18;;;6343:34;1371:4:32;6393:19:54;;;6386:61;1203:187:32;;;;;;;;;;6195:19:54;;1203:187:32;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:32;;;;;;1032:42;;;-1:-1:-1;;;1032:42:32;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:32;;-1:-1:-1;;2345:1:33;658:16:42;:31;-1:-1:-1;584:21859:37;;-1:-1:-1;;584:21859:37;1527:1491:32;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:32;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:32;;;;1909:724;1778:31;;-1:-1:-1;1834:23:32;;-1:-1:-1;;;1909:724:32;;;-1:-1:-1;;;4146:31:54;;-1:-1:-1;;;4202:2:54;4193:12;;4186:40;-1:-1:-1;;;4251:2:54;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:54;4341:12;;4334:41;-1:-1:-1;;;4400:2:54;4391:12;;4384:39;-1:-1:-1;;;4448:2:54;4439:12;;4432:41;-1:-1:-1;;;4498:3:54;4489:13;;4482:43;-1:-1:-1;;;4550:3:54;4541:13;;4534:41;-1:-1:-1;;;4930:3:54;4921:13;;624:32;-1:-1:-1;;;672:12:54;;;760:31;-1:-1:-1;;;807:12:54;;;895:30;-1:-1:-1;;;941:12:54;;;1029:29;-1:-1:-1;;;1074:12:54;;;1162:31;-1:-1:-1;;;1209:12:54;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:54;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:54;;;1837:30;-1:-1:-1;;;1883:12:54;;;1971:16;2003:11;;;2025:2926;1909:724:32;;;;-1:-1:-1;;1909:724:32;;;;;;;;;;-1:-1:-1;;;1909:724:32;2690:248;;5663:28:54;-1:-1:-1;;;5707:12:54;;;5700:36;-1:-1:-1;;;5752:12:54;;;5745:39;-1:-1:-1;;;5800:12:54;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:54;;;5900:25;1909:724:32;-1:-1:-1;5941:12:54;;2690:248:32;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:54:-;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:54;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:54:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:54;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:54:o;5964:489::-;584:21859:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220a39be3481ec5bc14e743aade6e40979d83af20344682a363de1722f9783f003264736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 SWAP12 0xE3 BASEFEE 0x1E 0xC5 0xBC EQ 0xE7 NUMBER 0xAA 0xDE PUSH15 0x40979D83AF20344682A363DE1722F9 PUSH25 0x3F003264736F6C634300080E00330000000000000000000000 ","sourceMap":"584:21859:37:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"infinite","totalCost":"infinite"},"internal":{"_callConduitUsingOffsets(bytes32,uint256,uint256)":"infinite","_getAccumulatorConduitKey(bytes memory)":"infinite","_insert(bytes32,bytes memory,enum ConduitItemType,address,address,address,uint256,uint256)":"infinite","_transferERC1155(address,address,address,uint256,uint256,bytes32,bytes memory)":"infinite","_transferERC20(address,address,address,uint256,bytes32,bytes memory)":"infinite","_transferERC721(address,address,address,uint256,uint256,bytes32,bytes memory)":"infinite","_transferEth(address payable,uint256)":"infinite","_transferIndividual721Or1155Item(enum ItemType,address,address,address,uint256,uint256,bytes32)":"infinite","_trigger(bytes32,bytes memory)":"infinite","_triggerIfArmed(bytes memory)":"infinite","_triggerIfArmedAndNotAccumulatable(bytes memory,bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNativeOfferItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrderParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderInvalidRepayParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotValidated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"CounterIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderBroken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"name\":\"OrderRepaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidNativeOfferItem()\":[{\"details\":\"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders.\"}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"Executor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Executor contains functions related to processing executions (i.e.         transferring items, either directly or via conduits).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/Executor.sol\":\"Executor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/conduit/lib/ConduitEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ConduitItemType {\\n    NATIVE, // unused\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\\n\",\"keccak256\":\"0x1a84850bbff4b820573334c70ee0797462f20fd8c9b86fdebeacc85ecb1963a6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitItemType } from \\\"./ConduitEnums.sol\\\";\\n\\nstruct ConduitTransfer {\\n    ConduitItemType itemType;\\n    address token;\\n    address from;\\n    address to;\\n    uint256 identifier;\\n    uint256 amount;\\n}\\n\\nstruct ConduitBatch1155Transfer {\\n    address token;\\n    address from;\\n    address to;\\n    uint256[] ids;\\n    uint256[] amounts;\\n}\\n\",\"keccak256\":\"0xe3e87c74dd79c59293e49b7236cc7befdc19886bb79af5fe53208b1772fd24f9\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title ConduitInterface\\n * @author 0age\\n * @notice ConduitInterface contains all external function interfaces, events,\\n *         and errors for conduit contracts.\\n */\\ninterface ConduitInterface {\\n    /**\\n     * @dev Revert with an error when attempting to execute transfers using a\\n     *      caller that does not have an open channel.\\n     */\\n    error ChannelClosed(address channel);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update a channel to the\\n     *      current status of that channel.\\n     */\\n    error ChannelStatusAlreadySet(address channel, bool isOpen);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute a transfer for an\\n     *      item that does not have an ERC20/721/1155 item type.\\n     */\\n    error InvalidItemType();\\n\\n    /**\\n     * @dev Revert with an error when attempting to update the status of a\\n     *      channel from a caller that is not the conduit controller.\\n     */\\n    error InvalidController();\\n\\n    /**\\n     * @dev Emit an event whenever a channel is opened or closed.\\n     *\\n     * @param channel The channel that has been updated.\\n     * @param open    A boolean indicating whether the conduit is open or not.\\n     */\\n    event ChannelUpdated(address indexed channel, bool open);\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\\n     *         open channel can call this function.\\n     *\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\\n     *         a caller with an open channel can call this function.\\n     *\\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external;\\n}\\n\",\"keccak256\":\"0x628e23ec7e820e8ac59c0999211bb022bb5c5581a5bc6bd39465d6419d7d85b5\",\"license\":\"MIT\"},\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConsiderationEventsAndErrors\\n * @author 0age\\n * @notice ConsiderationEventsAndErrors contains all events and errors.\\n */\\ninterface ConsiderationEventsAndErrors {\\n\\n    event OrderFulfilled(\\n        bytes32 orderHash,\\n        address indexed offerer,\\n        uint256 shadowId\\n    );\\n\\n    event OrderRepaid(\\n        bytes32 orderHash,\\n        uint256 payTimes,\\n        bool finalized\\n    );\\n\\n    event OrderBroken(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is successfully cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     * @param offerer   The offerer of the cancelled order.\\n     */\\n    event OrderCancelled(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is explicitly validated. Note that\\n     *      this event will not be emitted on partial fills even though they do\\n     *      validate the order as part of partial fulfillment.\\n     *\\n     * @param orderHash The hash of the validated order.\\n     * @param offerer   The offerer of the validated order.\\n     */\\n    event OrderValidated(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\\n     *\\n     * @param newCounter The new counter for the offerer.\\n     * @param offerer  The offerer in question.\\n     */\\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has\\n     *      already been fully filled.\\n     *\\n     * @param orderHash The order hash on which a fill was attempted.\\n     */\\n    error OrderAlreadyFilled(bytes32 orderHash);\\n\\n    error OrderAlreadyFinalized(bytes32 orderHash);\\n\\n    error OrderAlreadyStarted(bytes32 orderHash);\\n\\n    error OrderNotStarted(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order outside the\\n     *      specified start time and end time.\\n     */\\n    error InvalidTime();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order referencing an\\n     *      invalid conduit (i.e. one that has not been deployed).\\n     */\\n    error InvalidConduit(bytes32 conduitKey, address conduit);\\n\\n    /**\\n     * @dev Revert with an error when an order is supplied for fulfillment with\\n     *      a consideration array that is shorter than the original array.\\n     */\\n    error MissingOriginalConsiderationItems();\\n\\n    /**\\n     * @dev Revert with an error when a call to a conduit fails with revert data\\n     *      that is too expensive to return.\\n     */\\n    error InvalidCallToConduit(address conduit);\\n\\n    /**\\n     * @dev Revert with an error if a consideration amount has not been fully\\n     *      zeroed out after applying all fulfillments.\\n     *\\n     * @param orderIndex         The index of the order with the consideration\\n     *                           item with a shortfall.\\n     * @param considerationIndex The index of the consideration item on the\\n     *                           order.\\n     * @param shortfallAmount    The unfulfilled consideration amount.\\n     */\\n    error ConsiderationNotMet(\\n        uint256 orderIndex,\\n        uint256 considerationIndex,\\n        uint256 shortfallAmount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when insufficient ether is supplied as part of\\n     *      msg.value when fulfilling orders.\\n     */\\n    error InsufficientEtherSupplied();\\n\\n    /**\\n     * @dev Revert with an error when an ether transfer reverts.\\n     */\\n    error EtherTransferGenericFailure(address account, uint256 amount);\\n\\n    /**\\n     * @dev Revert with an error when a partial fill is attempted on an order\\n     *      that does not specify partial fill support in its order type.\\n     */\\n    error PartialFillsNotEnabledForOrder();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has been\\n     *      cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     */\\n    error OrderIsCancelled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order that has\\n     *      been partially filled.\\n     *\\n     * @param orderHash The hash of the partially used order.\\n     */\\n    error OrderPartiallyFilled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel an order as a caller\\n     *      other than the indicated offerer or zone.\\n     */\\n    error InvalidCanceller();\\n\\n    /**\\n     * @dev Revert with an error when supplying a fraction with a value of zero\\n     *      for the numerator or denominator, or one where the numerator exceeds\\n     *      the denominator.\\n     */\\n    error BadFraction();\\n\\n    /**\\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\\n     *      non-payable basic order route or does not supply any callvalue to a\\n     *      payable basic order route.\\n     */\\n    error InvalidMsgValue(uint256 value);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order using\\n     *      calldata not produced by default ABI encoding.\\n     */\\n    error InvalidBasicOrderParameterEncoding();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill any number of\\n     *      available orders when none are fulfillable.\\n     */\\n    error NoSpecifiedOrdersAvailable();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order with an\\n     *      offer for ETH outside of matching orders.\\n     */\\n    error InvalidNativeOfferItem();\\n\\n    error OrderNotValidated(bytes32 orderHash);\\n\\n    error OrderExpired(bytes32 orderHash);\\n\\n    error OrderNotExpired(bytes32 orderHash);\\n\\n    error OrderInvalidRepayParameters(bytes32 orderHash);\\n\\n    error InvalidOrderParameters();\\n}\\n\",\"keccak256\":\"0x71a166db3dbdc44218081f02a9fe0de3cf2d3d9680ac88ef68c0b376eb1a3e97\",\"license\":\"MIT\"},\"contracts/interfaces/EIP1271Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface EIP1271Interface {\\n    function isValidSignature(bytes32 digest, bytes calldata signature)\\n        external\\n        view\\n        returns (bytes4);\\n}\",\"keccak256\":\"0xba82a40106e4565fda2909937d8ab23dc45622fead50d439ee09994d678828e0\",\"license\":\"MIT\"},\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"},\"contracts/interfaces/SignatureVerificationErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title SignatureVerificationErrors\\n * @author 0age\\n * @notice SignatureVerificationErrors contains all errors related to signature\\n *         verification.\\n */\\ninterface SignatureVerificationErrors {\\n    /**\\n     * @dev Revert with an error when a signature that does not contain a v\\n     *      value of 27 or 28 has been supplied.\\n     *\\n     * @param v The invalid v value.\\n     */\\n    error BadSignatureV(uint8 v);\\n\\n    /**\\n     * @dev Revert with an error when the signer recovered by the supplied\\n     *      signature does not match the offerer or an allowed EIP-1271 signer\\n     *      as specified by the offerer in the event they are a contract.\\n     */\\n    error InvalidSigner();\\n\\n    /**\\n     * @dev Revert with an error when a signer cannot be recovered from the\\n     *      supplied signature.\\n     */\\n    error InvalidSignature();\\n\\n    /**\\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\\n     */\\n    error BadContractSignature();\\n}\\n\",\"keccak256\":\"0xd0f5b26469ba6cd303e5ea9b53cf6b7c25cb00918097eb59a263678b51197381\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/Assertions.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { GettersAndDerivers } from \\\"./GettersAndDerivers.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { CounterManager } from \\\"./CounterManager.sol\\\";\\n\\ncontract Assertions is\\n    GettersAndDerivers,\\n    CounterManager,\\n    TokenTransferrerErrors\\n{\\n    constructor(address conduitController)\\n        GettersAndDerivers(conduitController)\\n    {}\\n\\n    function _assertNonZeroAmount(uint256 amount) internal pure {\\n        // Revert if the supplied amount is equal to zero.\\n        if (amount == 0) {\\n            revert MissingItemAmount();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5841bbb4c48b541f692567567de5672939afc452bc940ef69a9d0726697d6414\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\ncontract ConsiderationBase {\\n    bytes32 internal immutable _NAME_HASH;\\n    bytes32 internal immutable _VERSION_HASH;\\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\\n    bytes32 internal immutable _ORDER_TYPEHASH;\\n    uint256 internal immutable _CHAIN_ID;\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n\\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n\\n    constructor(address conduitController) {\\n        (\\n            _NAME_HASH,\\n            _VERSION_HASH,\\n            _EIP_712_DOMAIN_TYPEHASH,\\n            _ORDER_TYPEHASH\\n        ) = _deriveTypehashes();\\n\\n        _CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\\n\\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\\n\\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\\n        );\\n    }\\n\\n    function _deriveDomainSeparator() internal view returns (bytes32) {\\n        return keccak256(\\n            abi.encode(\\n                _EIP_712_DOMAIN_TYPEHASH,\\n                _NAME_HASH,\\n                _VERSION_HASH,\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    function _nameString() internal pure virtual returns (string memory) {\\n        return \\\"Consideration\\\";\\n    }\\n\\n    function _deriveTypehashes()\\n        internal\\n        pure\\n        returns (\\n            bytes32 nameHash,\\n            bytes32 versionHash,\\n            bytes32 eip712DomainTypehash,\\n            bytes32 orderTypehash\\n        )\\n    {\\n        nameHash = keccak256(bytes(_nameString()));\\n\\n        versionHash = keccak256(bytes(\\\"1.0\\\"));\\n\\n        bytes memory orderComponentsTypeString = abi.encodePacked(\\n            \\\"OrderComponents(\\\",\\n                \\\"address offerer,\\\",\\n                \\\"address token,\\\",\\n                \\\"uint256 identifier,\\\",\\n                \\\"address currency,\\\",\\n                \\\"address artist,\\\",\\n                \\\"address platform,\\\",\\n                \\\"uint256 startTime,\\\",\\n                \\\"uint256 endTime,\\\",\\n                \\\"uint256 duration,\\\",\\n                \\\"uint256 periods,\\\",\\n                \\\"uint256 amount,\\\",\\n                \\\"uint256 ratio,\\\",\\n                \\\"uint256 royalty,\\\",\\n                \\\"uint256 fee,\\\",\\n                \\\"uint256 withdrawFee,\\\",\\n                \\\"uint256 salt,\\\",\\n                \\\"bytes32 conduitKey,\\\",\\n                \\\"uint256 counter\\\",\\n            \\\")\\\"\\n        );\\n\\n        eip712DomainTypehash = keccak256(\\n            abi.encodePacked(\\n                \\\"EIP712Domain(\\\",\\n                    \\\"string name,\\\",\\n                    \\\"string version,\\\",\\n                    \\\"uint256 chainId,\\\",\\n                    \\\"address verifyingContract\\\",\\n                \\\")\\\"\\n            )\\n        );\\n\\n        orderTypehash = keccak256(orderComponentsTypeString);\\n    }\\n}\",\"keccak256\":\"0x9cd33c5b8bd60301ea09c0305587414ef38f6898fa7a1e0dfb217dd26091d106\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ItemType {\\n    NATIVE,\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\",\"keccak256\":\"0x6da855eedfe9a6360ac027a0b9ecebb6eacfd09fa5b0c5f55a141e21362808ea\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nstruct OrderComponents {\\n    address offerer;\\n    address token;\\n    uint256 identifier;\\n    address currency;\\n    address artist;\\n    address platform;\\n    uint256 startTime;\\n    uint256 endTime;\\n    uint256 duration;\\n    uint256 periods;\\n    uint256 amount;\\n    uint256 ratio;\\n    uint256 royalty;\\n    uint256 fee;\\n    uint256 withdrawFee;\\n    uint256 salt;\\n    bytes32 conduitKey;\\n    uint256 counter;\\n}\\n\\nstruct OrderParameters {\\n    address offerer;    // 0x00\\n    address token;      // 0x20\\n    uint256 identifier; // 0x40\\n    address currency;   // 0x60\\n    address artist;     // 0x80\\n    address platform;   // 0xa0\\n    uint256 startTime;  // 0xc0\\n    uint256 endTime;    // 0xe0\\n    uint256 duration;   // 0x100\\n    uint256 periods;    // 0x120\\n    uint256 amount;     // 0x140\\n    uint256 ratio;      // 0x160\\n    uint256 royalty;    // 0x180\\n    uint256 fee;        // 0x1a0\\n    uint256 withdrawFee;// 0x1c0\\n    uint256 salt;       // 0x1e0\\n    bytes32 conduitKey; // 0x200\\n}\\n\\nstruct Order {\\n    OrderParameters parameters;\\n    bytes signature;\\n}\\n\\nstruct OrderStatus {\\n    bool isValidated;\\n    bool isCancelled;\\n    bool isFinalized;\\n    bool isBroken;\\n    address fulfiller;\\n    uint256 startedAt;\\n    uint256 shadowId;\\n    uint256 paidTimes;\\n}\",\"keccak256\":\"0xe0a311247127b5bbaf92415e092bec717f990ed8cfe6dec710046d755db38048\",\"license\":\"MIT\"},\"contracts/lib/CounterManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConsiderationEventsAndErrors\\n} from \\\"../interfaces/ConsiderationEventsAndErrors.sol\\\";\\n\\nimport { ReentrancyGuard } from \\\"./ReentrancyGuard.sol\\\";\\n\\ncontract CounterManager is ConsiderationEventsAndErrors, ReentrancyGuard {\\n\\n    mapping(address => uint256) private _counters;\\n\\n    function _incrementCounter() internal returns (uint256 newCounter) {\\n        _assertNonReentrant();\\n\\n        unchecked {\\n            newCounter = ++_counters[msg.sender];\\n        }\\n\\n        emit CounterIncremented(newCounter, msg.sender);\\n    }\\n\\n    function _getCounter(address offerer)\\n        internal\\n        view\\n        returns (uint256 currentCounter)\\n    {\\n        currentCounter = _counters[offerer];\\n    }\\n}\\n\",\"keccak256\":\"0xf07f27dab21fe6607342bc513064c81f10729cf4b9f41e6173ae66d6a4b7a25a\",\"license\":\"MIT\"},\"contracts/lib/Executor.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport { ConduitItemType } from \\\"../conduit/lib/ConduitEnums.sol\\\";\\n\\nimport { ItemType } from \\\"./ConsiderationEnums.sol\\\";\\n\\nimport { Verifiers } from \\\"./Verifiers.sol\\\";\\n\\nimport { TokenTransferrer } from \\\"./TokenTransferrer.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title Executor\\n * @author 0age\\n * @notice Executor contains functions related to processing executions (i.e.\\n *         transferring items, either directly or via conduits).\\n */\\ncontract Executor is Verifiers, TokenTransferrer {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Verifiers(conduitController) {}\\n\\n    /**\\n     * @dev Internal function to transfer an individual ERC721 or ERC1155 item\\n     *      from a given originator to a given recipient. The accumulator will\\n     *      be bypassed, meaning that this function should be utilized in cases\\n     *      where multiple item transfers can be accumulated into a single\\n     *      conduit call. Sufficient approvals must be set, either on the\\n     *      respective conduit or on this contract itself.\\n     *\\n     * @param itemType   The type of item to transfer, either ERC721 or ERC1155.\\n     * @param token      The token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     * @param amount     The amount to transfer.\\n     * @param conduitKey A bytes32 value indicating what corresponding conduit,\\n     *                   if any, to source token approvals from. The zero hash\\n     *                   signifies that no conduit should be used, with direct\\n     *                   approvals set on this contract.\\n     */\\n    function _transferIndividual721Or1155Item(\\n        ItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Determine if the transfer is to be performed via a conduit.\\n        if (conduitKey != bytes32(0)) {\\n            // Use free memory pointer as calldata offset for the conduit call.\\n            uint256 callDataOffset;\\n\\n            // Utilize assembly to place each argument in free memory.\\n            assembly {\\n                // Retrieve the free memory pointer and use it as the offset.\\n                callDataOffset := mload(FreeMemoryPointerSlot)\\n\\n                // Write ConduitInterface.execute.selector to memory.\\n                mstore(callDataOffset, Conduit_execute_signature)\\n\\n                // Write the offset to the ConduitTransfer array in memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_offset_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_ptr\\n                )\\n\\n                // Write the length of the ConduitTransfer array to memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_length_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_length\\n                )\\n\\n                // Write the item type to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferItemType_ptr),\\n                    itemType\\n                )\\n\\n                // Write the token to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferToken_ptr),\\n                    token\\n                )\\n\\n                // Write the transfer source to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferFrom_ptr),\\n                    from\\n                )\\n\\n                // Write the transfer recipient to memory.\\n                mstore(add(callDataOffset, Conduit_execute_transferTo_ptr), to)\\n\\n                // Write the token identifier to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferIdentifier_ptr),\\n                    identifier\\n                )\\n\\n                // Write the transfer amount to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferAmount_ptr),\\n                    amount\\n                )\\n            }\\n\\n            // Perform the call to the conduit.\\n            _callConduitUsingOffsets(\\n                conduitKey,\\n                callDataOffset,\\n                OneConduitExecute_size\\n            );\\n        } else {\\n            // Otherwise, determine whether it is an ERC721 or ERC1155 item.\\n            if (itemType == ItemType.ERC721) {\\n                // Ensure that exactly one 721 item is being transferred.\\n                if (amount != 1) {\\n                    revert InvalidERC721TransferAmount();\\n                }\\n\\n                // Perform transfer via the token contract directly.\\n                _performERC721Transfer(token, from, to, identifier);\\n            } else {\\n                // Perform transfer via the token contract directly.\\n                _performERC1155Transfer(token, from, to, identifier, amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer Ether or other native tokens to a\\n     *      given recipient.\\n     *\\n     * @param to     The recipient of the transfer.\\n     * @param amount The amount to transfer.\\n     */\\n    function _transferEth(address payable to, uint256 amount) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Declare a variable indicating whether the call was successful or not.\\n        bool success;\\n\\n        assembly {\\n            // Transfer the ETH and store if it succeeded or not.\\n            success := call(gas(), to, amount, 0, 0, 0, 0)\\n        }\\n\\n        // If the call fails...\\n        if (!success) {\\n            // Revert and pass the revert reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error message.\\n            revert EtherTransferGenericFailure(to, amount);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient using a given conduit if applicable. Sufficient\\n     *      approvals must be set on this contract or on a respective conduit.\\n     *\\n     * @param token       The ERC20 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC20(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform the token transfer directly.\\n            _performERC20Transfer(token, from, to, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC20,\\n                token,\\n                from,\\n                to,\\n                uint256(0),\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer a single ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set,\\n     *      either on the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC721 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer (must be 1 for ERC721).\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC721(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Ensure that exactly one 721 item is being transferred.\\n            if (amount != 1) {\\n                revert InvalidERC721TransferAmount();\\n            }\\n\\n            // Perform transfer via the token contract directly.\\n            _performERC721Transfer(token, from, to, identifier);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC721,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set, either on\\n     *      the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC1155 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The id to transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC1155(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform transfer via the token contract directly.\\n            _performERC1155Transfer(token, from, to, identifier, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC1155,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\") and the supplied conduit key does not match the key held\\n     *      by the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     */\\n    function _triggerIfArmedAndNotAccumulatable(\\n        bytes memory accumulator,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call if the set key does not match the supplied key.\\n        if (accumulatorConduitKey != conduitKey) {\\n            _triggerIfArmed(accumulator);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\").\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _triggerIfArmed(bytes memory accumulator) internal {\\n        // Exit if the accumulator is not \\\"armed\\\".\\n        if (accumulator.length != AccumulatorArmed) {\\n            return;\\n        }\\n\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call.\\n        _trigger(accumulatorConduitKey, accumulator);\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit corresponding to\\n     *      a given conduit key, supplying all accumulated item transfers. The\\n     *      accumulator will be \\\"disarmed\\\" and reset in the process.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _trigger(bytes32 conduitKey, bytes memory accumulator) internal {\\n        // Declare variables for offset in memory & size of calldata to conduit.\\n        uint256 callDataOffset;\\n        uint256 callDataSize;\\n\\n        // Call the conduit with all the accumulated transfers.\\n        assembly {\\n            // Call begins at third word; the first is length or \\\"armed\\\" status,\\n            // and the second is the current conduit key.\\n            callDataOffset := add(accumulator, TwoWords)\\n\\n            // 68 + items * 192\\n            callDataSize := add(\\n                Accumulator_array_offset_ptr,\\n                mul(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    Conduit_transferItem_size\\n                )\\n            )\\n        }\\n\\n        // Call conduit derived from conduit key & supply accumulated transfers.\\n        _callConduitUsingOffsets(conduitKey, callDataOffset, callDataSize);\\n\\n        // Reset accumulator length to signal that it is now \\\"disarmed\\\".\\n        assembly {\\n            mstore(accumulator, AccumulatorDisarmed)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a call to the conduit corresponding to\\n     *      a given conduit key based on the offset and size of the calldata in\\n     *      question in memory.\\n     *\\n     * @param conduitKey     A bytes32 value indicating what corresponding\\n     *                       conduit, if any, to source token approvals from.\\n     *                       The zero hash signifies that no conduit should be\\n     *                       used, with direct approvals set on this contract.\\n     * @param callDataOffset The memory pointer where calldata is contained.\\n     * @param callDataSize   The size of calldata in memory.\\n     */\\n    function _callConduitUsingOffsets(\\n        bytes32 conduitKey,\\n        uint256 callDataOffset,\\n        uint256 callDataSize\\n    ) internal {\\n        // Derive the address of the conduit using the conduit key.\\n        address conduit = _deriveConduit(conduitKey);\\n\\n        bool success;\\n        bytes4 result;\\n\\n        // call the conduit.\\n        assembly {\\n            // Ensure first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Perform call, placing first word of return data in scratch space.\\n            success := call(\\n                gas(),\\n                conduit,\\n                0,\\n                callDataOffset,\\n                callDataSize,\\n                0,\\n                OneWord\\n            )\\n\\n            // Take value from scratch space and place it on the stack.\\n            result := mload(0)\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Pass along whatever revert reason was given by the conduit.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error.\\n            revert InvalidCallToConduit(conduit);\\n        }\\n\\n        // Ensure result was extracted and matches EIP-1271 magic value.\\n        if (result != ConduitInterface.execute.selector) {\\n            revert InvalidConduit(conduitKey, conduit);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to retrieve the current conduit key set for\\n     *      the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     *\\n     * @return accumulatorConduitKey The conduit key currently set for the\\n     *                               accumulator.\\n     */\\n    function _getAccumulatorConduitKey(bytes memory accumulator)\\n        internal\\n        pure\\n        returns (bytes32 accumulatorConduitKey)\\n    {\\n        // Retrieve the current conduit key from the accumulator.\\n        assembly {\\n            accumulatorConduitKey := mload(\\n                add(accumulator, Accumulator_conduitKey_ptr)\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to place an item transfer into an accumulator\\n     *      that collects a series of transfers to execute against a given\\n     *      conduit in a single call.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param itemType    The type of the item to transfer.\\n     * @param token       The token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer.\\n     * @param amount      The amount to transfer.\\n     */\\n    function _insert(\\n        bytes32 conduitKey,\\n        bytes memory accumulator,\\n        ConduitItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal pure {\\n        uint256 elements;\\n        // \\\"Arm\\\" and prime accumulator if it's not already armed. The sentinel\\n        // value is held in the length of the accumulator array.\\n        if (accumulator.length == AccumulatorDisarmed) {\\n            elements = 1;\\n            bytes4 selector = ConduitInterface.execute.selector;\\n            assembly {\\n                mstore(accumulator, AccumulatorArmed) // \\\"arm\\\" the accumulator.\\n                mstore(add(accumulator, Accumulator_conduitKey_ptr), conduitKey)\\n                mstore(add(accumulator, Accumulator_selector_ptr), selector)\\n                mstore(\\n                    add(accumulator, Accumulator_array_offset_ptr),\\n                    Accumulator_array_offset\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        } else {\\n            // Otherwise, increase the number of elements by one.\\n            assembly {\\n                elements := add(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    1\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        }\\n\\n        // Insert the item.\\n        assembly {\\n            let itemPointer := sub(\\n                add(accumulator, mul(elements, Conduit_transferItem_size)),\\n                Accumulator_itemSizeOffsetDifference\\n            )\\n            mstore(itemPointer, itemType)\\n            mstore(add(itemPointer, Conduit_transferItem_token_ptr), token)\\n            mstore(add(itemPointer, Conduit_transferItem_from_ptr), from)\\n            mstore(add(itemPointer, Conduit_transferItem_to_ptr), to)\\n            mstore(\\n                add(itemPointer, Conduit_transferItem_identifier_ptr),\\n                identifier\\n            )\\n            mstore(add(itemPointer, Conduit_transferItem_amount_ptr), amount)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4b3165cc66037d31d39c5ca2468c46202765bd3831c91a3b33e9c03a59b93a5d\",\"license\":\"MIT\"},\"contracts/lib/GettersAndDerivers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderParameters } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { ConsiderationBase } from \\\"./ConsiderationBase.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract GettersAndDerivers is ConsiderationBase {\\n\\n    constructor(address conduitController)\\n        ConsiderationBase(conduitController)\\n    {}\\n\\n    function _deriveOrderHash(\\n        OrderParameters memory orderParameters,\\n        uint256 counter\\n    ) internal view returns (bytes32 orderHash) {\\n        bytes32 typeHash = _ORDER_TYPEHASH;\\n\\n        assembly {\\n            let typeHashPtr := sub(orderParameters, OneWord)\\n\\n            let previousValue := mload(typeHashPtr)\\n\\n            mstore(typeHashPtr, typeHash)\\n\\n            let counterPtr := add(\\n                orderParameters,\\n                OrderParameters_counter_offset\\n            )\\n\\n            let counterDataPtr := mload(counterPtr)\\n\\n            mstore(counterPtr, counter)\\n\\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\\n\\n            mstore(typeHashPtr, previousValue)\\n\\n            mstore(counterPtr, counterDataPtr)\\n        }\\n    }\\n\\n    function _deriveConduit(bytes32 conduitKey)\\n        internal\\n        view\\n        returns (address conduit)\\n    {\\n        // Read conduit controller address from runtime and place on the stack.\\n        address conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Read conduit creation code hash from runtime and place on the stack.\\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\\n\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Retrieve the free memory pointer; it will be replaced afterwards.\\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Place the control character and the conduit controller in scratch\\n            // space; note that eleven bytes at the beginning are left unused.\\n            mstore(0, or(MaskOverByteTwelve, conduitController))\\n\\n            // Place the conduit key in the next region of scratch space.\\n            mstore(OneWord, conduitKey)\\n\\n            // Place conduit creation code hash in free memory pointer location.\\n            mstore(TwoWords, conduitCreationCodeHash)\\n\\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\\n            conduit := and(\\n                // Hash the relevant region.\\n                keccak256(\\n                    // The region starts at memory pointer 11.\\n                    Create2AddressDerivation_ptr,\\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\\n                    Create2AddressDerivation_length\\n                ),\\n                // The address equals the last twenty bytes of the hash.\\n                MaskOverLastTwentyBytes\\n            )\\n\\n            // Restore the free memory pointer.\\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to get the EIP-712 domain separator. If the\\n     *      chainId matches the chainId set on deployment, the cached domain\\n     *      separator will be returned; otherwise, it will be derived from\\n     *      scratch.\\n     *\\n     * @return The domain separator.\\n     */\\n    function _domainSeparator() internal view returns (bytes32) {\\n        // prettier-ignore\\n        return block.chainid == _CHAIN_ID\\n            ? _DOMAIN_SEPARATOR\\n            : _deriveDomainSeparator();\\n    }\\n\\n    /**\\n     * @dev Internal view function to retrieve configuration information for\\n     *      this contract.\\n     *\\n     * @return version           The contract version.\\n     * @return domainSeparator   The domain separator for this contract.\\n     * @return conduitController The conduit Controller set for this contract.\\n     */\\n    function _information()\\n        internal\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        // Derive the domain separator.\\n        domainSeparator = _domainSeparator();\\n\\n        // Declare variable as immutables cannot be accessed within assembly.\\n        conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Allocate a string with the intended length.\\n        version = new string(Version_length);\\n\\n        // Set the version as data on the newly allocated string.\\n        assembly {\\n            mstore(add(version, OneWord), shl(Version_shift, Version))\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to efficiently derive an digest to sign for\\n     *      an order in accordance with EIP-712.\\n     *\\n     * @param domainSeparator The domain separator.\\n     * @param orderHash       The order hash.\\n     *\\n     * @return value The hash.\\n     */\\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\\n        internal\\n        pure\\n        returns (bytes32 value)\\n    {\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Place the EIP-712 prefix at the start of scratch space.\\n            mstore(0, EIP_712_PREFIX)\\n\\n            // Place the domain separator in the next region of scratch space.\\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\\n\\n            // Place the order hash in scratch space, spilling into the first\\n            // two bytes of the free memory pointer \\u2014 this should never be set\\n            // as memory cannot be expanded to that size, and will be zeroed out\\n            // after the hash is performed.\\n            mstore(EIP712_OrderHash_offset, orderHash)\\n\\n            // Hash the relevant region (65 bytes).\\n            value := keccak256(0, EIP712_DigestPayload_size)\\n\\n            // Clear out the dirtied bits in the memory pointer.\\n            mstore(EIP712_OrderHash_offset, 0)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5c0866572e7dfe34edad443a82e35851c4d3631cc9c5957994d68e41516dd6c4\",\"license\":\"MIT\"},\"contracts/lib/LowLevelHelpers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title LowLevelHelpers\\n * @author 0age\\n * @notice LowLevelHelpers contains logic for performing various low-level\\n *         operations.\\n */\\ncontract LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to staticcall an arbitrary target with given\\n     *      calldata. Note that no data is written to memory and no contract\\n     *      size check is performed.\\n     *\\n     * @param target   The account to staticcall.\\n     * @param callData The calldata to supply when staticcalling the target.\\n     *\\n     * @return success The status of the staticcall to the target.\\n     */\\n    function _staticcall(address target, bytes memory callData)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        assembly {\\n            // Perform the staticcall.\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(callData, OneWord),\\n                mload(callData),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to revert and pass along the revert reason if\\n     *      data was returned by the last call and that the size of that data\\n     *      does not exceed the currently allocated memory size.\\n     */\\n    function _revertWithReasonIfOneIsReturned() internal view {\\n        assembly {\\n            // If it returned a message, bubble it up as long as sufficient gas\\n            // remains to do so:\\n            if returndatasize() {\\n                // Ensure that sufficient gas is available to copy returndata\\n                // while expanding memory where necessary. Start by computing\\n                // the word size of returndata and allocated memory.\\n                let returnDataWords := div(\\n                    add(returndatasize(), AlmostOneWord),\\n                    OneWord\\n                )\\n\\n                // Note: use the free memory pointer in place of msize() to work\\n                // around a Yul warning that prevents accessing msize directly\\n                // when the IR pipeline is activated.\\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\\n\\n                // Next, compute the cost of the returndatacopy.\\n                let cost := mul(CostPerWord, returnDataWords)\\n\\n                // Then, compute cost of new memory allocation.\\n                if gt(returnDataWords, msizeWords) {\\n                    cost := add(\\n                        cost,\\n                        add(\\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\\n                            div(\\n                                sub(\\n                                    mul(returnDataWords, returnDataWords),\\n                                    mul(msizeWords, msizeWords)\\n                                ),\\n                                MemoryExpansionCoefficient\\n                            )\\n                        )\\n                    )\\n                }\\n\\n                // Finally, add a small constant and compare to gas remaining;\\n                // bubble up the revert data if enough gas is still available.\\n                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                    // Copy returndata to memory; overwrite existing memory.\\n                    returndatacopy(0, 0, returndatasize())\\n\\n                    // Revert, specifying memory region with copied returndata.\\n                    revert(0, returndatasize())\\n                }\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to determine if the first word of returndata\\n     *      matches an expected magic value.\\n     *\\n     * @param expected The expected magic value.\\n     *\\n     * @return A boolean indicating whether the expected value matches the one\\n     *         located in the first word of returndata.\\n     */\\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\\n        // Declare a variable for the value held by the return data buffer.\\n        bytes4 result;\\n\\n        // Utilize assembly in order to read directly from returndata buffer.\\n        assembly {\\n            // Only put result on stack if return data is exactly one word.\\n            if eq(returndatasize(), OneWord) {\\n                // Copy the word directly from return data into scratch space.\\n                returndatacopy(0, 0, OneWord)\\n\\n                // Take value from scratch space and place it on the stack.\\n                result := mload(0)\\n            }\\n        }\\n\\n        // Return a boolean indicating whether expected and located value match.\\n        return result != expected;\\n    }\\n}\\n\",\"keccak256\":\"0x57700a6f8f18d1cdfc8492724ef3b9f89aa143382f13794489df70c1f3fc027c\",\"license\":\"MIT\"},\"contracts/lib/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ReentrancyErrors } from \\\"../interfaces/ReentrancyErrors.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title ReentrancyGuard\\n * @author 0age\\n * @notice ReentrancyGuard contains a storage variable and related functionality\\n *         for protecting against reentrancy.\\n */\\ncontract ReentrancyGuard is ReentrancyErrors {\\n    // Prevent reentrant calls on protected functions.\\n    uint256 private _reentrancyGuard;\\n\\n    /**\\n     * @dev Initialize the reentrancy guard during deployment.\\n     */\\n    constructor() {\\n        // Initialize the reentrancy guard in a cleared state.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to ensure that the sentinel value for the\\n     *      reentrancy guard is not currently set and, if not, to set the\\n     *      sentinel value for the reentrancy guard.\\n     */\\n    function _setReentrancyGuard() internal {\\n        // Ensure that the reentrancy guard is not already set.\\n        _assertNonReentrant();\\n\\n        // Set the reentrancy guard.\\n        _reentrancyGuard = _ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to unset the reentrancy guard sentinel value.\\n     */\\n    function _clearReentrancyGuard() internal {\\n        // Clear the reentrancy guard.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal view function to ensure that the sentinel value for the\\n            reentrancy guard is not currently set.\\n     */\\n    function _assertNonReentrant() internal view {\\n        // Ensure that the reentrancy guard is not currently set.\\n        if (_reentrancyGuard != _NOT_ENTERED) {\\n            revert NoReentrantCalls();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa52711c788a24071f8a872ea5ee3030f0f8f592abf8f0d5577707e585a7628d5\",\"license\":\"MIT\"},\"contracts/lib/SignatureVerification.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { EIP1271Interface } from \\\"../interfaces/EIP1271Interface.sol\\\";\\n\\nimport {\\n    SignatureVerificationErrors\\n} from \\\"../interfaces/SignatureVerificationErrors.sol\\\";\\n\\nimport { LowLevelHelpers } from \\\"./LowLevelHelpers.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title SignatureVerification\\n * @author 0age\\n * @notice SignatureVerification contains logic for verifying signatures.\\n */\\ncontract SignatureVerification is SignatureVerificationErrors, LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied signer.\\n     *\\n     * @param signer    The signer for the order.\\n     * @param digest    The digest to verify the signature against.\\n     * @param signature A signature from the signer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _assertValidSignature(\\n        address signer,\\n        bytes32 digest,\\n        bytes memory signature\\n    ) internal view {\\n        // Declare value for ecrecover equality or 1271 call success status.\\n        bool success;\\n\\n        // Utilize assembly to perform optimized signature verification check.\\n        assembly {\\n            // Ensure that first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Declare value for v signature parameter.\\n            let v\\n\\n            // Get the length of the signature.\\n            let signatureLength := mload(signature)\\n\\n            // Get the pointer to the value preceding the signature length.\\n            // This will be used for temporary memory overrides - either the\\n            // signature head for isValidSignature or the digest for ecrecover.\\n            let wordBeforeSignaturePtr := sub(signature, OneWord)\\n\\n            // Cache the current value behind the signature to restore it later.\\n            let cachedWordBeforeSignature := mload(wordBeforeSignaturePtr)\\n\\n            // Declare lenDiff + recoveredSigner scope to manage stack pressure.\\n            {\\n                // Take the difference between the max ECDSA signature length\\n                // and the actual signature length. Overflow desired for any\\n                // values > 65. If the diff is not 0 or 1, it is not a valid\\n                // ECDSA signature - move on to EIP1271 check.\\n                let lenDiff := sub(ECDSA_MaxLength, signatureLength)\\n\\n                // Declare variable for recovered signer.\\n                let recoveredSigner\\n\\n                // If diff is 0 or 1, it may be an ECDSA signature.\\n                // Try to recover signer.\\n                if iszero(gt(lenDiff, 1)) {\\n                    // Read the signature `s` value.\\n                    let originalSignatureS := mload(\\n                        add(signature, ECDSA_signature_s_offset)\\n                    )\\n\\n                    // Read the first byte of the word after `s`. If the\\n                    // signature is 65 bytes, this will be the real `v` value.\\n                    // If not, it will need to be modified - doing it this way\\n                    // saves an extra condition.\\n                    v := byte(\\n                        0,\\n                        mload(add(signature, ECDSA_signature_v_offset))\\n                    )\\n\\n                    // If lenDiff is 1, parse 64-byte signature as ECDSA.\\n                    if lenDiff {\\n                        // Extract yParity from highest bit of vs and add 27 to\\n                        // get v.\\n                        v := add(\\n                            shr(MaxUint8, originalSignatureS),\\n                            Signature_lower_v\\n                        )\\n\\n                        // Extract canonical s from vs, all but the highest bit.\\n                        // Temporarily overwrite the original `s` value in the\\n                        // signature.\\n                        mstore(\\n                            add(signature, ECDSA_signature_s_offset),\\n                            and(\\n                                originalSignatureS,\\n                                EIP2098_allButHighestBitMask\\n                            )\\n                        )\\n                    }\\n                    // Temporarily overwrite the signature length with `v` to\\n                    // conform to the expected input for ecrecover.\\n                    mstore(signature, v)\\n\\n                    // Temporarily overwrite the word before the length with\\n                    // `digest` to conform to the expected input for ecrecover.\\n                    mstore(wordBeforeSignaturePtr, digest)\\n\\n                    // Attempt to recover the signer for the given signature. Do\\n                    // not check the call status as ecrecover will return a null\\n                    // address if the signature is invalid.\\n                    pop(\\n                        staticcall(\\n                            gas(),\\n                            Ecrecover_precompile, // Call ecrecover precompile.\\n                            wordBeforeSignaturePtr, // Use data memory location.\\n                            Ecrecover_args_size, // Size of digest, v, r, and s.\\n                            0, // Write result to scratch space.\\n                            OneWord // Provide size of returned result.\\n                        )\\n                    )\\n\\n                    // Restore cached word before signature.\\n                    mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n\\n                    // Restore cached signature length.\\n                    mstore(signature, signatureLength)\\n\\n                    // Restore cached signature `s` value.\\n                    mstore(\\n                        add(signature, ECDSA_signature_s_offset),\\n                        originalSignatureS\\n                    )\\n\\n                    // Read the recovered signer from the buffer given as return\\n                    // space for ecrecover.\\n                    recoveredSigner := mload(0)\\n                }\\n\\n                // Set success to true if the signature provided was a valid\\n                // ECDSA signature and the signer is not the null address. Use\\n                // gt instead of direct as success is used outside of assembly.\\n                success := and(eq(signer, recoveredSigner), gt(signer, 0))\\n            }\\n\\n            // If the signature was not verified with ecrecover, try EIP1271.\\n            if iszero(success) {\\n                // Temporarily overwrite the word before the signature length\\n                // and use it as the head of the signature input to\\n                // `isValidSignature`, which has a value of 64.\\n                mstore(\\n                    wordBeforeSignaturePtr,\\n                    EIP1271_isValidSignature_signature_head_offset\\n                )\\n\\n                // Get pointer to use for the selector of `isValidSignature`.\\n                let selectorPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_selector_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the selector pointer.\\n                let cachedWordOverwrittenBySelector := mload(selectorPtr)\\n\\n                // Get pointer to use for `digest` input to `isValidSignature`.\\n                let digestPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_digest_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the digest pointer.\\n                let cachedWordOverwrittenByDigest := mload(digestPtr)\\n\\n                // Write the selector first, since it overlaps the digest.\\n                mstore(selectorPtr, EIP1271_isValidSignature_selector)\\n\\n                // Next, write the digest.\\n                mstore(digestPtr, digest)\\n\\n                // Call signer with `isValidSignature` to validate signature.\\n                success := staticcall(\\n                    gas(),\\n                    signer,\\n                    selectorPtr,\\n                    add(\\n                        signatureLength,\\n                        EIP1271_isValidSignature_calldata_baseLength\\n                    ),\\n                    0,\\n                    OneWord\\n                )\\n\\n                // Determine if the signature is valid on successful calls.\\n                if success {\\n                    // If first word of scratch space does not contain EIP-1271\\n                    // signature selector, revert.\\n                    if iszero(eq(mload(0), EIP1271_isValidSignature_selector)) {\\n                        // Revert with bad 1271 signature if signer has code.\\n                        if extcodesize(signer) {\\n                            // Bad contract signature.\\n                            mstore(0, BadContractSignature_error_signature)\\n                            revert(0, BadContractSignature_error_length)\\n                        }\\n\\n                        // Check if signature length was invalid.\\n                        if gt(sub(ECDSA_MaxLength, signatureLength), 1) {\\n                            // Revert with generic invalid signature error.\\n                            mstore(0, InvalidSignature_error_signature)\\n                            revert(0, InvalidSignature_error_length)\\n                        }\\n\\n                        // Check if v was invalid.\\n                        if iszero(\\n                            byte(v, ECDSA_twentySeventhAndTwentyEighthBytesSet)\\n                        ) {\\n                            // Revert with invalid v value.\\n                            mstore(0, BadSignatureV_error_signature)\\n                            mstore(BadSignatureV_error_offset, v)\\n                            revert(0, BadSignatureV_error_length)\\n                        }\\n\\n                        // Revert with generic invalid signer error message.\\n                        mstore(0, InvalidSigner_error_signature)\\n                        revert(0, InvalidSigner_error_length)\\n                    }\\n                }\\n\\n                // Restore the cached values overwritten by selector, digest and\\n                // signature head.\\n                mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n                mstore(selectorPtr, cachedWordOverwrittenBySelector)\\n                mstore(digestPtr, cachedWordOverwrittenByDigest)\\n            }\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Revert and pass reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with error indicating bad contract signature.\\n            assembly {\\n                mstore(0, BadContractSignature_error_signature)\\n                revert(0, BadContractSignature_error_length)\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9af8a720f3f6aac730d7896484f407ecea62105c1c9dc45666273d51555a0f42\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport \\\"./TokenTransferrerConstants.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { ConduitBatch1155Transfer } from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title TokenTransferrer\\n * @author 0age\\n * @custom:coauthor d1ll0n\\n * @custom:coauthor transmissions11\\n * @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\\n *         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\\n *         by conduits deployed by the ConduitController. Use great caution when\\n *         considering these functions for use in other codebases, as there are\\n *         significant side effects and edge cases that need to be thoroughly\\n *         understood and carefully addressed.\\n */\\ncontract TokenTransferrer is TokenTransferrerErrors {\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set on the\\n     *      contract performing the transfer.\\n     *\\n     * @param token      The ERC20 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC20Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\\n            mstore(ERC20_transferFrom_from_ptr, from)\\n            mstore(ERC20_transferFrom_to_ptr, to)\\n            mstore(ERC20_transferFrom_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transferFrom_sig_ptr,\\n                ERC20_transferFrom_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                from\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            from\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    function _performSelfERC20Transfer(\\n        address token,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transfer_sig_ptr, ERC20_transfer_signature)\\n            mstore(ERC20_transfer_to_ptr, to)\\n            mstore(ERC20_transfer_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transfer_sig_ptr,\\n                ERC20_transfer_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                address()\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            address()\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer an ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer. Note that this function does\\n     *      not check whether the receiver can accept the ERC721 token (i.e. it\\n     *      does not use `safeTransferFrom`).\\n     *\\n     * @param token      The ERC721 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     */\\n    function _performERC721Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC721 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data to memory starting with function selector.\\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\\n            mstore(ERC721_transferFrom_from_ptr, from)\\n            mstore(ERC721_transferFrom_to_ptr, to)\\n            mstore(ERC721_transferFrom_id_ptr, identifier)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC721_transferFrom_sig_ptr,\\n                ERC721_transferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer.\\n     *\\n     * @param token      The ERC1155 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The id to transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC1155Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The following memory slots will be used when populating call data\\n            // for the transfer; read the values and restore them later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n            let slot0x80 := mload(Slot0x80)\\n            let slot0xA0 := mload(Slot0xA0)\\n            let slot0xC0 := mload(Slot0xC0)\\n\\n            // Write call data into memory, beginning with function selector.\\n            mstore(\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_signature\\n            )\\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\\n            mstore(\\n                ERC1155_safeTransferFrom_data_offset_ptr,\\n                ERC1155_safeTransferFrom_data_length_offset\\n            )\\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer. NOTE: this function is not\\n     *      memory-safe; it will overwrite existing memory, restore the free\\n     *      memory pointer to the default value, and overwrite the zero slot.\\n     *      This function should only be called once memory is no longer\\n     *      required and when uninitialized arrays are not utilized, and memory\\n     *      should be considered fully corrupted (aside from the existence of a\\n     *      default-value free memory pointer) after calling this function.\\n     *\\n     * @param batchTransfers The group of 1155 batch transfers to perform.\\n     */\\n    function _performERC1155BatchTransfers(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) internal {\\n        // Utilize assembly to perform optimized batch 1155 transfers.\\n        assembly {\\n            let len := batchTransfers.length\\n            // Pointer to first head in the array, which is offset to the struct\\n            // at each index. This gets incremented after each loop to avoid\\n            // multiplying by 32 to get the offset for each element.\\n            let nextElementHeadPtr := batchTransfers.offset\\n\\n            // Pointer to beginning of the head of the array. This is the\\n            // reference position each offset references. It's held static to\\n            // let each loop calculate the data position for an element.\\n            let arrayHeadPtr := nextElementHeadPtr\\n\\n            // Write the function selector, which will be reused for each call:\\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\n            mstore(\\n                ConduitBatch1155Transfer_from_offset,\\n                ERC1155_safeBatchTransferFrom_signature\\n            )\\n\\n            // Iterate over each batch transfer.\\n            for {\\n                let i := 0\\n            } lt(i, len) {\\n                i := add(i, 1)\\n            } {\\n                // Read the offset to the beginning of the element and add\\n                // it to pointer to the beginning of the array head to get\\n                // the absolute position of the element in calldata.\\n                let elementPtr := add(\\n                    arrayHeadPtr,\\n                    calldataload(nextElementHeadPtr)\\n                )\\n\\n                // Retrieve the token from calldata.\\n                let token := calldataload(elementPtr)\\n\\n                // If the token has no code, revert.\\n                if iszero(extcodesize(token)) {\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Get the total number of supplied ids.\\n                let idsLength := calldataload(\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\\n                )\\n\\n                // Determine the expected offset for the amounts array.\\n                let expectedAmountsOffset := add(\\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\\n                    mul(idsLength, OneWord)\\n                )\\n\\n                // Validate struct encoding.\\n                let invalidEncoding := iszero(\\n                    and(\\n                        // ids.length == amounts.length\\n                        eq(\\n                            idsLength,\\n                            calldataload(add(elementPtr, expectedAmountsOffset))\\n                        ),\\n                        and(\\n                            // ids_offset == 0xa0\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatch1155Transfer_ids_head_offset\\n                                    )\\n                                ),\\n                                ConduitBatch1155Transfer_ids_length_offset\\n                            ),\\n                            // amounts_offset == 0xc0 + ids.length*32\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatchTransfer_amounts_head_offset\\n                                    )\\n                                ),\\n                                expectedAmountsOffset\\n                            )\\n                        )\\n                    )\\n                )\\n\\n                // Revert with an error if the encoding is not valid.\\n                if invalidEncoding {\\n                    mstore(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_selector\\n                    )\\n                    revert(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_length\\n                    )\\n                }\\n\\n                // Update the offset position for the next loop\\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\\n\\n                // Copy the first section of calldata (before dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\\n                    ConduitBatch1155Transfer_usable_head_size\\n                )\\n\\n                // Determine size of calldata required for ids and amounts. Note\\n                // that the size includes both lengths as well as the data.\\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\\n\\n                // Update the offset for the data array in memory.\\n                mstore(\\n                    BatchTransfer1155Params_data_head_ptr,\\n                    add(\\n                        BatchTransfer1155Params_ids_length_offset,\\n                        idsAndAmountsSize\\n                    )\\n                )\\n\\n                // Set the length of the data array in memory to zero.\\n                mstore(\\n                    add(\\n                        BatchTransfer1155Params_data_length_basePtr,\\n                        idsAndAmountsSize\\n                    ),\\n                    0\\n                )\\n\\n                // Determine the total calldata size for the call to transfer.\\n                let transferDataSize := add(\\n                    BatchTransfer1155Params_calldata_baseSize,\\n                    idsAndAmountsSize\\n                )\\n\\n                // Copy second section of calldata (including dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ids_length_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\\n                    idsAndAmountsSize\\n                )\\n\\n                // Perform the call to transfer 1155 tokens.\\n                let success := call(\\n                    gas(),\\n                    token,\\n                    0,\\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\\n                    transferDataSize, // Location of the length of callData.\\n                    0,\\n                    0\\n                )\\n\\n                // If the transfer reverted:\\n                if iszero(success) {\\n                    // If it returned a message, bubble it up as long as\\n                    // sufficient gas remains to do so:\\n                    if returndatasize() {\\n                        // Ensure that sufficient gas is available to copy\\n                        // returndata while expanding memory where necessary.\\n                        // Start by computing word size of returndata and\\n                        // allocated memory. Round up to the nearest full word.\\n                        let returnDataWords := div(\\n                            add(returndatasize(), AlmostOneWord),\\n                            OneWord\\n                        )\\n\\n                        // Note: use transferDataSize in place of msize() to\\n                        // work around a Yul warning that prevents accessing\\n                        // msize directly when the IR pipeline is activated.\\n                        // The free memory pointer is not used here because\\n                        // this function does almost all memory management\\n                        // manually and does not update it, and transferDataSize\\n                        // should be the largest memory value used (unless a\\n                        // previous batch was larger).\\n                        let msizeWords := div(transferDataSize, OneWord)\\n\\n                        // Next, compute the cost of the returndatacopy.\\n                        let cost := mul(CostPerWord, returnDataWords)\\n\\n                        // Then, compute cost of new memory allocation.\\n                        if gt(returnDataWords, msizeWords) {\\n                            cost := add(\\n                                cost,\\n                                add(\\n                                    mul(\\n                                        sub(returnDataWords, msizeWords),\\n                                        CostPerWord\\n                                    ),\\n                                    div(\\n                                        sub(\\n                                            mul(\\n                                                returnDataWords,\\n                                                returnDataWords\\n                                            ),\\n                                            mul(msizeWords, msizeWords)\\n                                        ),\\n                                        MemoryExpansionCoefficient\\n                                    )\\n                                )\\n                            )\\n                        }\\n\\n                        // Finally, add a small constant and compare to gas\\n                        // remaining; bubble up the revert data if enough gas is\\n                        // still available.\\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\\n                            // Copy returndata to memory; overwrite existing.\\n                            returndatacopy(0, 0, returndatasize())\\n\\n                            // Revert with memory region containing returndata.\\n                            revert(0, returndatasize())\\n                        }\\n                    }\\n\\n                    // Set the error signature.\\n                    mstore(\\n                        0,\\n                        ERC1155BatchTransferGenericFailure_error_signature\\n                    )\\n\\n                    // Write the token.\\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\\n\\n                    // Increase the offset to ids by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_ids_head_ptr,\\n                        ERC1155BatchTransferGenericFailure_ids_offset\\n                    )\\n\\n                    // Increase the offset to amounts by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_amounts_head_ptr,\\n                        add(\\n                            OneWord,\\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\\n                        )\\n                    )\\n\\n                    // Return modified region. The total size stays the same as\\n                    // `token` uses the same number of bytes as `data.length`.\\n                    revert(0, transferDataSize)\\n                }\\n            }\\n\\n            // Reset the free memory pointer to the default value; memory must\\n            // be assumed to be dirtied and not reused from this point forward.\\n            // Also note that the zero slot is not reset to zero, meaning empty\\n            // arrays cannot be safely created or utilized until it is restored.\\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9be626e5928b95748e08259c63a6168d3e0b3e490f2f340491b8afd546cbbcd1\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrerConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\nuint256 constant Slot0xC0 = 0xc0;\\n\\n// abi.encodeWithSignature(\\\"transferFrom(address,address,uint256)\\\")\\nuint256 constant ERC20_transferFrom_signature = (\\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"transfer(address,uint256)\\\")\\nuint256 constant ERC20_transfer_signature = (\\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transfer_sig_ptr = 0x0;\\nuint256 constant ERC20_transfer_to_ptr = 0x04;\\nuint256 constant ERC20_transfer_amount_ptr = 0x24;\\nuint256 constant ERC20_transfer_length = 0x44; // 4 + 32 * 2 == 68\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeTransferFrom(address,address,uint256,uint256,bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeTransferFrom_signature = (\\n    0xf242432a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\\n);\\n\\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\\n);\\n\\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\n// abi.encodeWithSignature(\\n//     \\\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\\\"\\n// )\\nuint256 constant TokenTransferGenericFailure_error_signature = (\\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\\n\\n// 4 + 32 * 5 == 164\\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\\n\\n// abi.encodeWithSignature(\\n//     \\\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\\\"\\n// )\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\\n    0x9889192300000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\\n\\n// 4 + 32 * 4 == 132\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200;\\n\\n// Values are offset by 32 bytes in order to write the token to the beginning\\n// in the event of a revert\\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x64;\\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0xc4;\\nuint256 constant BatchTransfer1155Params_calldata_baseSize = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\\n\\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\\n\\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\\n\\n// Note: abbreviated version of above constant to adhere to line length limit.\\nuint256 constant ConduitBatchTransfer_amounts_head_offset = 0x80;\\n\\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\\n    0xafc445e200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\\nuint256 constant ERC1155BatchTransferGenericFailure_ids_offset = 0xc0;\\n\",\"keccak256\":\"0x002bea8dcc1d37a0cdd6d1c25f536a1a13e01e1fb32b7bbb2a3016425e40b672\",\"license\":\"MIT\"},\"contracts/lib/Verifiers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderStatus } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { Assertions } from \\\"./Assertions.sol\\\";\\n\\nimport { SignatureVerification } from \\\"./SignatureVerification.sol\\\";\\n\\n/**\\n * @title Verifiers\\n * @author 0age\\n * @notice Verifiers contains functions for performing verifications.\\n */\\ncontract Verifiers is Assertions, SignatureVerification {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Assertions(conduitController) {}\\n\\n    /**\\n     * @dev Internal view function to ensure that the current time falls within\\n     *      an order's valid timespan.\\n     *\\n     * @param startTime       The time at which the order becomes active.\\n     * @param endTime         The time at which the order becomes inactive.\\n     * @param revertOnInvalid A boolean indicating whether to revert if the\\n     *                        order is not active.\\n     *\\n     * @return valid A boolean indicating whether the order is active.\\n     */\\n    function _verifyTime(\\n        uint256 startTime,\\n        uint256 endTime,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        // Revert if order's timespan hasn't started yet or has already ended.\\n        if (startTime > block.timestamp || endTime <= block.timestamp) {\\n            // Only revert if revertOnInvalid has been supplied as true.\\n            if (revertOnInvalid) {\\n                revert InvalidTime();\\n            }\\n\\n            // Return false as the order is invalid.\\n            return false;\\n        }\\n\\n        // Return true as the order time is valid.\\n        valid = true;\\n    }\\n\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied offerer. Note that in cases where a 64 or 65 byte signature\\n     *      is supplied, only standard ECDSA signatures that recover to a\\n     *      non-zero address are supported.\\n     *\\n     * @param offerer   The offerer for the order.\\n     * @param orderHash The order hash.\\n     * @param signature A signature from the offerer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _verifySignature(\\n        address offerer,\\n        bytes32 orderHash,\\n        bytes memory signature\\n    ) internal view {\\n        // Skip signature verification if the offerer is the caller.\\n        if (offerer == msg.sender) {\\n            return;\\n        }\\n\\n        // Derive EIP-712 digest using the domain separator and the order hash.\\n        bytes32 digest = _deriveEIP712Digest(_domainSeparator(), orderHash);\\n\\n        // Ensure that the signature for the digest is valid for the offerer.\\n        _assertValidSignature(offerer, digest, signature);\\n    }\\n\\n    function _verifyOrderStatus(\\n        bytes32 orderHash,\\n        OrderStatus storage orderStatus,\\n        bool firstPay,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        if (orderStatus.isCancelled) {\\n            if (revertOnInvalid) {\\n                revert OrderIsCancelled(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (orderStatus.isFinalized) {\\n            if (revertOnInvalid) {\\n                revert OrderAlreadyFinalized(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (firstPay) {\\n            if (orderStatus.paidTimes > 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        } else {\\n            if (orderStatus.paidTimes == 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderNotStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        }\\n\\n        valid = true;\\n    }\\n}\\n\",\"keccak256\":\"0x4166159d504ffb5810fbad9c64445fd23659f5b19e84a61dde67f8760bcd1255\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7723,"contract":"contracts/lib/Executor.sol:Executor","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":5403,"contract":"contracts/lib/Executor.sol:Executor","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"notice":"Executor contains functions related to processing executions (i.e.         transferring items, either directly or via conduits).","version":1}}},"contracts/lib/GettersAndDerivers.sol":{"GettersAndDerivers":{"abi":[{"inputs":[{"internalType":"address","name":"conduitController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4654":{"entryPoint":null,"id":4654,"parameterSlots":1,"returnSlots":0},"@_5935":{"entryPoint":null,"id":5935,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_4760":{"entryPoint":264,"id":4760,"parameterSlots":0,"returnSlots":4},"@_nameString_4683":{"entryPoint":null,"id":4683,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":1116,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_bytes32_fromMemory":{"entryPoint":1164,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_stringliteral_0c2a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e4b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_41ba":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_59d7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5c66":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7afc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89a9":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9c70":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b48f":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bab2":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_cfcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6455:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:54","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:54"},"nodeType":"YulFunctionCall","src":"143:12:54"},"nodeType":"YulExpressionStatement","src":"143:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:54"},"nodeType":"YulFunctionCall","src":"112:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:54"},"nodeType":"YulFunctionCall","src":"108:32:54"},"nodeType":"YulIf","src":"105:52:54"},{"nodeType":"YulVariableDeclaration","src":"166:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:54"},"nodeType":"YulFunctionCall","src":"179:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:54"},"nodeType":"YulFunctionCall","src":"260:12:54"},"nodeType":"YulExpressionStatement","src":"260:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:54"},"nodeType":"YulFunctionCall","src":"239:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:54"},"nodeType":"YulFunctionCall","src":"235:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:54"},"nodeType":"YulFunctionCall","src":"224:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:54"},"nodeType":"YulFunctionCall","src":"214:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:54"},"nodeType":"YulFunctionCall","src":"207:50:54"},"nodeType":"YulIf","src":"204:70:54"},{"nodeType":"YulAssignment","src":"283:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:54"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:54","type":""}],"src":"14:290:54"},{"body":{"nodeType":"YulBlock","src":"407:147:54","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:54"},"nodeType":"YulFunctionCall","src":"455:12:54"},"nodeType":"YulExpressionStatement","src":"455:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:54"},"nodeType":"YulFunctionCall","src":"424:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:54"},"nodeType":"YulFunctionCall","src":"420:32:54"},"nodeType":"YulIf","src":"417:52:54"},{"nodeType":"YulAssignment","src":"478:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:54"},"nodeType":"YulFunctionCall","src":"488:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:54"}]},{"nodeType":"YulAssignment","src":"513:35:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:54"},"nodeType":"YulFunctionCall","src":"529:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:54"},"nodeType":"YulFunctionCall","src":"523:25:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:54","type":""}],"src":"309:245:54"},{"body":{"nodeType":"YulBlock","src":"614:76:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:54"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:54","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:54"},"nodeType":"YulFunctionCall","src":"624:32:54"},"nodeType":"YulExpressionStatement","src":"624:32:54"},{"nodeType":"YulAssignment","src":"665:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:54","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:54"},"nodeType":"YulFunctionCall","src":"672:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:54"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:54","type":""}],"src":"559:131:54"},{"body":{"nodeType":"YulBlock","src":"750:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:54"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:54","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:54"},"nodeType":"YulFunctionCall","src":"760:31:54"},"nodeType":"YulExpressionStatement","src":"760:31:54"},{"nodeType":"YulAssignment","src":"800:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:54"},"nodeType":"YulFunctionCall","src":"807:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:54"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:54","type":""}],"src":"695:130:54"},{"body":{"nodeType":"YulBlock","src":"885:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:54"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:54","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:54"},"nodeType":"YulFunctionCall","src":"895:30:54"},"nodeType":"YulExpressionStatement","src":"895:30:54"},{"nodeType":"YulAssignment","src":"934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:54"},"nodeType":"YulFunctionCall","src":"941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:54"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:54","type":""}],"src":"830:129:54"},{"body":{"nodeType":"YulBlock","src":"1019:73:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:54"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:54","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:54"},"nodeType":"YulFunctionCall","src":"1029:29:54"},"nodeType":"YulExpressionStatement","src":"1029:29:54"},{"nodeType":"YulAssignment","src":"1067:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:54","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:54"},"nodeType":"YulFunctionCall","src":"1074:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:54"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:54","type":""}],"src":"964:128:54"},{"body":{"nodeType":"YulBlock","src":"1152:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:54"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:54","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:54"},"nodeType":"YulFunctionCall","src":"1162:31:54"},"nodeType":"YulExpressionStatement","src":"1162:31:54"},{"nodeType":"YulAssignment","src":"1202:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:54"},"nodeType":"YulFunctionCall","src":"1209:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:54"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:54","type":""}],"src":"1097:130:54"},{"body":{"nodeType":"YulBlock","src":"1287:71:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:54"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:54","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:54"},"nodeType":"YulFunctionCall","src":"1297:27:54"},"nodeType":"YulExpressionStatement","src":"1297:27:54"},{"nodeType":"YulAssignment","src":"1333:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:54","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:54"},"nodeType":"YulFunctionCall","src":"1340:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:54"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:54","type":""}],"src":"1232:126:54"},{"body":{"nodeType":"YulBlock","src":"1418:79:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:54"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:54","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:54"},"nodeType":"YulFunctionCall","src":"1428:35:54"},"nodeType":"YulExpressionStatement","src":"1428:35:54"},{"nodeType":"YulAssignment","src":"1472:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:54","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:54"},"nodeType":"YulFunctionCall","src":"1479:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:54"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:54","type":""}],"src":"1363:134:54"},{"body":{"nodeType":"YulBlock","src":"1557:72:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:54"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:54","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:54"},"nodeType":"YulFunctionCall","src":"1567:28:54"},"nodeType":"YulExpressionStatement","src":"1567:28:54"},{"nodeType":"YulAssignment","src":"1604:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:54"},"nodeType":"YulFunctionCall","src":"1611:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:54"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:54","type":""}],"src":"1502:127:54"},{"body":{"nodeType":"YulBlock","src":"1689:78:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:54"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:54","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:54"},"nodeType":"YulFunctionCall","src":"1699:34:54"},"nodeType":"YulExpressionStatement","src":"1699:34:54"},{"nodeType":"YulAssignment","src":"1742:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:54","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:54"},"nodeType":"YulFunctionCall","src":"1749:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:54"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:54","type":""}],"src":"1634:133:54"},{"body":{"nodeType":"YulBlock","src":"1827:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:54"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:54","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:54"},"nodeType":"YulFunctionCall","src":"1837:30:54"},"nodeType":"YulExpressionStatement","src":"1837:30:54"},{"nodeType":"YulAssignment","src":"1876:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:54"},"nodeType":"YulFunctionCall","src":"1883:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:54"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:54","type":""}],"src":"1772:129:54"},{"body":{"nodeType":"YulBlock","src":"1961:59:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:54"},"nodeType":"YulFunctionCall","src":"1971:16:54"},"nodeType":"YulExpressionStatement","src":"1971:16:54"},{"nodeType":"YulAssignment","src":"1996:18:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:54"},"nodeType":"YulFunctionCall","src":"2003:11:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:54"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:54","type":""}],"src":"1906:114:54"},{"body":{"nodeType":"YulBlock","src":"4136:815:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:54"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:54","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:54"},"nodeType":"YulFunctionCall","src":"4146:31:54"},"nodeType":"YulExpressionStatement","src":"4146:31:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:54"},"nodeType":"YulFunctionCall","src":"4193:12:54"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:54","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:54"},"nodeType":"YulFunctionCall","src":"4186:40:54"},"nodeType":"YulExpressionStatement","src":"4186:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:54"},"nodeType":"YulFunctionCall","src":"4242:12:54"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:54","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:54"},"nodeType":"YulFunctionCall","src":"4235:38:54"},"nodeType":"YulExpressionStatement","src":"4235:38:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:54","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:54"},"nodeType":"YulFunctionCall","src":"4289:12:54"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:54","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:54"},"nodeType":"YulFunctionCall","src":"4282:43:54"},"nodeType":"YulExpressionStatement","src":"4282:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:54","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:54"},"nodeType":"YulFunctionCall","src":"4341:12:54"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:54","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:54"},"nodeType":"YulFunctionCall","src":"4334:41:54"},"nodeType":"YulExpressionStatement","src":"4334:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:54"},"nodeType":"YulFunctionCall","src":"4391:12:54"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:54","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:54"},"nodeType":"YulFunctionCall","src":"4384:39:54"},"nodeType":"YulExpressionStatement","src":"4384:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:54","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:54"},"nodeType":"YulFunctionCall","src":"4439:12:54"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:54","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:54"},"nodeType":"YulFunctionCall","src":"4432:41:54"},"nodeType":"YulExpressionStatement","src":"4432:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:54","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:54"},"nodeType":"YulFunctionCall","src":"4489:13:54"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:54","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:54"},"nodeType":"YulFunctionCall","src":"4482:43:54"},"nodeType":"YulExpressionStatement","src":"4482:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:54","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:54"},"nodeType":"YulFunctionCall","src":"4541:13:54"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:54","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:54"},"nodeType":"YulFunctionCall","src":"4534:41:54"},"nodeType":"YulExpressionStatement","src":"4534:41:54"},{"nodeType":"YulAssignment","src":"4584:361:54","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:54","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:54"},"nodeType":"YulFunctionCall","src":"4921:13:54"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:54"},"nodeType":"YulFunctionCall","src":"4891:44:54"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:54"},"nodeType":"YulFunctionCall","src":"4861:75:54"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:54"},"nodeType":"YulFunctionCall","src":"4831:106:54"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:54"},"nodeType":"YulFunctionCall","src":"4801:137:54"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:54"},"nodeType":"YulFunctionCall","src":"4771:168:54"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:54"},"nodeType":"YulFunctionCall","src":"4741:199:54"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:54"},"nodeType":"YulFunctionCall","src":"4711:230:54"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:54"},"nodeType":"YulFunctionCall","src":"4681:261:54"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:54"},"nodeType":"YulFunctionCall","src":"4651:292:54"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:54"},"nodeType":"YulFunctionCall","src":"4621:323:54"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:54"},"nodeType":"YulFunctionCall","src":"4591:354:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4120:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:54","type":""}],"src":"2025:2926:54"},{"body":{"nodeType":"YulBlock","src":"5653:306:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:54"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:54","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:54"},"nodeType":"YulFunctionCall","src":"5663:28:54"},"nodeType":"YulExpressionStatement","src":"5663:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:54"},"nodeType":"YulFunctionCall","src":"5707:12:54"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:54","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:54"},"nodeType":"YulFunctionCall","src":"5700:36:54"},"nodeType":"YulExpressionStatement","src":"5700:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:54","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:54"},"nodeType":"YulFunctionCall","src":"5752:12:54"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:54","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:54"},"nodeType":"YulFunctionCall","src":"5745:39:54"},"nodeType":"YulExpressionStatement","src":"5745:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:54","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:54"},"nodeType":"YulFunctionCall","src":"5800:12:54"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:54","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:54"},"nodeType":"YulFunctionCall","src":"5793:40:54"},"nodeType":"YulExpressionStatement","src":"5793:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:54","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:54"},"nodeType":"YulFunctionCall","src":"5849:12:54"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:54","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:54"},"nodeType":"YulFunctionCall","src":"5842:49:54"},"nodeType":"YulExpressionStatement","src":"5842:49:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:54","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:54"},"nodeType":"YulFunctionCall","src":"5907:12:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:54"},"nodeType":"YulFunctionCall","src":"5900:25:54"},"nodeType":"YulExpressionStatement","src":"5900:25:54"},{"nodeType":"YulAssignment","src":"5934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:54"},"nodeType":"YulFunctionCall","src":"5941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5637:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:54","type":""}],"src":"4956:1003:54"},{"body":{"nodeType":"YulBlock","src":"6177:276:54","statements":[{"nodeType":"YulAssignment","src":"6187:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:54"},"nodeType":"YulFunctionCall","src":"6195:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:54"},"nodeType":"YulFunctionCall","src":"6223:25:54"},"nodeType":"YulExpressionStatement","src":"6223:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:54"},"nodeType":"YulFunctionCall","src":"6264:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:54"},"nodeType":"YulFunctionCall","src":"6257:34:54"},"nodeType":"YulExpressionStatement","src":"6257:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:54"},"nodeType":"YulFunctionCall","src":"6307:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:54"},"nodeType":"YulFunctionCall","src":"6300:34:54"},"nodeType":"YulExpressionStatement","src":"6300:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:54"},"nodeType":"YulFunctionCall","src":"6350:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:54"},"nodeType":"YulFunctionCall","src":"6343:34:54"},"nodeType":"YulExpressionStatement","src":"6343:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:54"},"nodeType":"YulFunctionCall","src":"6393:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:54"},"nodeType":"YulFunctionCall","src":"6430:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:54"},"nodeType":"YulFunctionCall","src":"6426:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:54"},"nodeType":"YulFunctionCall","src":"6414:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:54"},"nodeType":"YulFunctionCall","src":"6386:61:54"},"nodeType":"YulExpressionStatement","src":"6386:61:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6114:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:54","type":""}],"src":"5964:489:54"}]},"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_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_9c70(pos) -> end\n    {\n        mstore(pos, \"uint256 duration,\")\n        end := add(pos, 17)\n    }\n    function abi_encode_stringliteral_bab2(pos) -> end\n    {\n        mstore(pos, \"uint256 periods,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_1e4b(pos) -> end\n    {\n        mstore(pos, \"uint256 amount,\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_89a9(pos) -> end\n    {\n        mstore(pos, \"uint256 ratio,\")\n        end := add(pos, 14)\n    }\n    function abi_encode_stringliteral_5c66(pos) -> end\n    {\n        mstore(pos, \"uint256 royalty,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_b48f(pos) -> end\n    {\n        mstore(pos, \"uint256 fee,\")\n        end := add(pos, 12)\n    }\n    function abi_encode_stringliteral_0c2a(pos) -> end\n    {\n        mstore(pos, \"uint256 withdrawFee,\")\n        end := add(pos, 20)\n    }\n    function abi_encode_stringliteral_7afc(pos) -> end\n    {\n        mstore(pos, \"uint256 salt,\")\n        end := add(pos, 13)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral_41ba(pos) -> end\n    {\n        mstore(pos, \"uint256 counter\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address token,\")\n        mstore(add(pos, 46), \"uint256 identifier,\")\n        mstore(add(pos, 65), \"address currency,\")\n        mstore(add(pos, 82), \"address artist,\")\n        mstore(add(pos, 97), \"address platform,\")\n        mstore(add(pos, 114), \"uint256 startTime,\")\n        mstore(add(pos, 132), \"uint256 endTime,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral_41ba(abi_encode_stringliteral_cfcd(abi_encode_stringliteral_7afc(abi_encode_stringliteral_0c2a(abi_encode_stringliteral_b48f(abi_encode_stringliteral_5c66(abi_encode_stringliteral_89a9(abi_encode_stringliteral_1e4b(abi_encode_stringliteral_bab2(abi_encode_stringliteral_9c70(add(pos, 148))))))))))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"61018060405234801561001157600080fd5b5060405161053a38038061053a8339810160408190526100309161045c565b80610039610108565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061048c565b5061016052506104b09050565b600080808061013760408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3945060009161039191016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b60006020828403121561046e57600080fd5b81516001600160a01b038116811461048557600080fd5b9392505050565b6000806040838503121561049f57600080fd5b505080516020909101519092909150565b60805160a05160c05160e05161010051610120516101405161016051603f6104fb6000396000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea26469706673582212209744421a80dce6e8512178ca984d23bc4a997a37aec984240c60e480c5c8dd5d64736f6c634300080e0033","opcodes":"PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x53A CODESIZE SUB DUP1 PUSH2 0x53A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x45C JUMP JUMPDEST DUP1 PUSH2 0x39 PUSH2 0x108 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 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 0xFB SWAP2 SWAP1 PUSH2 0x48C JUMP JUMPDEST POP PUSH2 0x160 MSTORE POP PUSH2 0x4B0 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x137 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x312E3 PUSH1 0xEC SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP6 POP PUSH32 0xE6BBD6277E1BF288EED5E8D1780F9A50B239E86B153736BCEEBCCF4EA79D90B3 SWAP5 POP PUSH1 0x0 SWAP2 PUSH2 0x391 SWAP2 ADD PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL DUP2 MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0x10 DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965722C00000000000000000000000000 PUSH1 0x2E DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC818DD5C9C995B98DE4B PUSH1 0x7A SHL PUSH1 0x41 DUP3 ADD MSTORE PUSH15 0x1859191C995CDCC8185C9D1A5CDD0B PUSH1 0x8A SHL PUSH1 0x52 DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC81C1B185D199BDC9B4B PUSH1 0x7A SHL PUSH1 0x61 DUP3 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH1 0x72 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88191D5C985D1A5BDB8B PUSH1 0x7A SHL PUSH1 0x94 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C195C9A5BD91CCB PUSH1 0x82 SHL PUSH1 0xA5 DUP3 ADD MSTORE PUSH15 0x1D5A5B9D0C8D4D88185B5BDD5B9D0B PUSH1 0x8A SHL PUSH1 0xB5 DUP3 ADD MSTORE PUSH14 0x1D5A5B9D0C8D4D881C985D1A5BCB PUSH1 0x92 SHL PUSH1 0xC4 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C9BDE585B1D1E4B PUSH1 0x82 SHL PUSH1 0xD2 DUP3 ADD MSTORE PUSH12 0x1D5A5B9D0C8D4D881999594B PUSH1 0xA2 SHL PUSH1 0xE2 DUP3 ADD MSTORE PUSH32 0x75696E743235362077697468647261774665652C000000000000000000000000 PUSH1 0xEE DUP3 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x102 DUP3 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x10F DUP3 ADD MSTORE PUSH15 0x3AB4B73A191A9B1031B7BAB73A32B9 PUSH1 0x89 SHL PUSH2 0x122 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH2 0x131 DUP3 ADD MSTORE PUSH2 0x132 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH1 0x3F PUSH2 0x4FB PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 DIFFICULTY TIMESTAMP BYTE DUP1 0xDC 0xE6 0xE8 MLOAD 0x21 PUSH25 0xCA984D23BC4A997A37AEC984240C60E480C5C8DD5D64736F6C PUSH4 0x4300080E STOP CALLER ","sourceMap":"223:5658:38:-:0;;;279:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;344:17;786:19:32;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:32;;-1:-1:-1;1203:187:32;;;6223:25:54;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:54;;6300:34;;;;6350:18;;;6343:34;1371:4:32;6393:19:54;;;6386:61;1203:187:32;;;;;;;;;;6195:19:54;;1203:187:32;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:32;;;;;;1032:42;;;-1:-1:-1;;;1032:42:32;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:32;;-1:-1:-1;223:5658:38;;-1:-1:-1;223:5658:38;1527:1491:32;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:32;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:32;;;;1909:724;1778:31;;-1:-1:-1;1834:23:32;;-1:-1:-1;;;1909:724:32;;;-1:-1:-1;;;4146:31:54;;-1:-1:-1;;;4202:2:54;4193:12;;4186:40;-1:-1:-1;;;4251:2:54;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:54;4341:12;;4334:41;-1:-1:-1;;;4400:2:54;4391:12;;4384:39;-1:-1:-1;;;4448:2:54;4439:12;;4432:41;-1:-1:-1;;;4498:3:54;4489:13;;4482:43;-1:-1:-1;;;4550:3:54;4541:13;;4534:41;-1:-1:-1;;;4930:3:54;4921:13;;624:32;-1:-1:-1;;;672:12:54;;;760:31;-1:-1:-1;;;807:12:54;;;895:30;-1:-1:-1;;;941:12:54;;;1029:29;-1:-1:-1;;;1074:12:54;;;1162:31;-1:-1:-1;;;1209:12:54;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:54;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:54;;;1837:30;-1:-1:-1;;;1883:12:54;;;1971:16;2003:11;;;2025:2926;1909:724:32;;;;-1:-1:-1;;1909:724:32;;;;;;;;;;-1:-1:-1;;;1909:724:32;2690:248;;5663:28:54;-1:-1:-1;;;5707:12:54;;;5700:36;-1:-1:-1;;;5752:12:54;;;5745:39;-1:-1:-1;;;5800:12:54;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:54;;;5900:25;1909:724:32;-1:-1:-1;5941:12:54;;2690:248:32;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:54:-;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:54;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:54:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:54;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:54:o;5964:489::-;223:5658:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212209744421a80dce6e8512178ca984d23bc4a997a37aec984240c60e480c5c8dd5d64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 DIFFICULTY TIMESTAMP BYTE DUP1 0xDC 0xE6 0xE8 MLOAD 0x21 PUSH25 0xCA984D23BC4A997A37AEC984240C60E480C5C8DD5D64736F6C PUSH4 0x4300080E STOP CALLER ","sourceMap":"223:5658:38:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"infinite","totalCost":"infinite"},"internal":{"_deriveConduit(bytes32)":"infinite","_deriveEIP712Digest(bytes32,bytes32)":"infinite","_deriveOrderHash(struct OrderParameters memory,uint256)":"infinite","_domainSeparator()":"infinite","_information()":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/GettersAndDerivers.sol\":\"GettersAndDerivers\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\ncontract ConsiderationBase {\\n    bytes32 internal immutable _NAME_HASH;\\n    bytes32 internal immutable _VERSION_HASH;\\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\\n    bytes32 internal immutable _ORDER_TYPEHASH;\\n    uint256 internal immutable _CHAIN_ID;\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n\\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n\\n    constructor(address conduitController) {\\n        (\\n            _NAME_HASH,\\n            _VERSION_HASH,\\n            _EIP_712_DOMAIN_TYPEHASH,\\n            _ORDER_TYPEHASH\\n        ) = _deriveTypehashes();\\n\\n        _CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\\n\\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\\n\\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\\n        );\\n    }\\n\\n    function _deriveDomainSeparator() internal view returns (bytes32) {\\n        return keccak256(\\n            abi.encode(\\n                _EIP_712_DOMAIN_TYPEHASH,\\n                _NAME_HASH,\\n                _VERSION_HASH,\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    function _nameString() internal pure virtual returns (string memory) {\\n        return \\\"Consideration\\\";\\n    }\\n\\n    function _deriveTypehashes()\\n        internal\\n        pure\\n        returns (\\n            bytes32 nameHash,\\n            bytes32 versionHash,\\n            bytes32 eip712DomainTypehash,\\n            bytes32 orderTypehash\\n        )\\n    {\\n        nameHash = keccak256(bytes(_nameString()));\\n\\n        versionHash = keccak256(bytes(\\\"1.0\\\"));\\n\\n        bytes memory orderComponentsTypeString = abi.encodePacked(\\n            \\\"OrderComponents(\\\",\\n                \\\"address offerer,\\\",\\n                \\\"address token,\\\",\\n                \\\"uint256 identifier,\\\",\\n                \\\"address currency,\\\",\\n                \\\"address artist,\\\",\\n                \\\"address platform,\\\",\\n                \\\"uint256 startTime,\\\",\\n                \\\"uint256 endTime,\\\",\\n                \\\"uint256 duration,\\\",\\n                \\\"uint256 periods,\\\",\\n                \\\"uint256 amount,\\\",\\n                \\\"uint256 ratio,\\\",\\n                \\\"uint256 royalty,\\\",\\n                \\\"uint256 fee,\\\",\\n                \\\"uint256 withdrawFee,\\\",\\n                \\\"uint256 salt,\\\",\\n                \\\"bytes32 conduitKey,\\\",\\n                \\\"uint256 counter\\\",\\n            \\\")\\\"\\n        );\\n\\n        eip712DomainTypehash = keccak256(\\n            abi.encodePacked(\\n                \\\"EIP712Domain(\\\",\\n                    \\\"string name,\\\",\\n                    \\\"string version,\\\",\\n                    \\\"uint256 chainId,\\\",\\n                    \\\"address verifyingContract\\\",\\n                \\\")\\\"\\n            )\\n        );\\n\\n        orderTypehash = keccak256(orderComponentsTypeString);\\n    }\\n}\",\"keccak256\":\"0x9cd33c5b8bd60301ea09c0305587414ef38f6898fa7a1e0dfb217dd26091d106\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nstruct OrderComponents {\\n    address offerer;\\n    address token;\\n    uint256 identifier;\\n    address currency;\\n    address artist;\\n    address platform;\\n    uint256 startTime;\\n    uint256 endTime;\\n    uint256 duration;\\n    uint256 periods;\\n    uint256 amount;\\n    uint256 ratio;\\n    uint256 royalty;\\n    uint256 fee;\\n    uint256 withdrawFee;\\n    uint256 salt;\\n    bytes32 conduitKey;\\n    uint256 counter;\\n}\\n\\nstruct OrderParameters {\\n    address offerer;    // 0x00\\n    address token;      // 0x20\\n    uint256 identifier; // 0x40\\n    address currency;   // 0x60\\n    address artist;     // 0x80\\n    address platform;   // 0xa0\\n    uint256 startTime;  // 0xc0\\n    uint256 endTime;    // 0xe0\\n    uint256 duration;   // 0x100\\n    uint256 periods;    // 0x120\\n    uint256 amount;     // 0x140\\n    uint256 ratio;      // 0x160\\n    uint256 royalty;    // 0x180\\n    uint256 fee;        // 0x1a0\\n    uint256 withdrawFee;// 0x1c0\\n    uint256 salt;       // 0x1e0\\n    bytes32 conduitKey; // 0x200\\n}\\n\\nstruct Order {\\n    OrderParameters parameters;\\n    bytes signature;\\n}\\n\\nstruct OrderStatus {\\n    bool isValidated;\\n    bool isCancelled;\\n    bool isFinalized;\\n    bool isBroken;\\n    address fulfiller;\\n    uint256 startedAt;\\n    uint256 shadowId;\\n    uint256 paidTimes;\\n}\",\"keccak256\":\"0xe0a311247127b5bbaf92415e092bec717f990ed8cfe6dec710046d755db38048\",\"license\":\"MIT\"},\"contracts/lib/GettersAndDerivers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderParameters } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { ConsiderationBase } from \\\"./ConsiderationBase.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract GettersAndDerivers is ConsiderationBase {\\n\\n    constructor(address conduitController)\\n        ConsiderationBase(conduitController)\\n    {}\\n\\n    function _deriveOrderHash(\\n        OrderParameters memory orderParameters,\\n        uint256 counter\\n    ) internal view returns (bytes32 orderHash) {\\n        bytes32 typeHash = _ORDER_TYPEHASH;\\n\\n        assembly {\\n            let typeHashPtr := sub(orderParameters, OneWord)\\n\\n            let previousValue := mload(typeHashPtr)\\n\\n            mstore(typeHashPtr, typeHash)\\n\\n            let counterPtr := add(\\n                orderParameters,\\n                OrderParameters_counter_offset\\n            )\\n\\n            let counterDataPtr := mload(counterPtr)\\n\\n            mstore(counterPtr, counter)\\n\\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\\n\\n            mstore(typeHashPtr, previousValue)\\n\\n            mstore(counterPtr, counterDataPtr)\\n        }\\n    }\\n\\n    function _deriveConduit(bytes32 conduitKey)\\n        internal\\n        view\\n        returns (address conduit)\\n    {\\n        // Read conduit controller address from runtime and place on the stack.\\n        address conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Read conduit creation code hash from runtime and place on the stack.\\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\\n\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Retrieve the free memory pointer; it will be replaced afterwards.\\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Place the control character and the conduit controller in scratch\\n            // space; note that eleven bytes at the beginning are left unused.\\n            mstore(0, or(MaskOverByteTwelve, conduitController))\\n\\n            // Place the conduit key in the next region of scratch space.\\n            mstore(OneWord, conduitKey)\\n\\n            // Place conduit creation code hash in free memory pointer location.\\n            mstore(TwoWords, conduitCreationCodeHash)\\n\\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\\n            conduit := and(\\n                // Hash the relevant region.\\n                keccak256(\\n                    // The region starts at memory pointer 11.\\n                    Create2AddressDerivation_ptr,\\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\\n                    Create2AddressDerivation_length\\n                ),\\n                // The address equals the last twenty bytes of the hash.\\n                MaskOverLastTwentyBytes\\n            )\\n\\n            // Restore the free memory pointer.\\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to get the EIP-712 domain separator. If the\\n     *      chainId matches the chainId set on deployment, the cached domain\\n     *      separator will be returned; otherwise, it will be derived from\\n     *      scratch.\\n     *\\n     * @return The domain separator.\\n     */\\n    function _domainSeparator() internal view returns (bytes32) {\\n        // prettier-ignore\\n        return block.chainid == _CHAIN_ID\\n            ? _DOMAIN_SEPARATOR\\n            : _deriveDomainSeparator();\\n    }\\n\\n    /**\\n     * @dev Internal view function to retrieve configuration information for\\n     *      this contract.\\n     *\\n     * @return version           The contract version.\\n     * @return domainSeparator   The domain separator for this contract.\\n     * @return conduitController The conduit Controller set for this contract.\\n     */\\n    function _information()\\n        internal\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        // Derive the domain separator.\\n        domainSeparator = _domainSeparator();\\n\\n        // Declare variable as immutables cannot be accessed within assembly.\\n        conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Allocate a string with the intended length.\\n        version = new string(Version_length);\\n\\n        // Set the version as data on the newly allocated string.\\n        assembly {\\n            mstore(add(version, OneWord), shl(Version_shift, Version))\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to efficiently derive an digest to sign for\\n     *      an order in accordance with EIP-712.\\n     *\\n     * @param domainSeparator The domain separator.\\n     * @param orderHash       The order hash.\\n     *\\n     * @return value The hash.\\n     */\\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\\n        internal\\n        pure\\n        returns (bytes32 value)\\n    {\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Place the EIP-712 prefix at the start of scratch space.\\n            mstore(0, EIP_712_PREFIX)\\n\\n            // Place the domain separator in the next region of scratch space.\\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\\n\\n            // Place the order hash in scratch space, spilling into the first\\n            // two bytes of the free memory pointer \\u2014 this should never be set\\n            // as memory cannot be expanded to that size, and will be zeroed out\\n            // after the hash is performed.\\n            mstore(EIP712_OrderHash_offset, orderHash)\\n\\n            // Hash the relevant region (65 bytes).\\n            value := keccak256(0, EIP712_DigestPayload_size)\\n\\n            // Clear out the dirtied bits in the memory pointer.\\n            mstore(EIP712_OrderHash_offset, 0)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5c0866572e7dfe34edad443a82e35851c4d3631cc9c5957994d68e41516dd6c4\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/LowLevelHelpers.sol":{"LowLevelHelpers":{"abi":[],"devdoc":{"author":"0age","kind":"dev","methods":{},"title":"LowLevelHelpers","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212202c245d52ae62b66bae6b2ba3cf89767cd7e01249b1746158cee7edb821aebc3164736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C 0x24 0x5D MSTORE 0xAE PUSH3 0xB66BAE PUSH12 0x2BA3CF89767CD7E01249B174 PUSH2 0x58CE 0xE7 0xED 0xB8 0x21 0xAE 0xBC BALANCE PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"246:4464:39:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212202c245d52ae62b66bae6b2ba3cf89767cd7e01249b1746158cee7edb821aebc3164736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C 0x24 0x5D MSTORE 0xAE PUSH3 0xB66BAE PUSH12 0x2BA3CF89767CD7E01249B174 PUSH2 0x58CE 0xE7 0xED 0xB8 0x21 0xAE 0xBC BALANCE PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"246:4464:39:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"66","totalCost":"12666"},"internal":{"_doesNotMatchMagic(bytes4)":"infinite","_revertWithReasonIfOneIsReturned()":"infinite","_staticcall(address,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"0age\",\"kind\":\"dev\",\"methods\":{},\"title\":\"LowLevelHelpers\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"LowLevelHelpers contains logic for performing various low-level         operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/LowLevelHelpers.sol\":\"LowLevelHelpers\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/LowLevelHelpers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title LowLevelHelpers\\n * @author 0age\\n * @notice LowLevelHelpers contains logic for performing various low-level\\n *         operations.\\n */\\ncontract LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to staticcall an arbitrary target with given\\n     *      calldata. Note that no data is written to memory and no contract\\n     *      size check is performed.\\n     *\\n     * @param target   The account to staticcall.\\n     * @param callData The calldata to supply when staticcalling the target.\\n     *\\n     * @return success The status of the staticcall to the target.\\n     */\\n    function _staticcall(address target, bytes memory callData)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        assembly {\\n            // Perform the staticcall.\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(callData, OneWord),\\n                mload(callData),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to revert and pass along the revert reason if\\n     *      data was returned by the last call and that the size of that data\\n     *      does not exceed the currently allocated memory size.\\n     */\\n    function _revertWithReasonIfOneIsReturned() internal view {\\n        assembly {\\n            // If it returned a message, bubble it up as long as sufficient gas\\n            // remains to do so:\\n            if returndatasize() {\\n                // Ensure that sufficient gas is available to copy returndata\\n                // while expanding memory where necessary. Start by computing\\n                // the word size of returndata and allocated memory.\\n                let returnDataWords := div(\\n                    add(returndatasize(), AlmostOneWord),\\n                    OneWord\\n                )\\n\\n                // Note: use the free memory pointer in place of msize() to work\\n                // around a Yul warning that prevents accessing msize directly\\n                // when the IR pipeline is activated.\\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\\n\\n                // Next, compute the cost of the returndatacopy.\\n                let cost := mul(CostPerWord, returnDataWords)\\n\\n                // Then, compute cost of new memory allocation.\\n                if gt(returnDataWords, msizeWords) {\\n                    cost := add(\\n                        cost,\\n                        add(\\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\\n                            div(\\n                                sub(\\n                                    mul(returnDataWords, returnDataWords),\\n                                    mul(msizeWords, msizeWords)\\n                                ),\\n                                MemoryExpansionCoefficient\\n                            )\\n                        )\\n                    )\\n                }\\n\\n                // Finally, add a small constant and compare to gas remaining;\\n                // bubble up the revert data if enough gas is still available.\\n                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                    // Copy returndata to memory; overwrite existing memory.\\n                    returndatacopy(0, 0, returndatasize())\\n\\n                    // Revert, specifying memory region with copied returndata.\\n                    revert(0, returndatasize())\\n                }\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to determine if the first word of returndata\\n     *      matches an expected magic value.\\n     *\\n     * @param expected The expected magic value.\\n     *\\n     * @return A boolean indicating whether the expected value matches the one\\n     *         located in the first word of returndata.\\n     */\\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\\n        // Declare a variable for the value held by the return data buffer.\\n        bytes4 result;\\n\\n        // Utilize assembly in order to read directly from returndata buffer.\\n        assembly {\\n            // Only put result on stack if return data is exactly one word.\\n            if eq(returndatasize(), OneWord) {\\n                // Copy the word directly from return data into scratch space.\\n                returndatacopy(0, 0, OneWord)\\n\\n                // Take value from scratch space and place it on the stack.\\n                result := mload(0)\\n            }\\n        }\\n\\n        // Return a boolean indicating whether expected and located value match.\\n        return result != expected;\\n    }\\n}\\n\",\"keccak256\":\"0x57700a6f8f18d1cdfc8492724ef3b9f89aa143382f13794489df70c1f3fc027c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"LowLevelHelpers contains logic for performing various low-level         operations.","version":1}}},"contracts/lib/OrderFulfiller.sol":{"OrderFulfiller":{"abi":[{"inputs":[{"internalType":"address","name":"conduitController","type":"address"},{"internalType":"address","name":"shadowToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadContractSignature","type":"error"},{"inputs":[],"name":"BadFraction","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"}],"name":"BadSignatureV","type":"error"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"},{"internalType":"uint256","name":"considerationIndex","type":"uint256"},{"internalType":"uint256","name":"shortfallAmount","type":"uint256"}],"name":"ConsiderationNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherTransferGenericFailure","type":"error"},{"inputs":[],"name":"InsufficientEtherSupplied","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidBasicOrderParameterEncoding","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidCallToConduit","type":"error"},{"inputs":[],"name":"InvalidCanceller","type":"error"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidConduit","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidMsgValue","type":"error"},{"inputs":[],"name":"InvalidNativeOfferItem","type":"error"},{"inputs":[],"name":"InvalidOrderParameters","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidTime","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[],"name":"MissingOriginalConsiderationItems","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[],"name":"NoReentrantCalls","type":"error"},{"inputs":[],"name":"NoSpecifiedOrdersAvailable","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFilled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFinalized","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderInvalidRepayParameters","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderIsCancelled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotValidated","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderPartiallyFilled","type":"error"},{"inputs":[],"name":"PartialFillsNotEnabledForOrder","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCounter","type":"uint256"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"CounterIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderBroken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"},{"indexed":false,"internalType":"uint256","name":"shadowId","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payTimes","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finalized","type":"bool"}],"name":"OrderRepaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderValidated","type":"event"},{"inputs":[],"name":"shadowToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"BadContractSignature()":[{"details":"Revert with an error when an EIP-1271 call to an account fails."}],"BadFraction()":[{"details":"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator."}],"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"BadSignatureV(uint8)":[{"details":"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.","params":{"v":"The invalid v value."}}],"ConsiderationNotMet(uint256,uint256,uint256)":[{"details":"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.","params":{"considerationIndex":"The index of the consideration item on the                           order.","orderIndex":"The index of the order with the consideration                           item with a shortfall.","shortfallAmount":"The unfulfilled consideration amount."}}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"EtherTransferGenericFailure(address,uint256)":[{"details":"Revert with an error when an ether transfer reverts."}],"InsufficientEtherSupplied()":[{"details":"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders."}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidBasicOrderParameterEncoding()":[{"details":"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding."}],"InvalidCallToConduit(address)":[{"details":"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return."}],"InvalidCanceller()":[{"details":"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone."}],"InvalidConduit(bytes32,address)":[{"details":"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed)."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"InvalidMsgValue(uint256)":[{"details":"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route."}],"InvalidNativeOfferItem()":[{"details":"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders."}],"InvalidSignature()":[{"details":"Revert with an error when a signer cannot be recovered from the      supplied signature."}],"InvalidSigner()":[{"details":"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract."}],"InvalidTime()":[{"details":"Revert with an error when attempting to fill an order outside the      specified start time and end time."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"MissingOriginalConsiderationItems()":[{"details":"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}],"NoSpecifiedOrdersAvailable()":[{"details":"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable."}],"OrderAlreadyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has      already been fully filled.","params":{"orderHash":"The order hash on which a fill was attempted."}}],"OrderIsCancelled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has been      cancelled.","params":{"orderHash":"The hash of the cancelled order."}}],"OrderPartiallyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill a basic order that has      been partially filled.","params":{"orderHash":"The hash of the partially used order."}}],"PartialFillsNotEnabledForOrder()":[{"details":"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type."}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4348":{"entryPoint":null,"id":4348,"parameterSlots":1,"returnSlots":0},"@_4654":{"entryPoint":null,"id":4654,"parameterSlots":1,"returnSlots":0},"@_5470":{"entryPoint":null,"id":5470,"parameterSlots":1,"returnSlots":0},"@_5935":{"entryPoint":null,"id":5935,"parameterSlots":1,"returnSlots":0},"@_6106":{"entryPoint":null,"id":6106,"parameterSlots":2,"returnSlots":0},"@_6921":{"entryPoint":null,"id":6921,"parameterSlots":2,"returnSlots":0},"@_7732":{"entryPoint":null,"id":7732,"parameterSlots":0,"returnSlots":0},"@_7800":{"entryPoint":null,"id":7800,"parameterSlots":1,"returnSlots":0},"@_8290":{"entryPoint":null,"id":8290,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_4760":{"entryPoint":296,"id":4760,"parameterSlots":0,"returnSlots":4},"@_nameString_4683":{"entryPoint":null,"id":4683,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":1148,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":1176,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32_fromMemory":{"entryPoint":1227,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_stringliteral_0c2a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e4b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_41ba":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_59d7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5c66":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7afc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89a9":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9c70":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b48f":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bab2":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_cfcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6640:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:54","statements":[{"nodeType":"YulAssignment","src":"84:22:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:54"},"nodeType":"YulFunctionCall","src":"93:13:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:54"}]},{"body":{"nodeType":"YulBlock","src":"169:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:54"},"nodeType":"YulFunctionCall","src":"171:12:54"},"nodeType":"YulExpressionStatement","src":"171:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:54"},"nodeType":"YulFunctionCall","src":"150:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:54"},"nodeType":"YulFunctionCall","src":"146:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:54"},"nodeType":"YulFunctionCall","src":"135:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:54"},"nodeType":"YulFunctionCall","src":"125:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:54"},"nodeType":"YulFunctionCall","src":"118:50:54"},"nodeType":"YulIf","src":"115:70:54"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:54","type":""}],"src":"14:177:54"},{"body":{"nodeType":"YulBlock","src":"294:195:54","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:54"},"nodeType":"YulFunctionCall","src":"342:12:54"},"nodeType":"YulExpressionStatement","src":"342:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:54"},"nodeType":"YulFunctionCall","src":"311:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:54"},"nodeType":"YulFunctionCall","src":"307:32:54"},"nodeType":"YulIf","src":"304:52:54"},{"nodeType":"YulAssignment","src":"365:50:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:54"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:54"},"nodeType":"YulFunctionCall","src":"375:40:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:54"}]},{"nodeType":"YulAssignment","src":"424:59:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:54"},"nodeType":"YulFunctionCall","src":"464:18:54"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:54"},"nodeType":"YulFunctionCall","src":"434:49:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:54","type":""}],"src":"196:293:54"},{"body":{"nodeType":"YulBlock","src":"592:147:54","statements":[{"body":{"nodeType":"YulBlock","src":"638:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"647:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"650:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"640:6:54"},"nodeType":"YulFunctionCall","src":"640:12:54"},"nodeType":"YulExpressionStatement","src":"640:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"613:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"609:3:54"},"nodeType":"YulFunctionCall","src":"609:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"634:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"605:3:54"},"nodeType":"YulFunctionCall","src":"605:32:54"},"nodeType":"YulIf","src":"602:52:54"},{"nodeType":"YulAssignment","src":"663:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"679:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"673:5:54"},"nodeType":"YulFunctionCall","src":"673:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"663:6:54"}]},{"nodeType":"YulAssignment","src":"698:35:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"718:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"729:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"714:3:54"},"nodeType":"YulFunctionCall","src":"714:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"708:5:54"},"nodeType":"YulFunctionCall","src":"708:25:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"698:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"550:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"561:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"573:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"581:6:54","type":""}],"src":"494:245:54"},{"body":{"nodeType":"YulBlock","src":"799:76:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"816:3:54"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"821:19:54","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:54"},"nodeType":"YulFunctionCall","src":"809:32:54"},"nodeType":"YulExpressionStatement","src":"809:32:54"},{"nodeType":"YulAssignment","src":"850:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"861:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"866:2:54","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"857:3:54"},"nodeType":"YulFunctionCall","src":"857:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"850:3:54"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"783:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"791:3:54","type":""}],"src":"744:131:54"},{"body":{"nodeType":"YulBlock","src":"935:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"952:3:54"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"957:18:54","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"945:6:54"},"nodeType":"YulFunctionCall","src":"945:31:54"},"nodeType":"YulExpressionStatement","src":"945:31:54"},{"nodeType":"YulAssignment","src":"985:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"996:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1001:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"992:3:54"},"nodeType":"YulFunctionCall","src":"992:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"985:3:54"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"919:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"927:3:54","type":""}],"src":"880:130:54"},{"body":{"nodeType":"YulBlock","src":"1070:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1087:3:54"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"1092:17:54","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1080:6:54"},"nodeType":"YulFunctionCall","src":"1080:30:54"},"nodeType":"YulExpressionStatement","src":"1080:30:54"},{"nodeType":"YulAssignment","src":"1119:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1130:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1135:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:54"},"nodeType":"YulFunctionCall","src":"1126:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1119:3:54"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1054:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1062:3:54","type":""}],"src":"1015:129:54"},{"body":{"nodeType":"YulBlock","src":"1204:73:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1221:3:54"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1226:16:54","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1214:6:54"},"nodeType":"YulFunctionCall","src":"1214:29:54"},"nodeType":"YulExpressionStatement","src":"1214:29:54"},{"nodeType":"YulAssignment","src":"1252:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1268:2:54","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:54"},"nodeType":"YulFunctionCall","src":"1259:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1252:3:54"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1188:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1196:3:54","type":""}],"src":"1149:128:54"},{"body":{"nodeType":"YulBlock","src":"1337:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1354:3:54"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1359:18:54","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1347:6:54"},"nodeType":"YulFunctionCall","src":"1347:31:54"},"nodeType":"YulExpressionStatement","src":"1347:31:54"},{"nodeType":"YulAssignment","src":"1387:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1398:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1394:3:54"},"nodeType":"YulFunctionCall","src":"1394:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1387:3:54"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1321:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1329:3:54","type":""}],"src":"1282:130:54"},{"body":{"nodeType":"YulBlock","src":"1472:71:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1489:3:54"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1494:14:54","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1482:6:54"},"nodeType":"YulFunctionCall","src":"1482:27:54"},"nodeType":"YulExpressionStatement","src":"1482:27:54"},{"nodeType":"YulAssignment","src":"1518:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1529:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1534:2:54","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1525:3:54"},"nodeType":"YulFunctionCall","src":"1525:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1518:3:54"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1456:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1464:3:54","type":""}],"src":"1417:126:54"},{"body":{"nodeType":"YulBlock","src":"1603:79:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1620:3:54"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1625:22:54","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1613:6:54"},"nodeType":"YulFunctionCall","src":"1613:35:54"},"nodeType":"YulExpressionStatement","src":"1613:35:54"},{"nodeType":"YulAssignment","src":"1657:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1668:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1673:2:54","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1664:3:54"},"nodeType":"YulFunctionCall","src":"1664:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1657:3:54"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1587:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1595:3:54","type":""}],"src":"1548:134:54"},{"body":{"nodeType":"YulBlock","src":"1742:72:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:54"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1764:15:54","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:54"},"nodeType":"YulFunctionCall","src":"1752:28:54"},"nodeType":"YulExpressionStatement","src":"1752:28:54"},{"nodeType":"YulAssignment","src":"1789:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1800:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1796:3:54"},"nodeType":"YulFunctionCall","src":"1796:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1789:3:54"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1726:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1734:3:54","type":""}],"src":"1687:127:54"},{"body":{"nodeType":"YulBlock","src":"1874:78:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1891:3:54"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1896:21:54","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1884:6:54"},"nodeType":"YulFunctionCall","src":"1884:34:54"},"nodeType":"YulExpressionStatement","src":"1884:34:54"},{"nodeType":"YulAssignment","src":"1927:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1938:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:54","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1934:3:54"},"nodeType":"YulFunctionCall","src":"1934:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1927:3:54"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1858:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1866:3:54","type":""}],"src":"1819:133:54"},{"body":{"nodeType":"YulBlock","src":"2012:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2029:3:54"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"2034:17:54","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2022:6:54"},"nodeType":"YulFunctionCall","src":"2022:30:54"},"nodeType":"YulExpressionStatement","src":"2022:30:54"},{"nodeType":"YulAssignment","src":"2061:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2072:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2077:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2068:3:54"},"nodeType":"YulFunctionCall","src":"2068:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2061:3:54"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2004:3:54","type":""}],"src":"1957:129:54"},{"body":{"nodeType":"YulBlock","src":"2146:59:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2163:3:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"2168:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2156:6:54"},"nodeType":"YulFunctionCall","src":"2156:16:54"},"nodeType":"YulExpressionStatement","src":"2156:16:54"},{"nodeType":"YulAssignment","src":"2181:18:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2192:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2197:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:54"},"nodeType":"YulFunctionCall","src":"2188:11:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2181:3:54"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2130:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2138:3:54","type":""}],"src":"2091:114:54"},{"body":{"nodeType":"YulBlock","src":"4321:815:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4338:3:54"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4343:18:54","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:54"},"nodeType":"YulFunctionCall","src":"4331:31:54"},"nodeType":"YulExpressionStatement","src":"4331:31:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4382:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4387:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4378:3:54"},"nodeType":"YulFunctionCall","src":"4378:12:54"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4392:18:54","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4371:6:54"},"nodeType":"YulFunctionCall","src":"4371:40:54"},"nodeType":"YulExpressionStatement","src":"4371:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4431:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4436:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4427:3:54"},"nodeType":"YulFunctionCall","src":"4427:12:54"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4441:16:54","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4420:6:54"},"nodeType":"YulFunctionCall","src":"4420:38:54"},"nodeType":"YulExpressionStatement","src":"4420:38:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4478:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4483:2:54","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4474:3:54"},"nodeType":"YulFunctionCall","src":"4474:12:54"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4488:21:54","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4467:6:54"},"nodeType":"YulFunctionCall","src":"4467:43:54"},"nodeType":"YulExpressionStatement","src":"4467:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4530:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4535:2:54","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4526:3:54"},"nodeType":"YulFunctionCall","src":"4526:12:54"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4540:19:54","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4519:6:54"},"nodeType":"YulFunctionCall","src":"4519:41:54"},"nodeType":"YulExpressionStatement","src":"4519:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4580:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4585:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4576:3:54"},"nodeType":"YulFunctionCall","src":"4576:12:54"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4590:17:54","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:54"},"nodeType":"YulFunctionCall","src":"4569:39:54"},"nodeType":"YulExpressionStatement","src":"4569:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4628:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4633:2:54","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4624:3:54"},"nodeType":"YulFunctionCall","src":"4624:12:54"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4638:19:54","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4617:6:54"},"nodeType":"YulFunctionCall","src":"4617:41:54"},"nodeType":"YulExpressionStatement","src":"4617:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4678:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4683:3:54","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:54"},"nodeType":"YulFunctionCall","src":"4674:13:54"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4689:20:54","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:54"},"nodeType":"YulFunctionCall","src":"4667:43:54"},"nodeType":"YulExpressionStatement","src":"4667:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4730:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4735:3:54","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:54"},"nodeType":"YulFunctionCall","src":"4726:13:54"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4741:18:54","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4719:6:54"},"nodeType":"YulFunctionCall","src":"4719:41:54"},"nodeType":"YulExpressionStatement","src":"4719:41:54"},{"nodeType":"YulAssignment","src":"4769:361:54","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5110:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5115:3:54","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:54"},"nodeType":"YulFunctionCall","src":"5106:13:54"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"5076:29:54"},"nodeType":"YulFunctionCall","src":"5076:44:54"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"5046:29:54"},"nodeType":"YulFunctionCall","src":"5046:75:54"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"5016:29:54"},"nodeType":"YulFunctionCall","src":"5016:106:54"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4986:29:54"},"nodeType":"YulFunctionCall","src":"4986:137:54"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4956:29:54"},"nodeType":"YulFunctionCall","src":"4956:168:54"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4926:29:54"},"nodeType":"YulFunctionCall","src":"4926:199:54"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4896:29:54"},"nodeType":"YulFunctionCall","src":"4896:230:54"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4866:29:54"},"nodeType":"YulFunctionCall","src":"4866:261:54"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4836:29:54"},"nodeType":"YulFunctionCall","src":"4836:292:54"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4806:29:54"},"nodeType":"YulFunctionCall","src":"4806:323:54"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4776:29:54"},"nodeType":"YulFunctionCall","src":"4776:354:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4769:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4305:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4313:3:54","type":""}],"src":"2210:2926:54"},{"body":{"nodeType":"YulBlock","src":"5838:306:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5855:3:54"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5860:15:54","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5848:6:54"},"nodeType":"YulFunctionCall","src":"5848:28:54"},"nodeType":"YulExpressionStatement","src":"5848:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5896:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5901:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:54"},"nodeType":"YulFunctionCall","src":"5892:12:54"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5906:14:54","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:54"},"nodeType":"YulFunctionCall","src":"5885:36:54"},"nodeType":"YulExpressionStatement","src":"5885:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5941:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5946:2:54","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5937:3:54"},"nodeType":"YulFunctionCall","src":"5937:12:54"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5951:17:54","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5930:6:54"},"nodeType":"YulFunctionCall","src":"5930:39:54"},"nodeType":"YulExpressionStatement","src":"5930:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5989:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5994:2:54","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5985:3:54"},"nodeType":"YulFunctionCall","src":"5985:12:54"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5999:18:54","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5978:6:54"},"nodeType":"YulFunctionCall","src":"5978:40:54"},"nodeType":"YulExpressionStatement","src":"5978:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6038:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6043:2:54","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6034:3:54"},"nodeType":"YulFunctionCall","src":"6034:12:54"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6048:27:54","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6027:6:54"},"nodeType":"YulFunctionCall","src":"6027:49:54"},"nodeType":"YulExpressionStatement","src":"6027:49:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6096:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6101:2:54","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6092:3:54"},"nodeType":"YulFunctionCall","src":"6092:12:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"6106:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6085:6:54"},"nodeType":"YulFunctionCall","src":"6085:25:54"},"nodeType":"YulExpressionStatement","src":"6085:25:54"},{"nodeType":"YulAssignment","src":"6119:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6130:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6135:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:54"},"nodeType":"YulFunctionCall","src":"6126:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6119:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5822:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5830:3:54","type":""}],"src":"5141:1003:54"},{"body":{"nodeType":"YulBlock","src":"6362:276:54","statements":[{"nodeType":"YulAssignment","src":"6372:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6384:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6395:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:54"},"nodeType":"YulFunctionCall","src":"6380:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6372:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6415:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"6426:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:54"},"nodeType":"YulFunctionCall","src":"6408:25:54"},"nodeType":"YulExpressionStatement","src":"6408:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6453:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6464:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6449:3:54"},"nodeType":"YulFunctionCall","src":"6449:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"6469:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6442:6:54"},"nodeType":"YulFunctionCall","src":"6442:34:54"},"nodeType":"YulExpressionStatement","src":"6442:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6496:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6507:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:54"},"nodeType":"YulFunctionCall","src":"6492:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6512:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6485:6:54"},"nodeType":"YulFunctionCall","src":"6485:34:54"},"nodeType":"YulExpressionStatement","src":"6485:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6539:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6550:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6535:3:54"},"nodeType":"YulFunctionCall","src":"6535:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"6555:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6528:6:54"},"nodeType":"YulFunctionCall","src":"6528:34:54"},"nodeType":"YulExpressionStatement","src":"6528:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6593:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6578:3:54"},"nodeType":"YulFunctionCall","src":"6578:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6603:6:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6624:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6615:3:54"},"nodeType":"YulFunctionCall","src":"6615:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6628:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:54"},"nodeType":"YulFunctionCall","src":"6611:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6599:3:54"},"nodeType":"YulFunctionCall","src":"6599:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6571:6:54"},"nodeType":"YulFunctionCall","src":"6571:61:54"},"nodeType":"YulExpressionStatement","src":"6571:61:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6299:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6310:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6318:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6326:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6334:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6342:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6353:4:54","type":""}],"src":"6149:489:54"}]},"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 abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_9c70(pos) -> end\n    {\n        mstore(pos, \"uint256 duration,\")\n        end := add(pos, 17)\n    }\n    function abi_encode_stringliteral_bab2(pos) -> end\n    {\n        mstore(pos, \"uint256 periods,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_1e4b(pos) -> end\n    {\n        mstore(pos, \"uint256 amount,\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_89a9(pos) -> end\n    {\n        mstore(pos, \"uint256 ratio,\")\n        end := add(pos, 14)\n    }\n    function abi_encode_stringliteral_5c66(pos) -> end\n    {\n        mstore(pos, \"uint256 royalty,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_b48f(pos) -> end\n    {\n        mstore(pos, \"uint256 fee,\")\n        end := add(pos, 12)\n    }\n    function abi_encode_stringliteral_0c2a(pos) -> end\n    {\n        mstore(pos, \"uint256 withdrawFee,\")\n        end := add(pos, 20)\n    }\n    function abi_encode_stringliteral_7afc(pos) -> end\n    {\n        mstore(pos, \"uint256 salt,\")\n        end := add(pos, 13)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral_41ba(pos) -> end\n    {\n        mstore(pos, \"uint256 counter\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address token,\")\n        mstore(add(pos, 46), \"uint256 identifier,\")\n        mstore(add(pos, 65), \"address currency,\")\n        mstore(add(pos, 82), \"address artist,\")\n        mstore(add(pos, 97), \"address platform,\")\n        mstore(add(pos, 114), \"uint256 startTime,\")\n        mstore(add(pos, 132), \"uint256 endTime,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral_41ba(abi_encode_stringliteral_cfcd(abi_encode_stringliteral_7afc(abi_encode_stringliteral_0c2a(abi_encode_stringliteral_b48f(abi_encode_stringliteral_5c66(abi_encode_stringliteral_89a9(abi_encode_stringliteral_1e4b(abi_encode_stringliteral_bab2(abi_encode_stringliteral_9c70(add(pos, 148))))))))))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6101a060405234801561001157600080fd5b506040516105f63803806105f683398101604081905261003091610498565b8181808280808080610040610128565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010291906104cb565b5061016052505060016000555050506001600160a01b031661018052506104ef92505050565b600080808061015760408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b394506000916103b191016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b80516001600160a01b038116811461049357600080fd5b919050565b600080604083850312156104ab57600080fd5b6104b48361047c565b91506104c26020840161047c565b90509250929050565b600080604083850312156104de57600080fd5b505080516020909101519092909150565b60805160a05160c05160e051610100516101205161014051610160516101805160b2610544600039600060310152600050506000505060005050600050506000505060005050600050506000505060b26000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212200c51d098017c5e55b98fe9b6810d7c41796d6fe49c069f72a70c0e14bd2a5ac764736f6c634300080e0033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x5F6 CODESIZE SUB DUP1 PUSH2 0x5F6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x498 JUMP JUMPDEST DUP2 DUP2 DUP1 DUP3 DUP1 DUP1 DUP1 DUP1 PUSH2 0x40 PUSH2 0x128 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE 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 0x102 SWAP2 SWAP1 PUSH2 0x4CB JUMP JUMPDEST POP PUSH2 0x160 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x180 MSTORE POP PUSH2 0x4EF SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x157 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x312E3 PUSH1 0xEC SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP6 POP PUSH32 0xE6BBD6277E1BF288EED5E8D1780F9A50B239E86B153736BCEEBCCF4EA79D90B3 SWAP5 POP PUSH1 0x0 SWAP2 PUSH2 0x3B1 SWAP2 ADD PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL DUP2 MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0x10 DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965722C00000000000000000000000000 PUSH1 0x2E DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC818DD5C9C995B98DE4B PUSH1 0x7A SHL PUSH1 0x41 DUP3 ADD MSTORE PUSH15 0x1859191C995CDCC8185C9D1A5CDD0B PUSH1 0x8A SHL PUSH1 0x52 DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC81C1B185D199BDC9B4B PUSH1 0x7A SHL PUSH1 0x61 DUP3 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH1 0x72 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88191D5C985D1A5BDB8B PUSH1 0x7A SHL PUSH1 0x94 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C195C9A5BD91CCB PUSH1 0x82 SHL PUSH1 0xA5 DUP3 ADD MSTORE PUSH15 0x1D5A5B9D0C8D4D88185B5BDD5B9D0B PUSH1 0x8A SHL PUSH1 0xB5 DUP3 ADD MSTORE PUSH14 0x1D5A5B9D0C8D4D881C985D1A5BCB PUSH1 0x92 SHL PUSH1 0xC4 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C9BDE585B1D1E4B PUSH1 0x82 SHL PUSH1 0xD2 DUP3 ADD MSTORE PUSH12 0x1D5A5B9D0C8D4D881999594B PUSH1 0xA2 SHL PUSH1 0xE2 DUP3 ADD MSTORE PUSH32 0x75696E743235362077697468647261774665652C000000000000000000000000 PUSH1 0xEE DUP3 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x102 DUP3 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x10F DUP3 ADD MSTORE PUSH15 0x3AB4B73A191A9B1031B7BAB73A32B9 PUSH1 0x89 SHL PUSH2 0x122 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH2 0x131 DUP3 ADD MSTORE PUSH2 0x132 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B4 DUP4 PUSH2 0x47C JUMP JUMPDEST SWAP2 POP PUSH2 0x4C2 PUSH1 0x20 DUP5 ADD PUSH2 0x47C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0xB2 PUSH2 0x544 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0x31 ADD MSTORE PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0xB2 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFFC5D97A EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x53 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC MLOAD 0xD0 SWAP9 ADD PUSH29 0x5E55B98FE9B6810D7C41796D6FE49C069F72A70C0E14BD2A5AC764736F PUSH13 0x634300080E0033000000000000 ","sourceMap":"362:9381:40:-:0;;;546:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;621:17;640:11;;621:17;;;;;786:19:32;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:32;;-1:-1:-1;1203:187:32;;;6408:25:54;;;;6449:18;;;6442:34;;;;-1:-1:-1;6492:18:54;;6485:34;;;;6535:18;;;6528:34;1371:4:32;6578:19:54;;;6571:61;1203:187:32;;;;;;;;;;6380:19:54;;1203:187:32;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:32;;;;;;1032:42;;;-1:-1:-1;;;1032:42:32;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:32;;-1:-1:-1;;2345:1:33;658:16:42;:31;-1:-1:-1;;;;;;;;417:20:43;;;-1:-1:-1;362:9381:40;;-1:-1:-1;;;362:9381:40;1527:1491:32;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:32;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:32;;;;1909:724;1778:31;;-1:-1:-1;1834:23:32;;-1:-1:-1;;;1909:724:32;;;-1:-1:-1;;;4331:31:54;;-1:-1:-1;;;4387:2:54;4378:12;;4371:40;-1:-1:-1;;;4436:2:54;4427:12;;4420:38;4488:21;4483:2;4474:12;;4467:43;-1:-1:-1;;;4535:2:54;4526:12;;4519:41;-1:-1:-1;;;4585:2:54;4576:12;;4569:39;-1:-1:-1;;;4633:2:54;4624:12;;4617:41;-1:-1:-1;;;4683:3:54;4674:13;;4667:43;-1:-1:-1;;;4735:3:54;4726:13;;4719:41;-1:-1:-1;;;5115:3:54;5106:13;;809:32;-1:-1:-1;;;857:12:54;;;945:31;-1:-1:-1;;;992:12:54;;;1080:30;-1:-1:-1;;;1126:12:54;;;1214:29;-1:-1:-1;;;1259:12:54;;;1347:31;-1:-1:-1;;;1394:12:54;;;1482:27;1625:22;1525:12;;;1613:35;-1:-1:-1;;;1664:12:54;;;1752:28;1896:21;1796:12;;;1884:34;-1:-1:-1;;;1934:12:54;;;2022:30;-1:-1:-1;;;2068:12:54;;;2156:16;2188:11;;;2210:2926;1909:724:32;;;;-1:-1:-1;;1909:724:32;;;;;;;;;;-1:-1:-1;;;1909:724:32;2690:248;;5848:28:54;-1:-1:-1;;;5892:12:54;;;5885:36;-1:-1:-1;;;5937:12:54;;;5930:39;-1:-1:-1;;;5985:12:54;;;5978:40;6048:27;6034:12;;;6027:49;-1:-1:-1;;;6092:12:54;;;6085:25;1909:724:32;-1:-1:-1;6126:12:54;;2690:248:32;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:177:54:-;93:13;;-1:-1:-1;;;;;135:31:54;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:245::-;573:6;581;634:2;622:9;613:7;609:23;605:32;602:52;;;650:1;647;640:12;602:52;-1:-1:-1;;673:16:54;;729:2;714:18;;;708:25;673:16;;708:25;;-1:-1:-1;494:245:54:o;6149:489::-;362:9381:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@shadowToken_7790":{"entryPoint":null,"id":7790,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:242:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:125:54","statements":[{"nodeType":"YulAssignment","src":"125:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:54"},"nodeType":"YulFunctionCall","src":"133:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"182:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"190:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"178:3:54"},"nodeType":"YulFunctionCall","src":"178:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:54"},"nodeType":"YulFunctionCall","src":"160:74:54"},"nodeType":"YulExpressionStatement","src":"160:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:54","type":""}],"src":"14:226:54"}]},"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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"7790":[{"length":32,"start":49}]},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212200c51d098017c5e55b98fe9b6810d7c41796d6fe49c069f72a70c0e14bd2a5ac764736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFFC5D97A EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x53 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC MLOAD 0xD0 SWAP9 ADD PUSH29 0x5E55B98FE9B6810D7C41796D6FE49C069F72A70C0E14BD2A5AC764736F PUSH13 0x634300080E0033000000000000 ","sourceMap":"362:9381:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:36:43;;;;;;;;190:42:54;178:55;;;160:74;;148:2;133:18;336:36:43;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"35600","executionCost":"infinite","totalCost":"infinite"},"external":{"shadowToken()":"infinite"},"internal":{"_calculateDispatch(struct OrderParameters calldata,uint256,bool,bool)":"infinite","_transferERC20AndFinalize(struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory,bytes32,bytes memory)":"infinite","_transferERC20Broken(struct OrderParameters calldata,uint256)":"infinite","_transferEthAndFinalize(struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory)":"infinite","_transferEthBroken(struct OrderParameters calldata,uint256)":"infinite","_validateAndBreakOrder(struct OrderParameters calldata)":"infinite","_validateAndFulfillOrder(struct Order calldata,bytes32)":"infinite","_validateAndRepayOrder(struct OrderParameters calldata,bytes32,uint256)":"infinite"}},"methodIdentifiers":{"shadowToken()":"ffc5d97a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"shadowToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNativeOfferItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrderParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderInvalidRepayParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotValidated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"CounterIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderBroken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"name\":\"OrderRepaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"shadowToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidNativeOfferItem()\":[{\"details\":\"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders.\"}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/OrderFulfiller.sol\":\"OrderFulfiller\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/conduit/lib/ConduitEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ConduitItemType {\\n    NATIVE, // unused\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\\n\",\"keccak256\":\"0x1a84850bbff4b820573334c70ee0797462f20fd8c9b86fdebeacc85ecb1963a6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitItemType } from \\\"./ConduitEnums.sol\\\";\\n\\nstruct ConduitTransfer {\\n    ConduitItemType itemType;\\n    address token;\\n    address from;\\n    address to;\\n    uint256 identifier;\\n    uint256 amount;\\n}\\n\\nstruct ConduitBatch1155Transfer {\\n    address token;\\n    address from;\\n    address to;\\n    uint256[] ids;\\n    uint256[] amounts;\\n}\\n\",\"keccak256\":\"0xe3e87c74dd79c59293e49b7236cc7befdc19886bb79af5fe53208b1772fd24f9\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title ConduitInterface\\n * @author 0age\\n * @notice ConduitInterface contains all external function interfaces, events,\\n *         and errors for conduit contracts.\\n */\\ninterface ConduitInterface {\\n    /**\\n     * @dev Revert with an error when attempting to execute transfers using a\\n     *      caller that does not have an open channel.\\n     */\\n    error ChannelClosed(address channel);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update a channel to the\\n     *      current status of that channel.\\n     */\\n    error ChannelStatusAlreadySet(address channel, bool isOpen);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute a transfer for an\\n     *      item that does not have an ERC20/721/1155 item type.\\n     */\\n    error InvalidItemType();\\n\\n    /**\\n     * @dev Revert with an error when attempting to update the status of a\\n     *      channel from a caller that is not the conduit controller.\\n     */\\n    error InvalidController();\\n\\n    /**\\n     * @dev Emit an event whenever a channel is opened or closed.\\n     *\\n     * @param channel The channel that has been updated.\\n     * @param open    A boolean indicating whether the conduit is open or not.\\n     */\\n    event ChannelUpdated(address indexed channel, bool open);\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\\n     *         open channel can call this function.\\n     *\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\\n     *         a caller with an open channel can call this function.\\n     *\\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external;\\n}\\n\",\"keccak256\":\"0x628e23ec7e820e8ac59c0999211bb022bb5c5581a5bc6bd39465d6419d7d85b5\",\"license\":\"MIT\"},\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConsiderationEventsAndErrors\\n * @author 0age\\n * @notice ConsiderationEventsAndErrors contains all events and errors.\\n */\\ninterface ConsiderationEventsAndErrors {\\n\\n    event OrderFulfilled(\\n        bytes32 orderHash,\\n        address indexed offerer,\\n        uint256 shadowId\\n    );\\n\\n    event OrderRepaid(\\n        bytes32 orderHash,\\n        uint256 payTimes,\\n        bool finalized\\n    );\\n\\n    event OrderBroken(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is successfully cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     * @param offerer   The offerer of the cancelled order.\\n     */\\n    event OrderCancelled(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is explicitly validated. Note that\\n     *      this event will not be emitted on partial fills even though they do\\n     *      validate the order as part of partial fulfillment.\\n     *\\n     * @param orderHash The hash of the validated order.\\n     * @param offerer   The offerer of the validated order.\\n     */\\n    event OrderValidated(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\\n     *\\n     * @param newCounter The new counter for the offerer.\\n     * @param offerer  The offerer in question.\\n     */\\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has\\n     *      already been fully filled.\\n     *\\n     * @param orderHash The order hash on which a fill was attempted.\\n     */\\n    error OrderAlreadyFilled(bytes32 orderHash);\\n\\n    error OrderAlreadyFinalized(bytes32 orderHash);\\n\\n    error OrderAlreadyStarted(bytes32 orderHash);\\n\\n    error OrderNotStarted(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order outside the\\n     *      specified start time and end time.\\n     */\\n    error InvalidTime();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order referencing an\\n     *      invalid conduit (i.e. one that has not been deployed).\\n     */\\n    error InvalidConduit(bytes32 conduitKey, address conduit);\\n\\n    /**\\n     * @dev Revert with an error when an order is supplied for fulfillment with\\n     *      a consideration array that is shorter than the original array.\\n     */\\n    error MissingOriginalConsiderationItems();\\n\\n    /**\\n     * @dev Revert with an error when a call to a conduit fails with revert data\\n     *      that is too expensive to return.\\n     */\\n    error InvalidCallToConduit(address conduit);\\n\\n    /**\\n     * @dev Revert with an error if a consideration amount has not been fully\\n     *      zeroed out after applying all fulfillments.\\n     *\\n     * @param orderIndex         The index of the order with the consideration\\n     *                           item with a shortfall.\\n     * @param considerationIndex The index of the consideration item on the\\n     *                           order.\\n     * @param shortfallAmount    The unfulfilled consideration amount.\\n     */\\n    error ConsiderationNotMet(\\n        uint256 orderIndex,\\n        uint256 considerationIndex,\\n        uint256 shortfallAmount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when insufficient ether is supplied as part of\\n     *      msg.value when fulfilling orders.\\n     */\\n    error InsufficientEtherSupplied();\\n\\n    /**\\n     * @dev Revert with an error when an ether transfer reverts.\\n     */\\n    error EtherTransferGenericFailure(address account, uint256 amount);\\n\\n    /**\\n     * @dev Revert with an error when a partial fill is attempted on an order\\n     *      that does not specify partial fill support in its order type.\\n     */\\n    error PartialFillsNotEnabledForOrder();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has been\\n     *      cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     */\\n    error OrderIsCancelled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order that has\\n     *      been partially filled.\\n     *\\n     * @param orderHash The hash of the partially used order.\\n     */\\n    error OrderPartiallyFilled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel an order as a caller\\n     *      other than the indicated offerer or zone.\\n     */\\n    error InvalidCanceller();\\n\\n    /**\\n     * @dev Revert with an error when supplying a fraction with a value of zero\\n     *      for the numerator or denominator, or one where the numerator exceeds\\n     *      the denominator.\\n     */\\n    error BadFraction();\\n\\n    /**\\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\\n     *      non-payable basic order route or does not supply any callvalue to a\\n     *      payable basic order route.\\n     */\\n    error InvalidMsgValue(uint256 value);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order using\\n     *      calldata not produced by default ABI encoding.\\n     */\\n    error InvalidBasicOrderParameterEncoding();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill any number of\\n     *      available orders when none are fulfillable.\\n     */\\n    error NoSpecifiedOrdersAvailable();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order with an\\n     *      offer for ETH outside of matching orders.\\n     */\\n    error InvalidNativeOfferItem();\\n\\n    error OrderNotValidated(bytes32 orderHash);\\n\\n    error OrderExpired(bytes32 orderHash);\\n\\n    error OrderNotExpired(bytes32 orderHash);\\n\\n    error OrderInvalidRepayParameters(bytes32 orderHash);\\n\\n    error InvalidOrderParameters();\\n}\\n\",\"keccak256\":\"0x71a166db3dbdc44218081f02a9fe0de3cf2d3d9680ac88ef68c0b376eb1a3e97\",\"license\":\"MIT\"},\"contracts/interfaces/EIP1271Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface EIP1271Interface {\\n    function isValidSignature(bytes32 digest, bytes calldata signature)\\n        external\\n        view\\n        returns (bytes4);\\n}\",\"keccak256\":\"0xba82a40106e4565fda2909937d8ab23dc45622fead50d439ee09994d678828e0\",\"license\":\"MIT\"},\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"},\"contracts/interfaces/SignatureVerificationErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title SignatureVerificationErrors\\n * @author 0age\\n * @notice SignatureVerificationErrors contains all errors related to signature\\n *         verification.\\n */\\ninterface SignatureVerificationErrors {\\n    /**\\n     * @dev Revert with an error when a signature that does not contain a v\\n     *      value of 27 or 28 has been supplied.\\n     *\\n     * @param v The invalid v value.\\n     */\\n    error BadSignatureV(uint8 v);\\n\\n    /**\\n     * @dev Revert with an error when the signer recovered by the supplied\\n     *      signature does not match the offerer or an allowed EIP-1271 signer\\n     *      as specified by the offerer in the event they are a contract.\\n     */\\n    error InvalidSigner();\\n\\n    /**\\n     * @dev Revert with an error when a signer cannot be recovered from the\\n     *      supplied signature.\\n     */\\n    error InvalidSignature();\\n\\n    /**\\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\\n     */\\n    error BadContractSignature();\\n}\\n\",\"keccak256\":\"0xd0f5b26469ba6cd303e5ea9b53cf6b7c25cb00918097eb59a263678b51197381\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/Assertions.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { GettersAndDerivers } from \\\"./GettersAndDerivers.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { CounterManager } from \\\"./CounterManager.sol\\\";\\n\\ncontract Assertions is\\n    GettersAndDerivers,\\n    CounterManager,\\n    TokenTransferrerErrors\\n{\\n    constructor(address conduitController)\\n        GettersAndDerivers(conduitController)\\n    {}\\n\\n    function _assertNonZeroAmount(uint256 amount) internal pure {\\n        // Revert if the supplied amount is equal to zero.\\n        if (amount == 0) {\\n            revert MissingItemAmount();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5841bbb4c48b541f692567567de5672939afc452bc940ef69a9d0726697d6414\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\ncontract ConsiderationBase {\\n    bytes32 internal immutable _NAME_HASH;\\n    bytes32 internal immutable _VERSION_HASH;\\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\\n    bytes32 internal immutable _ORDER_TYPEHASH;\\n    uint256 internal immutable _CHAIN_ID;\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n\\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n\\n    constructor(address conduitController) {\\n        (\\n            _NAME_HASH,\\n            _VERSION_HASH,\\n            _EIP_712_DOMAIN_TYPEHASH,\\n            _ORDER_TYPEHASH\\n        ) = _deriveTypehashes();\\n\\n        _CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\\n\\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\\n\\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\\n        );\\n    }\\n\\n    function _deriveDomainSeparator() internal view returns (bytes32) {\\n        return keccak256(\\n            abi.encode(\\n                _EIP_712_DOMAIN_TYPEHASH,\\n                _NAME_HASH,\\n                _VERSION_HASH,\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    function _nameString() internal pure virtual returns (string memory) {\\n        return \\\"Consideration\\\";\\n    }\\n\\n    function _deriveTypehashes()\\n        internal\\n        pure\\n        returns (\\n            bytes32 nameHash,\\n            bytes32 versionHash,\\n            bytes32 eip712DomainTypehash,\\n            bytes32 orderTypehash\\n        )\\n    {\\n        nameHash = keccak256(bytes(_nameString()));\\n\\n        versionHash = keccak256(bytes(\\\"1.0\\\"));\\n\\n        bytes memory orderComponentsTypeString = abi.encodePacked(\\n            \\\"OrderComponents(\\\",\\n                \\\"address offerer,\\\",\\n                \\\"address token,\\\",\\n                \\\"uint256 identifier,\\\",\\n                \\\"address currency,\\\",\\n                \\\"address artist,\\\",\\n                \\\"address platform,\\\",\\n                \\\"uint256 startTime,\\\",\\n                \\\"uint256 endTime,\\\",\\n                \\\"uint256 duration,\\\",\\n                \\\"uint256 periods,\\\",\\n                \\\"uint256 amount,\\\",\\n                \\\"uint256 ratio,\\\",\\n                \\\"uint256 royalty,\\\",\\n                \\\"uint256 fee,\\\",\\n                \\\"uint256 withdrawFee,\\\",\\n                \\\"uint256 salt,\\\",\\n                \\\"bytes32 conduitKey,\\\",\\n                \\\"uint256 counter\\\",\\n            \\\")\\\"\\n        );\\n\\n        eip712DomainTypehash = keccak256(\\n            abi.encodePacked(\\n                \\\"EIP712Domain(\\\",\\n                    \\\"string name,\\\",\\n                    \\\"string version,\\\",\\n                    \\\"uint256 chainId,\\\",\\n                    \\\"address verifyingContract\\\",\\n                \\\")\\\"\\n            )\\n        );\\n\\n        orderTypehash = keccak256(orderComponentsTypeString);\\n    }\\n}\",\"keccak256\":\"0x9cd33c5b8bd60301ea09c0305587414ef38f6898fa7a1e0dfb217dd26091d106\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ItemType {\\n    NATIVE,\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\",\"keccak256\":\"0x6da855eedfe9a6360ac027a0b9ecebb6eacfd09fa5b0c5f55a141e21362808ea\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nstruct OrderComponents {\\n    address offerer;\\n    address token;\\n    uint256 identifier;\\n    address currency;\\n    address artist;\\n    address platform;\\n    uint256 startTime;\\n    uint256 endTime;\\n    uint256 duration;\\n    uint256 periods;\\n    uint256 amount;\\n    uint256 ratio;\\n    uint256 royalty;\\n    uint256 fee;\\n    uint256 withdrawFee;\\n    uint256 salt;\\n    bytes32 conduitKey;\\n    uint256 counter;\\n}\\n\\nstruct OrderParameters {\\n    address offerer;    // 0x00\\n    address token;      // 0x20\\n    uint256 identifier; // 0x40\\n    address currency;   // 0x60\\n    address artist;     // 0x80\\n    address platform;   // 0xa0\\n    uint256 startTime;  // 0xc0\\n    uint256 endTime;    // 0xe0\\n    uint256 duration;   // 0x100\\n    uint256 periods;    // 0x120\\n    uint256 amount;     // 0x140\\n    uint256 ratio;      // 0x160\\n    uint256 royalty;    // 0x180\\n    uint256 fee;        // 0x1a0\\n    uint256 withdrawFee;// 0x1c0\\n    uint256 salt;       // 0x1e0\\n    bytes32 conduitKey; // 0x200\\n}\\n\\nstruct Order {\\n    OrderParameters parameters;\\n    bytes signature;\\n}\\n\\nstruct OrderStatus {\\n    bool isValidated;\\n    bool isCancelled;\\n    bool isFinalized;\\n    bool isBroken;\\n    address fulfiller;\\n    uint256 startedAt;\\n    uint256 shadowId;\\n    uint256 paidTimes;\\n}\",\"keccak256\":\"0xe0a311247127b5bbaf92415e092bec717f990ed8cfe6dec710046d755db38048\",\"license\":\"MIT\"},\"contracts/lib/CounterManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConsiderationEventsAndErrors\\n} from \\\"../interfaces/ConsiderationEventsAndErrors.sol\\\";\\n\\nimport { ReentrancyGuard } from \\\"./ReentrancyGuard.sol\\\";\\n\\ncontract CounterManager is ConsiderationEventsAndErrors, ReentrancyGuard {\\n\\n    mapping(address => uint256) private _counters;\\n\\n    function _incrementCounter() internal returns (uint256 newCounter) {\\n        _assertNonReentrant();\\n\\n        unchecked {\\n            newCounter = ++_counters[msg.sender];\\n        }\\n\\n        emit CounterIncremented(newCounter, msg.sender);\\n    }\\n\\n    function _getCounter(address offerer)\\n        internal\\n        view\\n        returns (uint256 currentCounter)\\n    {\\n        currentCounter = _counters[offerer];\\n    }\\n}\\n\",\"keccak256\":\"0xf07f27dab21fe6607342bc513064c81f10729cf4b9f41e6173ae66d6a4b7a25a\",\"license\":\"MIT\"},\"contracts/lib/Executor.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport { ConduitItemType } from \\\"../conduit/lib/ConduitEnums.sol\\\";\\n\\nimport { ItemType } from \\\"./ConsiderationEnums.sol\\\";\\n\\nimport { Verifiers } from \\\"./Verifiers.sol\\\";\\n\\nimport { TokenTransferrer } from \\\"./TokenTransferrer.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title Executor\\n * @author 0age\\n * @notice Executor contains functions related to processing executions (i.e.\\n *         transferring items, either directly or via conduits).\\n */\\ncontract Executor is Verifiers, TokenTransferrer {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Verifiers(conduitController) {}\\n\\n    /**\\n     * @dev Internal function to transfer an individual ERC721 or ERC1155 item\\n     *      from a given originator to a given recipient. The accumulator will\\n     *      be bypassed, meaning that this function should be utilized in cases\\n     *      where multiple item transfers can be accumulated into a single\\n     *      conduit call. Sufficient approvals must be set, either on the\\n     *      respective conduit or on this contract itself.\\n     *\\n     * @param itemType   The type of item to transfer, either ERC721 or ERC1155.\\n     * @param token      The token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     * @param amount     The amount to transfer.\\n     * @param conduitKey A bytes32 value indicating what corresponding conduit,\\n     *                   if any, to source token approvals from. The zero hash\\n     *                   signifies that no conduit should be used, with direct\\n     *                   approvals set on this contract.\\n     */\\n    function _transferIndividual721Or1155Item(\\n        ItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Determine if the transfer is to be performed via a conduit.\\n        if (conduitKey != bytes32(0)) {\\n            // Use free memory pointer as calldata offset for the conduit call.\\n            uint256 callDataOffset;\\n\\n            // Utilize assembly to place each argument in free memory.\\n            assembly {\\n                // Retrieve the free memory pointer and use it as the offset.\\n                callDataOffset := mload(FreeMemoryPointerSlot)\\n\\n                // Write ConduitInterface.execute.selector to memory.\\n                mstore(callDataOffset, Conduit_execute_signature)\\n\\n                // Write the offset to the ConduitTransfer array in memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_offset_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_ptr\\n                )\\n\\n                // Write the length of the ConduitTransfer array to memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_length_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_length\\n                )\\n\\n                // Write the item type to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferItemType_ptr),\\n                    itemType\\n                )\\n\\n                // Write the token to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferToken_ptr),\\n                    token\\n                )\\n\\n                // Write the transfer source to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferFrom_ptr),\\n                    from\\n                )\\n\\n                // Write the transfer recipient to memory.\\n                mstore(add(callDataOffset, Conduit_execute_transferTo_ptr), to)\\n\\n                // Write the token identifier to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferIdentifier_ptr),\\n                    identifier\\n                )\\n\\n                // Write the transfer amount to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferAmount_ptr),\\n                    amount\\n                )\\n            }\\n\\n            // Perform the call to the conduit.\\n            _callConduitUsingOffsets(\\n                conduitKey,\\n                callDataOffset,\\n                OneConduitExecute_size\\n            );\\n        } else {\\n            // Otherwise, determine whether it is an ERC721 or ERC1155 item.\\n            if (itemType == ItemType.ERC721) {\\n                // Ensure that exactly one 721 item is being transferred.\\n                if (amount != 1) {\\n                    revert InvalidERC721TransferAmount();\\n                }\\n\\n                // Perform transfer via the token contract directly.\\n                _performERC721Transfer(token, from, to, identifier);\\n            } else {\\n                // Perform transfer via the token contract directly.\\n                _performERC1155Transfer(token, from, to, identifier, amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer Ether or other native tokens to a\\n     *      given recipient.\\n     *\\n     * @param to     The recipient of the transfer.\\n     * @param amount The amount to transfer.\\n     */\\n    function _transferEth(address payable to, uint256 amount) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Declare a variable indicating whether the call was successful or not.\\n        bool success;\\n\\n        assembly {\\n            // Transfer the ETH and store if it succeeded or not.\\n            success := call(gas(), to, amount, 0, 0, 0, 0)\\n        }\\n\\n        // If the call fails...\\n        if (!success) {\\n            // Revert and pass the revert reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error message.\\n            revert EtherTransferGenericFailure(to, amount);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient using a given conduit if applicable. Sufficient\\n     *      approvals must be set on this contract or on a respective conduit.\\n     *\\n     * @param token       The ERC20 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC20(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform the token transfer directly.\\n            _performERC20Transfer(token, from, to, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC20,\\n                token,\\n                from,\\n                to,\\n                uint256(0),\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer a single ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set,\\n     *      either on the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC721 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer (must be 1 for ERC721).\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC721(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Ensure that exactly one 721 item is being transferred.\\n            if (amount != 1) {\\n                revert InvalidERC721TransferAmount();\\n            }\\n\\n            // Perform transfer via the token contract directly.\\n            _performERC721Transfer(token, from, to, identifier);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC721,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set, either on\\n     *      the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC1155 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The id to transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC1155(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform transfer via the token contract directly.\\n            _performERC1155Transfer(token, from, to, identifier, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC1155,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\") and the supplied conduit key does not match the key held\\n     *      by the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     */\\n    function _triggerIfArmedAndNotAccumulatable(\\n        bytes memory accumulator,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call if the set key does not match the supplied key.\\n        if (accumulatorConduitKey != conduitKey) {\\n            _triggerIfArmed(accumulator);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\").\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _triggerIfArmed(bytes memory accumulator) internal {\\n        // Exit if the accumulator is not \\\"armed\\\".\\n        if (accumulator.length != AccumulatorArmed) {\\n            return;\\n        }\\n\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call.\\n        _trigger(accumulatorConduitKey, accumulator);\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit corresponding to\\n     *      a given conduit key, supplying all accumulated item transfers. The\\n     *      accumulator will be \\\"disarmed\\\" and reset in the process.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _trigger(bytes32 conduitKey, bytes memory accumulator) internal {\\n        // Declare variables for offset in memory & size of calldata to conduit.\\n        uint256 callDataOffset;\\n        uint256 callDataSize;\\n\\n        // Call the conduit with all the accumulated transfers.\\n        assembly {\\n            // Call begins at third word; the first is length or \\\"armed\\\" status,\\n            // and the second is the current conduit key.\\n            callDataOffset := add(accumulator, TwoWords)\\n\\n            // 68 + items * 192\\n            callDataSize := add(\\n                Accumulator_array_offset_ptr,\\n                mul(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    Conduit_transferItem_size\\n                )\\n            )\\n        }\\n\\n        // Call conduit derived from conduit key & supply accumulated transfers.\\n        _callConduitUsingOffsets(conduitKey, callDataOffset, callDataSize);\\n\\n        // Reset accumulator length to signal that it is now \\\"disarmed\\\".\\n        assembly {\\n            mstore(accumulator, AccumulatorDisarmed)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a call to the conduit corresponding to\\n     *      a given conduit key based on the offset and size of the calldata in\\n     *      question in memory.\\n     *\\n     * @param conduitKey     A bytes32 value indicating what corresponding\\n     *                       conduit, if any, to source token approvals from.\\n     *                       The zero hash signifies that no conduit should be\\n     *                       used, with direct approvals set on this contract.\\n     * @param callDataOffset The memory pointer where calldata is contained.\\n     * @param callDataSize   The size of calldata in memory.\\n     */\\n    function _callConduitUsingOffsets(\\n        bytes32 conduitKey,\\n        uint256 callDataOffset,\\n        uint256 callDataSize\\n    ) internal {\\n        // Derive the address of the conduit using the conduit key.\\n        address conduit = _deriveConduit(conduitKey);\\n\\n        bool success;\\n        bytes4 result;\\n\\n        // call the conduit.\\n        assembly {\\n            // Ensure first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Perform call, placing first word of return data in scratch space.\\n            success := call(\\n                gas(),\\n                conduit,\\n                0,\\n                callDataOffset,\\n                callDataSize,\\n                0,\\n                OneWord\\n            )\\n\\n            // Take value from scratch space and place it on the stack.\\n            result := mload(0)\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Pass along whatever revert reason was given by the conduit.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error.\\n            revert InvalidCallToConduit(conduit);\\n        }\\n\\n        // Ensure result was extracted and matches EIP-1271 magic value.\\n        if (result != ConduitInterface.execute.selector) {\\n            revert InvalidConduit(conduitKey, conduit);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to retrieve the current conduit key set for\\n     *      the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     *\\n     * @return accumulatorConduitKey The conduit key currently set for the\\n     *                               accumulator.\\n     */\\n    function _getAccumulatorConduitKey(bytes memory accumulator)\\n        internal\\n        pure\\n        returns (bytes32 accumulatorConduitKey)\\n    {\\n        // Retrieve the current conduit key from the accumulator.\\n        assembly {\\n            accumulatorConduitKey := mload(\\n                add(accumulator, Accumulator_conduitKey_ptr)\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to place an item transfer into an accumulator\\n     *      that collects a series of transfers to execute against a given\\n     *      conduit in a single call.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param itemType    The type of the item to transfer.\\n     * @param token       The token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer.\\n     * @param amount      The amount to transfer.\\n     */\\n    function _insert(\\n        bytes32 conduitKey,\\n        bytes memory accumulator,\\n        ConduitItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal pure {\\n        uint256 elements;\\n        // \\\"Arm\\\" and prime accumulator if it's not already armed. The sentinel\\n        // value is held in the length of the accumulator array.\\n        if (accumulator.length == AccumulatorDisarmed) {\\n            elements = 1;\\n            bytes4 selector = ConduitInterface.execute.selector;\\n            assembly {\\n                mstore(accumulator, AccumulatorArmed) // \\\"arm\\\" the accumulator.\\n                mstore(add(accumulator, Accumulator_conduitKey_ptr), conduitKey)\\n                mstore(add(accumulator, Accumulator_selector_ptr), selector)\\n                mstore(\\n                    add(accumulator, Accumulator_array_offset_ptr),\\n                    Accumulator_array_offset\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        } else {\\n            // Otherwise, increase the number of elements by one.\\n            assembly {\\n                elements := add(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    1\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        }\\n\\n        // Insert the item.\\n        assembly {\\n            let itemPointer := sub(\\n                add(accumulator, mul(elements, Conduit_transferItem_size)),\\n                Accumulator_itemSizeOffsetDifference\\n            )\\n            mstore(itemPointer, itemType)\\n            mstore(add(itemPointer, Conduit_transferItem_token_ptr), token)\\n            mstore(add(itemPointer, Conduit_transferItem_from_ptr), from)\\n            mstore(add(itemPointer, Conduit_transferItem_to_ptr), to)\\n            mstore(\\n                add(itemPointer, Conduit_transferItem_identifier_ptr),\\n                identifier\\n            )\\n            mstore(add(itemPointer, Conduit_transferItem_amount_ptr), amount)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4b3165cc66037d31d39c5ca2468c46202765bd3831c91a3b33e9c03a59b93a5d\",\"license\":\"MIT\"},\"contracts/lib/GettersAndDerivers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderParameters } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { ConsiderationBase } from \\\"./ConsiderationBase.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract GettersAndDerivers is ConsiderationBase {\\n\\n    constructor(address conduitController)\\n        ConsiderationBase(conduitController)\\n    {}\\n\\n    function _deriveOrderHash(\\n        OrderParameters memory orderParameters,\\n        uint256 counter\\n    ) internal view returns (bytes32 orderHash) {\\n        bytes32 typeHash = _ORDER_TYPEHASH;\\n\\n        assembly {\\n            let typeHashPtr := sub(orderParameters, OneWord)\\n\\n            let previousValue := mload(typeHashPtr)\\n\\n            mstore(typeHashPtr, typeHash)\\n\\n            let counterPtr := add(\\n                orderParameters,\\n                OrderParameters_counter_offset\\n            )\\n\\n            let counterDataPtr := mload(counterPtr)\\n\\n            mstore(counterPtr, counter)\\n\\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\\n\\n            mstore(typeHashPtr, previousValue)\\n\\n            mstore(counterPtr, counterDataPtr)\\n        }\\n    }\\n\\n    function _deriveConduit(bytes32 conduitKey)\\n        internal\\n        view\\n        returns (address conduit)\\n    {\\n        // Read conduit controller address from runtime and place on the stack.\\n        address conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Read conduit creation code hash from runtime and place on the stack.\\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\\n\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Retrieve the free memory pointer; it will be replaced afterwards.\\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Place the control character and the conduit controller in scratch\\n            // space; note that eleven bytes at the beginning are left unused.\\n            mstore(0, or(MaskOverByteTwelve, conduitController))\\n\\n            // Place the conduit key in the next region of scratch space.\\n            mstore(OneWord, conduitKey)\\n\\n            // Place conduit creation code hash in free memory pointer location.\\n            mstore(TwoWords, conduitCreationCodeHash)\\n\\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\\n            conduit := and(\\n                // Hash the relevant region.\\n                keccak256(\\n                    // The region starts at memory pointer 11.\\n                    Create2AddressDerivation_ptr,\\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\\n                    Create2AddressDerivation_length\\n                ),\\n                // The address equals the last twenty bytes of the hash.\\n                MaskOverLastTwentyBytes\\n            )\\n\\n            // Restore the free memory pointer.\\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to get the EIP-712 domain separator. If the\\n     *      chainId matches the chainId set on deployment, the cached domain\\n     *      separator will be returned; otherwise, it will be derived from\\n     *      scratch.\\n     *\\n     * @return The domain separator.\\n     */\\n    function _domainSeparator() internal view returns (bytes32) {\\n        // prettier-ignore\\n        return block.chainid == _CHAIN_ID\\n            ? _DOMAIN_SEPARATOR\\n            : _deriveDomainSeparator();\\n    }\\n\\n    /**\\n     * @dev Internal view function to retrieve configuration information for\\n     *      this contract.\\n     *\\n     * @return version           The contract version.\\n     * @return domainSeparator   The domain separator for this contract.\\n     * @return conduitController The conduit Controller set for this contract.\\n     */\\n    function _information()\\n        internal\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        // Derive the domain separator.\\n        domainSeparator = _domainSeparator();\\n\\n        // Declare variable as immutables cannot be accessed within assembly.\\n        conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Allocate a string with the intended length.\\n        version = new string(Version_length);\\n\\n        // Set the version as data on the newly allocated string.\\n        assembly {\\n            mstore(add(version, OneWord), shl(Version_shift, Version))\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to efficiently derive an digest to sign for\\n     *      an order in accordance with EIP-712.\\n     *\\n     * @param domainSeparator The domain separator.\\n     * @param orderHash       The order hash.\\n     *\\n     * @return value The hash.\\n     */\\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\\n        internal\\n        pure\\n        returns (bytes32 value)\\n    {\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Place the EIP-712 prefix at the start of scratch space.\\n            mstore(0, EIP_712_PREFIX)\\n\\n            // Place the domain separator in the next region of scratch space.\\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\\n\\n            // Place the order hash in scratch space, spilling into the first\\n            // two bytes of the free memory pointer \\u2014 this should never be set\\n            // as memory cannot be expanded to that size, and will be zeroed out\\n            // after the hash is performed.\\n            mstore(EIP712_OrderHash_offset, orderHash)\\n\\n            // Hash the relevant region (65 bytes).\\n            value := keccak256(0, EIP712_DigestPayload_size)\\n\\n            // Clear out the dirtied bits in the memory pointer.\\n            mstore(EIP712_OrderHash_offset, 0)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5c0866572e7dfe34edad443a82e35851c4d3631cc9c5957994d68e41516dd6c4\",\"license\":\"MIT\"},\"contracts/lib/LowLevelHelpers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title LowLevelHelpers\\n * @author 0age\\n * @notice LowLevelHelpers contains logic for performing various low-level\\n *         operations.\\n */\\ncontract LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to staticcall an arbitrary target with given\\n     *      calldata. Note that no data is written to memory and no contract\\n     *      size check is performed.\\n     *\\n     * @param target   The account to staticcall.\\n     * @param callData The calldata to supply when staticcalling the target.\\n     *\\n     * @return success The status of the staticcall to the target.\\n     */\\n    function _staticcall(address target, bytes memory callData)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        assembly {\\n            // Perform the staticcall.\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(callData, OneWord),\\n                mload(callData),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to revert and pass along the revert reason if\\n     *      data was returned by the last call and that the size of that data\\n     *      does not exceed the currently allocated memory size.\\n     */\\n    function _revertWithReasonIfOneIsReturned() internal view {\\n        assembly {\\n            // If it returned a message, bubble it up as long as sufficient gas\\n            // remains to do so:\\n            if returndatasize() {\\n                // Ensure that sufficient gas is available to copy returndata\\n                // while expanding memory where necessary. Start by computing\\n                // the word size of returndata and allocated memory.\\n                let returnDataWords := div(\\n                    add(returndatasize(), AlmostOneWord),\\n                    OneWord\\n                )\\n\\n                // Note: use the free memory pointer in place of msize() to work\\n                // around a Yul warning that prevents accessing msize directly\\n                // when the IR pipeline is activated.\\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\\n\\n                // Next, compute the cost of the returndatacopy.\\n                let cost := mul(CostPerWord, returnDataWords)\\n\\n                // Then, compute cost of new memory allocation.\\n                if gt(returnDataWords, msizeWords) {\\n                    cost := add(\\n                        cost,\\n                        add(\\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\\n                            div(\\n                                sub(\\n                                    mul(returnDataWords, returnDataWords),\\n                                    mul(msizeWords, msizeWords)\\n                                ),\\n                                MemoryExpansionCoefficient\\n                            )\\n                        )\\n                    )\\n                }\\n\\n                // Finally, add a small constant and compare to gas remaining;\\n                // bubble up the revert data if enough gas is still available.\\n                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                    // Copy returndata to memory; overwrite existing memory.\\n                    returndatacopy(0, 0, returndatasize())\\n\\n                    // Revert, specifying memory region with copied returndata.\\n                    revert(0, returndatasize())\\n                }\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to determine if the first word of returndata\\n     *      matches an expected magic value.\\n     *\\n     * @param expected The expected magic value.\\n     *\\n     * @return A boolean indicating whether the expected value matches the one\\n     *         located in the first word of returndata.\\n     */\\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\\n        // Declare a variable for the value held by the return data buffer.\\n        bytes4 result;\\n\\n        // Utilize assembly in order to read directly from returndata buffer.\\n        assembly {\\n            // Only put result on stack if return data is exactly one word.\\n            if eq(returndatasize(), OneWord) {\\n                // Copy the word directly from return data into scratch space.\\n                returndatacopy(0, 0, OneWord)\\n\\n                // Take value from scratch space and place it on the stack.\\n                result := mload(0)\\n            }\\n        }\\n\\n        // Return a boolean indicating whether expected and located value match.\\n        return result != expected;\\n    }\\n}\\n\",\"keccak256\":\"0x57700a6f8f18d1cdfc8492724ef3b9f89aa143382f13794489df70c1f3fc027c\",\"license\":\"MIT\"},\"contracts/lib/OrderFulfiller.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport {\\n    ItemType\\n} from \\\"./ConsiderationEnums.sol\\\";\\n\\nimport {\\n    Order,\\n    OrderParameters\\n} from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { OrderValidator } from \\\"./OrderValidator.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract OrderFulfiller is OrderValidator {\\n\\n    struct Dispatch {\\n        uint256 payment;\\n        uint256 toOfferer;\\n        uint256 toPlatform;\\n        uint256 toArtist;\\n    }\\n\\n    constructor(address conduitController, address shadowToken) OrderValidator(conduitController, shadowToken) {}\\n\\n    function _calculateDispatch(\\n        OrderParameters calldata params,\\n        uint256 payTimes,\\n        bool isFirst,\\n        bool isFinalize\\n    )\\n        internal\\n        pure\\n        returns (Dispatch memory ret)\\n    {\\n        uint256 royalty;\\n        uint256 paidTimes = params.periods - payTimes;\\n\\n        ret.toPlatform = params.withdrawFee;\\n        if (isFinalize) {\\n            royalty = params.royalty - paidTimes * (params.royalty / params.periods);\\n            ret.payment = params.amount - paidTimes* (params.amount / params.periods);\\n            ret.toOfferer = params.amount - (params.amount / params.periods) * params.ratio / 10000 * paidTimes - ret.toPlatform - royalty;\\n            ret.toArtist = params.royalty;\\n        } else {\\n            royalty = payTimes * (params.royalty / params.periods);\\n            ret.payment = payTimes * (params.amount / params.periods);            \\n            ret.toOfferer = ret.payment * params.ratio / 10000 - ret.toPlatform - royalty;\\n            if (isFirst) {\\n                ret.payment += params.fee;\\n                ret.toPlatform += params.fee;\\n            }\\n        }\\n    }\\n\\n    function _validateAndFulfillOrder(Order calldata order, bytes32 fulfillerConduitKey)\\n        internal\\n        returns (bool)\\n    {\\n        (\\n            bytes32 orderHash,\\n            bool valid,\\n            uint256 shadowId\\n        ) = _validateOrderAndUpdateStatus(\\n            order,\\n            true\\n        );\\n\\n        if (!valid) {\\n            return false;\\n        }\\n\\n        OrderParameters calldata orderParameters = order.parameters;\\n        Dispatch memory dispatch = _calculateDispatch(orderParameters, 1, true, false);\\n\\n        if (orderParameters.currency == address(0)) {\\n            _transferIndividual721Or1155Item(\\n                ItemType.ERC721,\\n                orderParameters.token,\\n                orderParameters.offerer,\\n                address(this),\\n                orderParameters.identifier,\\n                1,\\n                orderParameters.conduitKey\\n            );\\n\\n            _transferEthAndFinalize(orderParameters, dispatch);\\n        } else {\\n            bytes memory accumulator = new bytes(AccumulatorDisarmed);\\n            _transferERC721(\\n                orderParameters.token,\\n                orderParameters.offerer,\\n                address(this),\\n                orderParameters.identifier,\\n                1,\\n                orderParameters.conduitKey,\\n                accumulator\\n            );\\n\\n            _transferERC20AndFinalize(\\n                orderParameters,\\n                dispatch,\\n                fulfillerConduitKey,\\n                accumulator\\n            );\\n        }\\n\\n        emit OrderFulfilled(\\n            orderHash,\\n            orderParameters.offerer,\\n            shadowId\\n        );\\n\\n        return true;\\n    }\\n\\n    function _validateAndRepayOrder(OrderParameters calldata parameters, bytes32 fulfillerConduitKey, uint256 payTimes)\\n        internal\\n        returns (bool)\\n    {\\n        bytes32 orderHash;\\n        address fulfiller;\\n        bool isFinalized;\\n        {\\n            bool valid;\\n            (\\n                orderHash,\\n                fulfiller,\\n                valid,\\n                isFinalized\\n            ) = _validateOrderAndUpdateRepayStatus(\\n                parameters,\\n                payTimes,\\n                true\\n            );\\n\\n            if (!valid) {\\n                return false;\\n            }\\n        }\\n\\n        Dispatch memory dispatch = _calculateDispatch(parameters, payTimes, false, isFinalized);\\n\\n        if (parameters.currency == address(0)) {\\n            _transferEthAndFinalize(parameters, dispatch);\\n        } else {\\n            bytes memory accumulator = new bytes(AccumulatorDisarmed);\\n            _transferERC20AndFinalize(\\n                parameters,\\n                dispatch,\\n                fulfillerConduitKey,\\n                accumulator\\n            );\\n        }\\n\\n        if (isFinalized) {\\n            _transferIndividual721Or1155Item(\\n                ItemType.ERC721,\\n                parameters.token,\\n                address(this),\\n                fulfiller,\\n                parameters.identifier,\\n                1,\\n                bytes32(0)\\n            );\\n        }\\n\\n        emit OrderRepaid(\\n            orderHash,\\n            payTimes,\\n            isFinalized\\n        );\\n\\n        return true;\\n    }\\n\\n    function _validateAndBreakOrder(OrderParameters calldata parameters)\\n        internal\\n        returns (bool)\\n    {\\n        (\\n            bytes32 orderHash,\\n            uint256 paidTimes,\\n            bool valid\\n        ) = _validateOrderAndUpdateBreakStatus(\\n            parameters,\\n            true\\n        );\\n\\n        if (!valid) {\\n            return false;\\n        }\\n\\n        _transferIndividual721Or1155Item(\\n            ItemType.ERC721,\\n            parameters.token,\\n            address(this),\\n            parameters.offerer,\\n            parameters.identifier,\\n            1,\\n            bytes32(0)\\n        );\\n\\n        if (parameters.currency == address(0)) {\\n            _transferEthBroken(parameters, paidTimes);\\n        } else {\\n            _transferERC20Broken(\\n                parameters,\\n                paidTimes\\n            );\\n        }\\n\\n        emit OrderBroken(\\n            orderHash,\\n            parameters.offerer\\n        );\\n\\n        return true;\\n    }\\n\\n    function _transferEthBroken(\\n        OrderParameters calldata orderParameters,\\n        uint256 paidTimes\\n    ) internal {\\n        _transferEth(\\n            payable(orderParameters.offerer),\\n            orderParameters.royalty / orderParameters.periods * paidTimes\\n        );\\n        uint256 toPlatform = orderParameters.amount / orderParameters.periods * paidTimes;\\n        toPlatform = toPlatform - toPlatform * orderParameters.ratio / 10000;\\n        _transferEth(\\n            payable(orderParameters.platform),\\n            toPlatform\\n        );\\n    }\\n\\n    function _transferERC20Broken(\\n        OrderParameters calldata parameters,\\n        uint256 paidTimes\\n    ) internal {\\n        _performSelfERC20Transfer(parameters.currency, parameters.offerer, parameters.royalty / parameters.periods * paidTimes);\\n\\n        uint256 toPlatform = parameters.amount / parameters.periods * paidTimes;\\n        toPlatform = toPlatform - toPlatform * parameters.ratio / 10000;\\n        _performSelfERC20Transfer(parameters.currency, parameters.platform, toPlatform);\\n    }\\n\\n    function _transferEthAndFinalize(\\n        OrderParameters calldata orderParameters,\\n        Dispatch memory dispatch\\n    ) internal {\\n        uint256 etherRemaining = msg.value;\\n\\n        if (dispatch.payment > etherRemaining) {\\n            revert InsufficientEtherSupplied();\\n        }\\n\\n        _transferEth(\\n            payable(orderParameters.offerer),\\n            dispatch.toOfferer\\n        );\\n\\n        _transferEth(\\n            payable(orderParameters.platform),\\n            dispatch.toPlatform\\n        );\\n\\n        if (dispatch.toArtist > 0) {\\n            _transferEth(\\n                payable(orderParameters.artist),\\n                dispatch.toArtist\\n            );\\n        }\\n\\n        etherRemaining -= dispatch.payment;\\n\\n        if (etherRemaining > 0) {\\n            unchecked {\\n                _transferEth(payable(msg.sender), etherRemaining);\\n            }\\n        }\\n    }\\n\\n    function _transferERC20AndFinalize(\\n        OrderParameters calldata parameters,\\n        Dispatch memory dispatch,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        address from = msg.sender;\\n        address token = parameters.currency;\\n\\n        _transferERC20(\\n            token,\\n            from,\\n            parameters.platform,\\n            dispatch.toPlatform,\\n            conduitKey,\\n            accumulator\\n        );\\n\\n        if (dispatch.toArtist > 0) {\\n            _transferERC20(\\n                token,\\n                from,\\n                parameters.artist,\\n                dispatch.toArtist,\\n                conduitKey,\\n                accumulator\\n            );\\n        }\\n\\n        uint256 left = dispatch.payment - dispatch.toPlatform - dispatch.toArtist;\\n        if (left >= dispatch.toOfferer) {\\n            _transferERC20(\\n                token,\\n                from,\\n                parameters.offerer,\\n                dispatch.toOfferer,\\n                conduitKey,\\n                accumulator\\n            );\\n            left -= dispatch.toOfferer;\\n            if (left > 0) {\\n                _transferERC20(\\n                    token,\\n                    from,\\n                    address(this),\\n                    left,\\n                    conduitKey,\\n                    accumulator\\n                );\\n            }\\n            _triggerIfArmed(accumulator);\\n        } else {\\n            _transferERC20(\\n                token,\\n                from,\\n                parameters.offerer,\\n                left,\\n                conduitKey,\\n                accumulator\\n            );\\n            _triggerIfArmed(accumulator);\\n\\n            _performSelfERC20Transfer(token, parameters.offerer, dispatch.toOfferer - left);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcc6c4cf70611dcb3ddb97629ce2d8650466b0d48a8889efbc8baf328535f523d\",\"license\":\"MIT\"},\"contracts/lib/OrderValidator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    OrderParameters,\\n    Order,\\n    OrderComponents,\\n    OrderStatus\\n} from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\nimport { Executor } from \\\"./Executor.sol\\\";\\nimport { Shadow } from \\\"./Shadow.sol\\\";\\n\\ncontract OrderValidator is Executor, Shadow {\\n\\n    mapping(bytes32 => OrderStatus) private _orderStatus;\\n\\n    constructor(address conduitController, address shadowToken) Executor(conduitController) Shadow(shadowToken) {}\\n\\n    function _validateOrderAndUpdateStatus(\\n        Order calldata order,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            bool valid,\\n            uint256 shadowId\\n        )\\n    {\\n        OrderParameters calldata orderParameters = order.parameters;\\n        if (\\n            !_verifyTime(\\n                orderParameters.startTime,\\n                orderParameters.endTime,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (bytes32(0), false, 0);\\n        }\\n\\n        if (orderParameters.periods < 2) {\\n            if (revertOnInvalid) {\\n                revert InvalidOrderParameters();\\n            }\\n            return (bytes32(0), false, 0);\\n        }\\n\\n        orderHash = _deriveOrderHash(\\n            orderParameters,\\n            _getCounter(orderParameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                true,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, false, 0);\\n        }\\n\\n        if (!orderStatus.isValidated) {\\n            _verifySignature(\\n                orderParameters.offerer,\\n                orderHash,\\n                order.signature\\n            );\\n        }\\n\\n        shadowId = _mintToken(\\n            msg.sender,\\n            orderParameters.token,\\n            orderParameters.identifier,\\n            orderParameters.duration\\n        );\\n\\n        orderStatus.isValidated = true;\\n        orderStatus.isCancelled = false;\\n        orderStatus.isBroken = false;\\n        orderStatus.fulfiller = msg.sender;\\n        orderStatus.startedAt = block.timestamp;\\n        orderStatus.shadowId = shadowId;\\n        orderStatus.paidTimes = 1;\\n\\n        valid = true;\\n    }\\n\\n    function _validateOrderAndUpdateRepayStatus(\\n        OrderParameters calldata parameters,\\n        uint256 payTimes,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            address fulfiller,\\n            bool valid,\\n            bool isFinalized\\n        )\\n    {\\n        orderHash = _deriveOrderHash(\\n            parameters,\\n            _getCounter(parameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        if (!orderStatus.isValidated) {\\n            if (revertOnInvalid) {\\n                revert OrderNotValidated(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                false,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (orderStatus.paidTimes + payTimes > parameters.periods || payTimes < 1) {\\n            if (revertOnInvalid) {\\n                revert OrderInvalidRepayParameters(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (orderStatus.startedAt + orderStatus.paidTimes * parameters.duration < block.timestamp) {\\n            if (revertOnInvalid) {\\n                revert OrderExpired(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        orderStatus.paidTimes += payTimes;\\n        if (orderStatus.paidTimes == parameters.periods) {\\n            orderStatus.isFinalized = true;\\n            isFinalized = true;\\n            _burnToken(orderStatus.shadowId);\\n        } else {\\n            _extendToken(\\n                orderStatus.fulfiller,\\n                orderStatus.shadowId,\\n                orderStatus.startedAt + orderStatus.paidTimes * parameters.duration\\n            );\\n        }\\n\\n        valid = true;\\n        fulfiller = orderStatus.fulfiller;\\n    }\\n\\n    function _validateOrderAndUpdateBreakStatus(\\n        OrderParameters calldata parameters,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            uint256 paidTimes,\\n            bool valid\\n        )\\n    {\\n        orderHash = _deriveOrderHash(\\n            parameters,\\n            _getCounter(parameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        if (!orderStatus.isValidated) {\\n            if (revertOnInvalid) {\\n                revert OrderNotValidated(orderHash);\\n            }\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        paidTimes = orderStatus.paidTimes;\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                false,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        if (orderStatus.startedAt + paidTimes * parameters.duration > block.timestamp) {\\n            if (revertOnInvalid) {\\n                revert OrderNotExpired(orderHash);\\n            }\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        _burnToken(orderStatus.shadowId);\\n\\n        orderStatus.isFinalized = true;\\n        orderStatus.isBroken = true;\\n        valid = true;\\n    }\\n\\n    function _cancel(OrderComponents[] calldata orders)\\n        internal\\n        returns (bool cancelled)\\n    {\\n        // Ensure that the reentrancy guard is not currently set.\\n        _assertNonReentrant();\\n\\n        // Declare variables outside of the loop.\\n        OrderStatus storage orderStatus;\\n        address offerer;\\n\\n        // Skip overflow check as for loop is indexed starting at zero.\\n        unchecked {\\n            // Read length of the orders array from memory and place on stack.\\n            uint256 totalOrders = orders.length;\\n\\n            // Iterate over each order.\\n            for (uint256 i = 0; i < totalOrders; ) {\\n                // Retrieve the order.\\n                OrderComponents calldata order = orders[i];\\n\\n                offerer = order.offerer;\\n\\n                if (msg.sender != offerer) {\\n                    revert InvalidCanceller();\\n                }\\n\\n                // Derive order hash using the order parameters and the counter.\\n                bytes32 orderHash = _deriveOrderHash(\\n                    OrderParameters(\\n                        offerer,\\n                        order.token,\\n                        order.identifier,\\n                        order.currency,\\n                        order.artist,\\n                        order.platform,\\n                        order.startTime,\\n                        order.endTime,\\n                        order.duration,\\n                        order.periods,\\n                        order.amount,\\n                        order.ratio,\\n                        order.royalty,\\n                        order.fee,\\n                        order.withdrawFee,\\n                        order.salt,\\n                        order.conduitKey\\n                    ),\\n                    order.counter\\n                );\\n\\n                // Retrieve the order status using the derived order hash.\\n                orderStatus = _orderStatus[orderHash];\\n\\n                if (orderStatus.startedAt > 0) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n\\n                // Update the order status as not valid and cancelled.\\n                orderStatus.isValidated = false;\\n                orderStatus.isCancelled = true;\\n\\n                // Emit an event signifying that the order has been cancelled.\\n                emit OrderCancelled(orderHash, offerer);\\n\\n                // Increment counter inside body of loop for gas efficiency.\\n                ++i;\\n            }\\n        }\\n\\n        // Return a boolean indicating that orders were successfully cancelled.\\n        cancelled = true;\\n    }\\n\\n    function _validate(Order[] calldata orders)\\n        internal\\n        returns (bool validated)\\n    {\\n        // Ensure that the reentrancy guard is not currently set.\\n        _assertNonReentrant();\\n\\n        // Declare variables outside of the loop.\\n        OrderStatus storage orderStatus;\\n        bytes32 orderHash;\\n        address offerer;\\n\\n        // Skip overflow check as for loop is indexed starting at zero.\\n        unchecked {\\n            // Read length of the orders array from memory and place on stack.\\n            uint256 totalOrders = orders.length;\\n\\n            // Iterate over each order.\\n            for (uint256 i = 0; i < totalOrders; ) {\\n                // Retrieve the order.\\n                Order calldata order = orders[i];\\n\\n                // Retrieve the order parameters.\\n                OrderParameters calldata orderParameters = order.parameters;\\n\\n                // Move offerer from memory to the stack.\\n                offerer = orderParameters.offerer;\\n\\n                // Get current counter & use it w/ params to derive order hash.\\n                orderHash = _deriveOrderHash(\\n                    OrderParameters(\\n                        offerer,\\n                        orderParameters.token,\\n                        orderParameters.identifier,\\n                        orderParameters.currency,\\n                        orderParameters.artist,\\n                        orderParameters.platform,\\n                        orderParameters.startTime,\\n                        orderParameters.endTime,\\n                        orderParameters.duration,\\n                        orderParameters.periods,\\n                        orderParameters.amount,\\n                        orderParameters.ratio,\\n                        orderParameters.royalty,\\n                        orderParameters.fee,\\n                        orderParameters.withdrawFee,\\n                        orderParameters.salt,\\n                        orderParameters.conduitKey\\n                    ),\\n                    _getCounter(orderParameters.offerer)\\n                );\\n\\n                // Retrieve the order status using the derived order hash.\\n                orderStatus = _orderStatus[orderHash];\\n\\n                // Ensure order is fillable and retrieve the filled amount.\\n                _verifyOrderStatus(\\n                    orderHash,\\n                    orderStatus,\\n                    true, // Signifies that partially filled orders are valid.\\n                    true // Signifies to revert if the order is invalid.\\n                );\\n\\n                // If the order has not already been validated...\\n                if (!orderStatus.isValidated) {\\n                    // Verify the supplied signature.\\n                    _verifySignature(offerer, orderHash, order.signature);\\n\\n                    // Update order status to mark the order as valid.\\n                    orderStatus.isValidated = true;\\n\\n                    // Emit an event signifying the order has been validated.\\n                    emit OrderValidated(\\n                        orderHash,\\n                        offerer\\n                    );\\n                }\\n\\n                // Increment counter inside body of the loop for gas efficiency.\\n                ++i;\\n            }\\n        }\\n\\n        // Return a boolean indicating that orders were successfully validated.\\n        validated = true;\\n    }\\n\\n    function _getOrderStatus(bytes32 orderHash)\\n        internal\\n        view\\n        returns (\\n            bool isValidated,\\n            bool isCancelled,\\n            bool isFinalized,\\n            bool isBroken,\\n            address fulfiller,\\n            uint256 startedAt,\\n            uint256 shadowId,\\n            uint256 paidTimes\\n        )\\n    {\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        return (\\n            orderStatus.isValidated,\\n            orderStatus.isCancelled,\\n            orderStatus.isFinalized,\\n            orderStatus.isBroken,\\n            orderStatus.fulfiller,\\n            orderStatus.startedAt,\\n            orderStatus.shadowId,\\n            orderStatus.paidTimes\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x4076a1d39f964a1c535665dcacbe5a04e9b001273db63b3846bf5eec9c9e88bd\",\"license\":\"MIT\"},\"contracts/lib/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ReentrancyErrors } from \\\"../interfaces/ReentrancyErrors.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title ReentrancyGuard\\n * @author 0age\\n * @notice ReentrancyGuard contains a storage variable and related functionality\\n *         for protecting against reentrancy.\\n */\\ncontract ReentrancyGuard is ReentrancyErrors {\\n    // Prevent reentrant calls on protected functions.\\n    uint256 private _reentrancyGuard;\\n\\n    /**\\n     * @dev Initialize the reentrancy guard during deployment.\\n     */\\n    constructor() {\\n        // Initialize the reentrancy guard in a cleared state.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to ensure that the sentinel value for the\\n     *      reentrancy guard is not currently set and, if not, to set the\\n     *      sentinel value for the reentrancy guard.\\n     */\\n    function _setReentrancyGuard() internal {\\n        // Ensure that the reentrancy guard is not already set.\\n        _assertNonReentrant();\\n\\n        // Set the reentrancy guard.\\n        _reentrancyGuard = _ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to unset the reentrancy guard sentinel value.\\n     */\\n    function _clearReentrancyGuard() internal {\\n        // Clear the reentrancy guard.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal view function to ensure that the sentinel value for the\\n            reentrancy guard is not currently set.\\n     */\\n    function _assertNonReentrant() internal view {\\n        // Ensure that the reentrancy guard is not currently set.\\n        if (_reentrancyGuard != _NOT_ENTERED) {\\n            revert NoReentrantCalls();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa52711c788a24071f8a872ea5ee3030f0f8f592abf8f0d5577707e585a7628d5\",\"license\":\"MIT\"},\"contracts/lib/Shadow.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { IERC4907A } from \\\"erc721a/contracts/extensions/IERC4907A.sol\\\";\\n\\ninterface IMintBurnableERC4907 {\\n    function mint(address to, address tokenAddress, uint256 tokenId) external returns (uint256);\\n    function burn(uint256 tokenId) external;\\n}\\n\\ncontract Shadow {\\n    \\n    address public immutable shadowToken;\\n\\n    constructor(address _token) {\\n        shadowToken = _token;\\n    }\\n\\n    function _mintToken(\\n        address to,\\n        address token,\\n        uint256 identifier,\\n        uint256 duration\\n    ) internal returns (uint256) {\\n        uint256 tid = IMintBurnableERC4907(shadowToken).mint(address(this), token, identifier);\\n        IERC4907A(shadowToken).setUser(tid, to, uint64(duration + block.timestamp));\\n        return tid;\\n    }\\n\\n    function _extendToken(address to, uint256 tokenId, uint256 expires) internal {\\n        IERC4907A(shadowToken).setUser(tokenId, to, uint64(expires));\\n    }\\n\\n    function _burnToken(uint256 tokenId) internal {\\n        IMintBurnableERC4907(shadowToken).burn(tokenId);\\n    }\\n}\",\"keccak256\":\"0x71b95c35b423d619bb4583e8a39c0227fd730c090d4b7071e79c8cac87910e8d\",\"license\":\"MIT\"},\"contracts/lib/SignatureVerification.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { EIP1271Interface } from \\\"../interfaces/EIP1271Interface.sol\\\";\\n\\nimport {\\n    SignatureVerificationErrors\\n} from \\\"../interfaces/SignatureVerificationErrors.sol\\\";\\n\\nimport { LowLevelHelpers } from \\\"./LowLevelHelpers.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title SignatureVerification\\n * @author 0age\\n * @notice SignatureVerification contains logic for verifying signatures.\\n */\\ncontract SignatureVerification is SignatureVerificationErrors, LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied signer.\\n     *\\n     * @param signer    The signer for the order.\\n     * @param digest    The digest to verify the signature against.\\n     * @param signature A signature from the signer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _assertValidSignature(\\n        address signer,\\n        bytes32 digest,\\n        bytes memory signature\\n    ) internal view {\\n        // Declare value for ecrecover equality or 1271 call success status.\\n        bool success;\\n\\n        // Utilize assembly to perform optimized signature verification check.\\n        assembly {\\n            // Ensure that first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Declare value for v signature parameter.\\n            let v\\n\\n            // Get the length of the signature.\\n            let signatureLength := mload(signature)\\n\\n            // Get the pointer to the value preceding the signature length.\\n            // This will be used for temporary memory overrides - either the\\n            // signature head for isValidSignature or the digest for ecrecover.\\n            let wordBeforeSignaturePtr := sub(signature, OneWord)\\n\\n            // Cache the current value behind the signature to restore it later.\\n            let cachedWordBeforeSignature := mload(wordBeforeSignaturePtr)\\n\\n            // Declare lenDiff + recoveredSigner scope to manage stack pressure.\\n            {\\n                // Take the difference between the max ECDSA signature length\\n                // and the actual signature length. Overflow desired for any\\n                // values > 65. If the diff is not 0 or 1, it is not a valid\\n                // ECDSA signature - move on to EIP1271 check.\\n                let lenDiff := sub(ECDSA_MaxLength, signatureLength)\\n\\n                // Declare variable for recovered signer.\\n                let recoveredSigner\\n\\n                // If diff is 0 or 1, it may be an ECDSA signature.\\n                // Try to recover signer.\\n                if iszero(gt(lenDiff, 1)) {\\n                    // Read the signature `s` value.\\n                    let originalSignatureS := mload(\\n                        add(signature, ECDSA_signature_s_offset)\\n                    )\\n\\n                    // Read the first byte of the word after `s`. If the\\n                    // signature is 65 bytes, this will be the real `v` value.\\n                    // If not, it will need to be modified - doing it this way\\n                    // saves an extra condition.\\n                    v := byte(\\n                        0,\\n                        mload(add(signature, ECDSA_signature_v_offset))\\n                    )\\n\\n                    // If lenDiff is 1, parse 64-byte signature as ECDSA.\\n                    if lenDiff {\\n                        // Extract yParity from highest bit of vs and add 27 to\\n                        // get v.\\n                        v := add(\\n                            shr(MaxUint8, originalSignatureS),\\n                            Signature_lower_v\\n                        )\\n\\n                        // Extract canonical s from vs, all but the highest bit.\\n                        // Temporarily overwrite the original `s` value in the\\n                        // signature.\\n                        mstore(\\n                            add(signature, ECDSA_signature_s_offset),\\n                            and(\\n                                originalSignatureS,\\n                                EIP2098_allButHighestBitMask\\n                            )\\n                        )\\n                    }\\n                    // Temporarily overwrite the signature length with `v` to\\n                    // conform to the expected input for ecrecover.\\n                    mstore(signature, v)\\n\\n                    // Temporarily overwrite the word before the length with\\n                    // `digest` to conform to the expected input for ecrecover.\\n                    mstore(wordBeforeSignaturePtr, digest)\\n\\n                    // Attempt to recover the signer for the given signature. Do\\n                    // not check the call status as ecrecover will return a null\\n                    // address if the signature is invalid.\\n                    pop(\\n                        staticcall(\\n                            gas(),\\n                            Ecrecover_precompile, // Call ecrecover precompile.\\n                            wordBeforeSignaturePtr, // Use data memory location.\\n                            Ecrecover_args_size, // Size of digest, v, r, and s.\\n                            0, // Write result to scratch space.\\n                            OneWord // Provide size of returned result.\\n                        )\\n                    )\\n\\n                    // Restore cached word before signature.\\n                    mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n\\n                    // Restore cached signature length.\\n                    mstore(signature, signatureLength)\\n\\n                    // Restore cached signature `s` value.\\n                    mstore(\\n                        add(signature, ECDSA_signature_s_offset),\\n                        originalSignatureS\\n                    )\\n\\n                    // Read the recovered signer from the buffer given as return\\n                    // space for ecrecover.\\n                    recoveredSigner := mload(0)\\n                }\\n\\n                // Set success to true if the signature provided was a valid\\n                // ECDSA signature and the signer is not the null address. Use\\n                // gt instead of direct as success is used outside of assembly.\\n                success := and(eq(signer, recoveredSigner), gt(signer, 0))\\n            }\\n\\n            // If the signature was not verified with ecrecover, try EIP1271.\\n            if iszero(success) {\\n                // Temporarily overwrite the word before the signature length\\n                // and use it as the head of the signature input to\\n                // `isValidSignature`, which has a value of 64.\\n                mstore(\\n                    wordBeforeSignaturePtr,\\n                    EIP1271_isValidSignature_signature_head_offset\\n                )\\n\\n                // Get pointer to use for the selector of `isValidSignature`.\\n                let selectorPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_selector_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the selector pointer.\\n                let cachedWordOverwrittenBySelector := mload(selectorPtr)\\n\\n                // Get pointer to use for `digest` input to `isValidSignature`.\\n                let digestPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_digest_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the digest pointer.\\n                let cachedWordOverwrittenByDigest := mload(digestPtr)\\n\\n                // Write the selector first, since it overlaps the digest.\\n                mstore(selectorPtr, EIP1271_isValidSignature_selector)\\n\\n                // Next, write the digest.\\n                mstore(digestPtr, digest)\\n\\n                // Call signer with `isValidSignature` to validate signature.\\n                success := staticcall(\\n                    gas(),\\n                    signer,\\n                    selectorPtr,\\n                    add(\\n                        signatureLength,\\n                        EIP1271_isValidSignature_calldata_baseLength\\n                    ),\\n                    0,\\n                    OneWord\\n                )\\n\\n                // Determine if the signature is valid on successful calls.\\n                if success {\\n                    // If first word of scratch space does not contain EIP-1271\\n                    // signature selector, revert.\\n                    if iszero(eq(mload(0), EIP1271_isValidSignature_selector)) {\\n                        // Revert with bad 1271 signature if signer has code.\\n                        if extcodesize(signer) {\\n                            // Bad contract signature.\\n                            mstore(0, BadContractSignature_error_signature)\\n                            revert(0, BadContractSignature_error_length)\\n                        }\\n\\n                        // Check if signature length was invalid.\\n                        if gt(sub(ECDSA_MaxLength, signatureLength), 1) {\\n                            // Revert with generic invalid signature error.\\n                            mstore(0, InvalidSignature_error_signature)\\n                            revert(0, InvalidSignature_error_length)\\n                        }\\n\\n                        // Check if v was invalid.\\n                        if iszero(\\n                            byte(v, ECDSA_twentySeventhAndTwentyEighthBytesSet)\\n                        ) {\\n                            // Revert with invalid v value.\\n                            mstore(0, BadSignatureV_error_signature)\\n                            mstore(BadSignatureV_error_offset, v)\\n                            revert(0, BadSignatureV_error_length)\\n                        }\\n\\n                        // Revert with generic invalid signer error message.\\n                        mstore(0, InvalidSigner_error_signature)\\n                        revert(0, InvalidSigner_error_length)\\n                    }\\n                }\\n\\n                // Restore the cached values overwritten by selector, digest and\\n                // signature head.\\n                mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n                mstore(selectorPtr, cachedWordOverwrittenBySelector)\\n                mstore(digestPtr, cachedWordOverwrittenByDigest)\\n            }\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Revert and pass reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with error indicating bad contract signature.\\n            assembly {\\n                mstore(0, BadContractSignature_error_signature)\\n                revert(0, BadContractSignature_error_length)\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9af8a720f3f6aac730d7896484f407ecea62105c1c9dc45666273d51555a0f42\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport \\\"./TokenTransferrerConstants.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { ConduitBatch1155Transfer } from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title TokenTransferrer\\n * @author 0age\\n * @custom:coauthor d1ll0n\\n * @custom:coauthor transmissions11\\n * @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\\n *         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\\n *         by conduits deployed by the ConduitController. Use great caution when\\n *         considering these functions for use in other codebases, as there are\\n *         significant side effects and edge cases that need to be thoroughly\\n *         understood and carefully addressed.\\n */\\ncontract TokenTransferrer is TokenTransferrerErrors {\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set on the\\n     *      contract performing the transfer.\\n     *\\n     * @param token      The ERC20 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC20Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\\n            mstore(ERC20_transferFrom_from_ptr, from)\\n            mstore(ERC20_transferFrom_to_ptr, to)\\n            mstore(ERC20_transferFrom_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transferFrom_sig_ptr,\\n                ERC20_transferFrom_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                from\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            from\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    function _performSelfERC20Transfer(\\n        address token,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transfer_sig_ptr, ERC20_transfer_signature)\\n            mstore(ERC20_transfer_to_ptr, to)\\n            mstore(ERC20_transfer_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transfer_sig_ptr,\\n                ERC20_transfer_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                address()\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            address()\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer an ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer. Note that this function does\\n     *      not check whether the receiver can accept the ERC721 token (i.e. it\\n     *      does not use `safeTransferFrom`).\\n     *\\n     * @param token      The ERC721 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     */\\n    function _performERC721Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC721 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data to memory starting with function selector.\\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\\n            mstore(ERC721_transferFrom_from_ptr, from)\\n            mstore(ERC721_transferFrom_to_ptr, to)\\n            mstore(ERC721_transferFrom_id_ptr, identifier)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC721_transferFrom_sig_ptr,\\n                ERC721_transferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer.\\n     *\\n     * @param token      The ERC1155 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The id to transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC1155Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The following memory slots will be used when populating call data\\n            // for the transfer; read the values and restore them later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n            let slot0x80 := mload(Slot0x80)\\n            let slot0xA0 := mload(Slot0xA0)\\n            let slot0xC0 := mload(Slot0xC0)\\n\\n            // Write call data into memory, beginning with function selector.\\n            mstore(\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_signature\\n            )\\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\\n            mstore(\\n                ERC1155_safeTransferFrom_data_offset_ptr,\\n                ERC1155_safeTransferFrom_data_length_offset\\n            )\\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer. NOTE: this function is not\\n     *      memory-safe; it will overwrite existing memory, restore the free\\n     *      memory pointer to the default value, and overwrite the zero slot.\\n     *      This function should only be called once memory is no longer\\n     *      required and when uninitialized arrays are not utilized, and memory\\n     *      should be considered fully corrupted (aside from the existence of a\\n     *      default-value free memory pointer) after calling this function.\\n     *\\n     * @param batchTransfers The group of 1155 batch transfers to perform.\\n     */\\n    function _performERC1155BatchTransfers(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) internal {\\n        // Utilize assembly to perform optimized batch 1155 transfers.\\n        assembly {\\n            let len := batchTransfers.length\\n            // Pointer to first head in the array, which is offset to the struct\\n            // at each index. This gets incremented after each loop to avoid\\n            // multiplying by 32 to get the offset for each element.\\n            let nextElementHeadPtr := batchTransfers.offset\\n\\n            // Pointer to beginning of the head of the array. This is the\\n            // reference position each offset references. It's held static to\\n            // let each loop calculate the data position for an element.\\n            let arrayHeadPtr := nextElementHeadPtr\\n\\n            // Write the function selector, which will be reused for each call:\\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\n            mstore(\\n                ConduitBatch1155Transfer_from_offset,\\n                ERC1155_safeBatchTransferFrom_signature\\n            )\\n\\n            // Iterate over each batch transfer.\\n            for {\\n                let i := 0\\n            } lt(i, len) {\\n                i := add(i, 1)\\n            } {\\n                // Read the offset to the beginning of the element and add\\n                // it to pointer to the beginning of the array head to get\\n                // the absolute position of the element in calldata.\\n                let elementPtr := add(\\n                    arrayHeadPtr,\\n                    calldataload(nextElementHeadPtr)\\n                )\\n\\n                // Retrieve the token from calldata.\\n                let token := calldataload(elementPtr)\\n\\n                // If the token has no code, revert.\\n                if iszero(extcodesize(token)) {\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Get the total number of supplied ids.\\n                let idsLength := calldataload(\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\\n                )\\n\\n                // Determine the expected offset for the amounts array.\\n                let expectedAmountsOffset := add(\\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\\n                    mul(idsLength, OneWord)\\n                )\\n\\n                // Validate struct encoding.\\n                let invalidEncoding := iszero(\\n                    and(\\n                        // ids.length == amounts.length\\n                        eq(\\n                            idsLength,\\n                            calldataload(add(elementPtr, expectedAmountsOffset))\\n                        ),\\n                        and(\\n                            // ids_offset == 0xa0\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatch1155Transfer_ids_head_offset\\n                                    )\\n                                ),\\n                                ConduitBatch1155Transfer_ids_length_offset\\n                            ),\\n                            // amounts_offset == 0xc0 + ids.length*32\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatchTransfer_amounts_head_offset\\n                                    )\\n                                ),\\n                                expectedAmountsOffset\\n                            )\\n                        )\\n                    )\\n                )\\n\\n                // Revert with an error if the encoding is not valid.\\n                if invalidEncoding {\\n                    mstore(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_selector\\n                    )\\n                    revert(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_length\\n                    )\\n                }\\n\\n                // Update the offset position for the next loop\\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\\n\\n                // Copy the first section of calldata (before dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\\n                    ConduitBatch1155Transfer_usable_head_size\\n                )\\n\\n                // Determine size of calldata required for ids and amounts. Note\\n                // that the size includes both lengths as well as the data.\\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\\n\\n                // Update the offset for the data array in memory.\\n                mstore(\\n                    BatchTransfer1155Params_data_head_ptr,\\n                    add(\\n                        BatchTransfer1155Params_ids_length_offset,\\n                        idsAndAmountsSize\\n                    )\\n                )\\n\\n                // Set the length of the data array in memory to zero.\\n                mstore(\\n                    add(\\n                        BatchTransfer1155Params_data_length_basePtr,\\n                        idsAndAmountsSize\\n                    ),\\n                    0\\n                )\\n\\n                // Determine the total calldata size for the call to transfer.\\n                let transferDataSize := add(\\n                    BatchTransfer1155Params_calldata_baseSize,\\n                    idsAndAmountsSize\\n                )\\n\\n                // Copy second section of calldata (including dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ids_length_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\\n                    idsAndAmountsSize\\n                )\\n\\n                // Perform the call to transfer 1155 tokens.\\n                let success := call(\\n                    gas(),\\n                    token,\\n                    0,\\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\\n                    transferDataSize, // Location of the length of callData.\\n                    0,\\n                    0\\n                )\\n\\n                // If the transfer reverted:\\n                if iszero(success) {\\n                    // If it returned a message, bubble it up as long as\\n                    // sufficient gas remains to do so:\\n                    if returndatasize() {\\n                        // Ensure that sufficient gas is available to copy\\n                        // returndata while expanding memory where necessary.\\n                        // Start by computing word size of returndata and\\n                        // allocated memory. Round up to the nearest full word.\\n                        let returnDataWords := div(\\n                            add(returndatasize(), AlmostOneWord),\\n                            OneWord\\n                        )\\n\\n                        // Note: use transferDataSize in place of msize() to\\n                        // work around a Yul warning that prevents accessing\\n                        // msize directly when the IR pipeline is activated.\\n                        // The free memory pointer is not used here because\\n                        // this function does almost all memory management\\n                        // manually and does not update it, and transferDataSize\\n                        // should be the largest memory value used (unless a\\n                        // previous batch was larger).\\n                        let msizeWords := div(transferDataSize, OneWord)\\n\\n                        // Next, compute the cost of the returndatacopy.\\n                        let cost := mul(CostPerWord, returnDataWords)\\n\\n                        // Then, compute cost of new memory allocation.\\n                        if gt(returnDataWords, msizeWords) {\\n                            cost := add(\\n                                cost,\\n                                add(\\n                                    mul(\\n                                        sub(returnDataWords, msizeWords),\\n                                        CostPerWord\\n                                    ),\\n                                    div(\\n                                        sub(\\n                                            mul(\\n                                                returnDataWords,\\n                                                returnDataWords\\n                                            ),\\n                                            mul(msizeWords, msizeWords)\\n                                        ),\\n                                        MemoryExpansionCoefficient\\n                                    )\\n                                )\\n                            )\\n                        }\\n\\n                        // Finally, add a small constant and compare to gas\\n                        // remaining; bubble up the revert data if enough gas is\\n                        // still available.\\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\\n                            // Copy returndata to memory; overwrite existing.\\n                            returndatacopy(0, 0, returndatasize())\\n\\n                            // Revert with memory region containing returndata.\\n                            revert(0, returndatasize())\\n                        }\\n                    }\\n\\n                    // Set the error signature.\\n                    mstore(\\n                        0,\\n                        ERC1155BatchTransferGenericFailure_error_signature\\n                    )\\n\\n                    // Write the token.\\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\\n\\n                    // Increase the offset to ids by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_ids_head_ptr,\\n                        ERC1155BatchTransferGenericFailure_ids_offset\\n                    )\\n\\n                    // Increase the offset to amounts by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_amounts_head_ptr,\\n                        add(\\n                            OneWord,\\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\\n                        )\\n                    )\\n\\n                    // Return modified region. The total size stays the same as\\n                    // `token` uses the same number of bytes as `data.length`.\\n                    revert(0, transferDataSize)\\n                }\\n            }\\n\\n            // Reset the free memory pointer to the default value; memory must\\n            // be assumed to be dirtied and not reused from this point forward.\\n            // Also note that the zero slot is not reset to zero, meaning empty\\n            // arrays cannot be safely created or utilized until it is restored.\\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9be626e5928b95748e08259c63a6168d3e0b3e490f2f340491b8afd546cbbcd1\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrerConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\nuint256 constant Slot0xC0 = 0xc0;\\n\\n// abi.encodeWithSignature(\\\"transferFrom(address,address,uint256)\\\")\\nuint256 constant ERC20_transferFrom_signature = (\\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"transfer(address,uint256)\\\")\\nuint256 constant ERC20_transfer_signature = (\\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transfer_sig_ptr = 0x0;\\nuint256 constant ERC20_transfer_to_ptr = 0x04;\\nuint256 constant ERC20_transfer_amount_ptr = 0x24;\\nuint256 constant ERC20_transfer_length = 0x44; // 4 + 32 * 2 == 68\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeTransferFrom(address,address,uint256,uint256,bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeTransferFrom_signature = (\\n    0xf242432a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\\n);\\n\\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\\n);\\n\\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\n// abi.encodeWithSignature(\\n//     \\\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\\\"\\n// )\\nuint256 constant TokenTransferGenericFailure_error_signature = (\\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\\n\\n// 4 + 32 * 5 == 164\\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\\n\\n// abi.encodeWithSignature(\\n//     \\\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\\\"\\n// )\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\\n    0x9889192300000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\\n\\n// 4 + 32 * 4 == 132\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200;\\n\\n// Values are offset by 32 bytes in order to write the token to the beginning\\n// in the event of a revert\\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x64;\\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0xc4;\\nuint256 constant BatchTransfer1155Params_calldata_baseSize = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\\n\\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\\n\\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\\n\\n// Note: abbreviated version of above constant to adhere to line length limit.\\nuint256 constant ConduitBatchTransfer_amounts_head_offset = 0x80;\\n\\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\\n    0xafc445e200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\\nuint256 constant ERC1155BatchTransferGenericFailure_ids_offset = 0xc0;\\n\",\"keccak256\":\"0x002bea8dcc1d37a0cdd6d1c25f536a1a13e01e1fb32b7bbb2a3016425e40b672\",\"license\":\"MIT\"},\"contracts/lib/Verifiers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderStatus } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { Assertions } from \\\"./Assertions.sol\\\";\\n\\nimport { SignatureVerification } from \\\"./SignatureVerification.sol\\\";\\n\\n/**\\n * @title Verifiers\\n * @author 0age\\n * @notice Verifiers contains functions for performing verifications.\\n */\\ncontract Verifiers is Assertions, SignatureVerification {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Assertions(conduitController) {}\\n\\n    /**\\n     * @dev Internal view function to ensure that the current time falls within\\n     *      an order's valid timespan.\\n     *\\n     * @param startTime       The time at which the order becomes active.\\n     * @param endTime         The time at which the order becomes inactive.\\n     * @param revertOnInvalid A boolean indicating whether to revert if the\\n     *                        order is not active.\\n     *\\n     * @return valid A boolean indicating whether the order is active.\\n     */\\n    function _verifyTime(\\n        uint256 startTime,\\n        uint256 endTime,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        // Revert if order's timespan hasn't started yet or has already ended.\\n        if (startTime > block.timestamp || endTime <= block.timestamp) {\\n            // Only revert if revertOnInvalid has been supplied as true.\\n            if (revertOnInvalid) {\\n                revert InvalidTime();\\n            }\\n\\n            // Return false as the order is invalid.\\n            return false;\\n        }\\n\\n        // Return true as the order time is valid.\\n        valid = true;\\n    }\\n\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied offerer. Note that in cases where a 64 or 65 byte signature\\n     *      is supplied, only standard ECDSA signatures that recover to a\\n     *      non-zero address are supported.\\n     *\\n     * @param offerer   The offerer for the order.\\n     * @param orderHash The order hash.\\n     * @param signature A signature from the offerer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _verifySignature(\\n        address offerer,\\n        bytes32 orderHash,\\n        bytes memory signature\\n    ) internal view {\\n        // Skip signature verification if the offerer is the caller.\\n        if (offerer == msg.sender) {\\n            return;\\n        }\\n\\n        // Derive EIP-712 digest using the domain separator and the order hash.\\n        bytes32 digest = _deriveEIP712Digest(_domainSeparator(), orderHash);\\n\\n        // Ensure that the signature for the digest is valid for the offerer.\\n        _assertValidSignature(offerer, digest, signature);\\n    }\\n\\n    function _verifyOrderStatus(\\n        bytes32 orderHash,\\n        OrderStatus storage orderStatus,\\n        bool firstPay,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        if (orderStatus.isCancelled) {\\n            if (revertOnInvalid) {\\n                revert OrderIsCancelled(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (orderStatus.isFinalized) {\\n            if (revertOnInvalid) {\\n                revert OrderAlreadyFinalized(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (firstPay) {\\n            if (orderStatus.paidTimes > 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        } else {\\n            if (orderStatus.paidTimes == 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderNotStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        }\\n\\n        valid = true;\\n    }\\n}\\n\",\"keccak256\":\"0x4166159d504ffb5810fbad9c64445fd23659f5b19e84a61dde67f8760bcd1255\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7723,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":5403,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":6907,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"_orderStatus","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OrderStatus)","numberOfBytes":"32","value":"t_struct(OrderStatus)5389_storage"},"t_struct(OrderStatus)5389_storage":{"encoding":"inplace","label":"struct OrderStatus","members":[{"astId":5374,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"isValidated","offset":0,"slot":"0","type":"t_bool"},{"astId":5376,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"isCancelled","offset":1,"slot":"0","type":"t_bool"},{"astId":5378,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"isFinalized","offset":2,"slot":"0","type":"t_bool"},{"astId":5380,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"isBroken","offset":3,"slot":"0","type":"t_bool"},{"astId":5382,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"fulfiller","offset":4,"slot":"0","type":"t_address"},{"astId":5384,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"startedAt","offset":0,"slot":"1","type":"t_uint256"},{"astId":5386,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"shadowId","offset":0,"slot":"2","type":"t_uint256"},{"astId":5388,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"paidTimes","offset":0,"slot":"3","type":"t_uint256"}],"numberOfBytes":"128"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/OrderValidator.sol":{"OrderValidator":{"abi":[{"inputs":[{"internalType":"address","name":"conduitController","type":"address"},{"internalType":"address","name":"shadowToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadContractSignature","type":"error"},{"inputs":[],"name":"BadFraction","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"}],"name":"BadSignatureV","type":"error"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"},{"internalType":"uint256","name":"considerationIndex","type":"uint256"},{"internalType":"uint256","name":"shortfallAmount","type":"uint256"}],"name":"ConsiderationNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherTransferGenericFailure","type":"error"},{"inputs":[],"name":"InsufficientEtherSupplied","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidBasicOrderParameterEncoding","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidCallToConduit","type":"error"},{"inputs":[],"name":"InvalidCanceller","type":"error"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidConduit","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidMsgValue","type":"error"},{"inputs":[],"name":"InvalidNativeOfferItem","type":"error"},{"inputs":[],"name":"InvalidOrderParameters","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidTime","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[],"name":"MissingOriginalConsiderationItems","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[],"name":"NoReentrantCalls","type":"error"},{"inputs":[],"name":"NoSpecifiedOrdersAvailable","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFilled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFinalized","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderInvalidRepayParameters","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderIsCancelled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotValidated","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderPartiallyFilled","type":"error"},{"inputs":[],"name":"PartialFillsNotEnabledForOrder","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCounter","type":"uint256"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"CounterIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderBroken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"},{"indexed":false,"internalType":"uint256","name":"shadowId","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payTimes","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finalized","type":"bool"}],"name":"OrderRepaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderValidated","type":"event"},{"inputs":[],"name":"shadowToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"BadContractSignature()":[{"details":"Revert with an error when an EIP-1271 call to an account fails."}],"BadFraction()":[{"details":"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator."}],"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"BadSignatureV(uint8)":[{"details":"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.","params":{"v":"The invalid v value."}}],"ConsiderationNotMet(uint256,uint256,uint256)":[{"details":"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.","params":{"considerationIndex":"The index of the consideration item on the                           order.","orderIndex":"The index of the order with the consideration                           item with a shortfall.","shortfallAmount":"The unfulfilled consideration amount."}}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"EtherTransferGenericFailure(address,uint256)":[{"details":"Revert with an error when an ether transfer reverts."}],"InsufficientEtherSupplied()":[{"details":"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders."}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidBasicOrderParameterEncoding()":[{"details":"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding."}],"InvalidCallToConduit(address)":[{"details":"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return."}],"InvalidCanceller()":[{"details":"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone."}],"InvalidConduit(bytes32,address)":[{"details":"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed)."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"InvalidMsgValue(uint256)":[{"details":"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route."}],"InvalidNativeOfferItem()":[{"details":"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders."}],"InvalidSignature()":[{"details":"Revert with an error when a signer cannot be recovered from the      supplied signature."}],"InvalidSigner()":[{"details":"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract."}],"InvalidTime()":[{"details":"Revert with an error when attempting to fill an order outside the      specified start time and end time."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"MissingOriginalConsiderationItems()":[{"details":"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}],"NoSpecifiedOrdersAvailable()":[{"details":"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable."}],"OrderAlreadyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has      already been fully filled.","params":{"orderHash":"The order hash on which a fill was attempted."}}],"OrderIsCancelled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has been      cancelled.","params":{"orderHash":"The hash of the cancelled order."}}],"OrderPartiallyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill a basic order that has      been partially filled.","params":{"orderHash":"The hash of the partially used order."}}],"PartialFillsNotEnabledForOrder()":[{"details":"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type."}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4348":{"entryPoint":null,"id":4348,"parameterSlots":1,"returnSlots":0},"@_4654":{"entryPoint":null,"id":4654,"parameterSlots":1,"returnSlots":0},"@_5470":{"entryPoint":null,"id":5470,"parameterSlots":1,"returnSlots":0},"@_5935":{"entryPoint":null,"id":5935,"parameterSlots":1,"returnSlots":0},"@_6921":{"entryPoint":null,"id":6921,"parameterSlots":2,"returnSlots":0},"@_7732":{"entryPoint":null,"id":7732,"parameterSlots":0,"returnSlots":0},"@_7800":{"entryPoint":null,"id":7800,"parameterSlots":1,"returnSlots":0},"@_8290":{"entryPoint":null,"id":8290,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_4760":{"entryPoint":292,"id":4760,"parameterSlots":0,"returnSlots":4},"@_nameString_4683":{"entryPoint":null,"id":4683,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":1144,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":1172,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32_fromMemory":{"entryPoint":1223,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_stringliteral_0c2a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e4b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_41ba":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_59d7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5c66":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7afc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89a9":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9c70":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b48f":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bab2":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_cfcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6640:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:54","statements":[{"nodeType":"YulAssignment","src":"84:22:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:54"},"nodeType":"YulFunctionCall","src":"93:13:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:54"}]},{"body":{"nodeType":"YulBlock","src":"169:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:54"},"nodeType":"YulFunctionCall","src":"171:12:54"},"nodeType":"YulExpressionStatement","src":"171:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:54"},"nodeType":"YulFunctionCall","src":"150:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:54"},"nodeType":"YulFunctionCall","src":"146:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:54"},"nodeType":"YulFunctionCall","src":"135:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:54"},"nodeType":"YulFunctionCall","src":"125:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:54"},"nodeType":"YulFunctionCall","src":"118:50:54"},"nodeType":"YulIf","src":"115:70:54"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:54","type":""}],"src":"14:177:54"},{"body":{"nodeType":"YulBlock","src":"294:195:54","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:54"},"nodeType":"YulFunctionCall","src":"342:12:54"},"nodeType":"YulExpressionStatement","src":"342:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:54"},"nodeType":"YulFunctionCall","src":"311:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:54"},"nodeType":"YulFunctionCall","src":"307:32:54"},"nodeType":"YulIf","src":"304:52:54"},{"nodeType":"YulAssignment","src":"365:50:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:54"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:54"},"nodeType":"YulFunctionCall","src":"375:40:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:54"}]},{"nodeType":"YulAssignment","src":"424:59:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:54"},"nodeType":"YulFunctionCall","src":"464:18:54"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:54"},"nodeType":"YulFunctionCall","src":"434:49:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:54","type":""}],"src":"196:293:54"},{"body":{"nodeType":"YulBlock","src":"592:147:54","statements":[{"body":{"nodeType":"YulBlock","src":"638:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"647:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"650:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"640:6:54"},"nodeType":"YulFunctionCall","src":"640:12:54"},"nodeType":"YulExpressionStatement","src":"640:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"613:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"609:3:54"},"nodeType":"YulFunctionCall","src":"609:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"634:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"605:3:54"},"nodeType":"YulFunctionCall","src":"605:32:54"},"nodeType":"YulIf","src":"602:52:54"},{"nodeType":"YulAssignment","src":"663:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"679:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"673:5:54"},"nodeType":"YulFunctionCall","src":"673:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"663:6:54"}]},{"nodeType":"YulAssignment","src":"698:35:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"718:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"729:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"714:3:54"},"nodeType":"YulFunctionCall","src":"714:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"708:5:54"},"nodeType":"YulFunctionCall","src":"708:25:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"698:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"550:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"561:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"573:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"581:6:54","type":""}],"src":"494:245:54"},{"body":{"nodeType":"YulBlock","src":"799:76:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"816:3:54"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"821:19:54","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:54"},"nodeType":"YulFunctionCall","src":"809:32:54"},"nodeType":"YulExpressionStatement","src":"809:32:54"},{"nodeType":"YulAssignment","src":"850:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"861:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"866:2:54","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"857:3:54"},"nodeType":"YulFunctionCall","src":"857:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"850:3:54"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"783:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"791:3:54","type":""}],"src":"744:131:54"},{"body":{"nodeType":"YulBlock","src":"935:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"952:3:54"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"957:18:54","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"945:6:54"},"nodeType":"YulFunctionCall","src":"945:31:54"},"nodeType":"YulExpressionStatement","src":"945:31:54"},{"nodeType":"YulAssignment","src":"985:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"996:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1001:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"992:3:54"},"nodeType":"YulFunctionCall","src":"992:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"985:3:54"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"919:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"927:3:54","type":""}],"src":"880:130:54"},{"body":{"nodeType":"YulBlock","src":"1070:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1087:3:54"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"1092:17:54","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1080:6:54"},"nodeType":"YulFunctionCall","src":"1080:30:54"},"nodeType":"YulExpressionStatement","src":"1080:30:54"},{"nodeType":"YulAssignment","src":"1119:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1130:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1135:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:54"},"nodeType":"YulFunctionCall","src":"1126:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1119:3:54"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1054:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1062:3:54","type":""}],"src":"1015:129:54"},{"body":{"nodeType":"YulBlock","src":"1204:73:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1221:3:54"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1226:16:54","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1214:6:54"},"nodeType":"YulFunctionCall","src":"1214:29:54"},"nodeType":"YulExpressionStatement","src":"1214:29:54"},{"nodeType":"YulAssignment","src":"1252:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1268:2:54","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:54"},"nodeType":"YulFunctionCall","src":"1259:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1252:3:54"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1188:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1196:3:54","type":""}],"src":"1149:128:54"},{"body":{"nodeType":"YulBlock","src":"1337:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1354:3:54"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1359:18:54","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1347:6:54"},"nodeType":"YulFunctionCall","src":"1347:31:54"},"nodeType":"YulExpressionStatement","src":"1347:31:54"},{"nodeType":"YulAssignment","src":"1387:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1398:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1394:3:54"},"nodeType":"YulFunctionCall","src":"1394:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1387:3:54"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1321:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1329:3:54","type":""}],"src":"1282:130:54"},{"body":{"nodeType":"YulBlock","src":"1472:71:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1489:3:54"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1494:14:54","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1482:6:54"},"nodeType":"YulFunctionCall","src":"1482:27:54"},"nodeType":"YulExpressionStatement","src":"1482:27:54"},{"nodeType":"YulAssignment","src":"1518:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1529:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1534:2:54","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1525:3:54"},"nodeType":"YulFunctionCall","src":"1525:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1518:3:54"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1456:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1464:3:54","type":""}],"src":"1417:126:54"},{"body":{"nodeType":"YulBlock","src":"1603:79:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1620:3:54"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1625:22:54","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1613:6:54"},"nodeType":"YulFunctionCall","src":"1613:35:54"},"nodeType":"YulExpressionStatement","src":"1613:35:54"},{"nodeType":"YulAssignment","src":"1657:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1668:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1673:2:54","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1664:3:54"},"nodeType":"YulFunctionCall","src":"1664:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1657:3:54"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1587:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1595:3:54","type":""}],"src":"1548:134:54"},{"body":{"nodeType":"YulBlock","src":"1742:72:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:54"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1764:15:54","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:54"},"nodeType":"YulFunctionCall","src":"1752:28:54"},"nodeType":"YulExpressionStatement","src":"1752:28:54"},{"nodeType":"YulAssignment","src":"1789:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1800:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1796:3:54"},"nodeType":"YulFunctionCall","src":"1796:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1789:3:54"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1726:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1734:3:54","type":""}],"src":"1687:127:54"},{"body":{"nodeType":"YulBlock","src":"1874:78:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1891:3:54"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1896:21:54","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1884:6:54"},"nodeType":"YulFunctionCall","src":"1884:34:54"},"nodeType":"YulExpressionStatement","src":"1884:34:54"},{"nodeType":"YulAssignment","src":"1927:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1938:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:54","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1934:3:54"},"nodeType":"YulFunctionCall","src":"1934:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1927:3:54"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1858:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1866:3:54","type":""}],"src":"1819:133:54"},{"body":{"nodeType":"YulBlock","src":"2012:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2029:3:54"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"2034:17:54","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2022:6:54"},"nodeType":"YulFunctionCall","src":"2022:30:54"},"nodeType":"YulExpressionStatement","src":"2022:30:54"},{"nodeType":"YulAssignment","src":"2061:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2072:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2077:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2068:3:54"},"nodeType":"YulFunctionCall","src":"2068:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2061:3:54"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2004:3:54","type":""}],"src":"1957:129:54"},{"body":{"nodeType":"YulBlock","src":"2146:59:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2163:3:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"2168:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2156:6:54"},"nodeType":"YulFunctionCall","src":"2156:16:54"},"nodeType":"YulExpressionStatement","src":"2156:16:54"},{"nodeType":"YulAssignment","src":"2181:18:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2192:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2197:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:54"},"nodeType":"YulFunctionCall","src":"2188:11:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2181:3:54"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2130:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2138:3:54","type":""}],"src":"2091:114:54"},{"body":{"nodeType":"YulBlock","src":"4321:815:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4338:3:54"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4343:18:54","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:54"},"nodeType":"YulFunctionCall","src":"4331:31:54"},"nodeType":"YulExpressionStatement","src":"4331:31:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4382:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4387:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4378:3:54"},"nodeType":"YulFunctionCall","src":"4378:12:54"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4392:18:54","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4371:6:54"},"nodeType":"YulFunctionCall","src":"4371:40:54"},"nodeType":"YulExpressionStatement","src":"4371:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4431:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4436:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4427:3:54"},"nodeType":"YulFunctionCall","src":"4427:12:54"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4441:16:54","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4420:6:54"},"nodeType":"YulFunctionCall","src":"4420:38:54"},"nodeType":"YulExpressionStatement","src":"4420:38:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4478:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4483:2:54","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4474:3:54"},"nodeType":"YulFunctionCall","src":"4474:12:54"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4488:21:54","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4467:6:54"},"nodeType":"YulFunctionCall","src":"4467:43:54"},"nodeType":"YulExpressionStatement","src":"4467:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4530:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4535:2:54","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4526:3:54"},"nodeType":"YulFunctionCall","src":"4526:12:54"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4540:19:54","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4519:6:54"},"nodeType":"YulFunctionCall","src":"4519:41:54"},"nodeType":"YulExpressionStatement","src":"4519:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4580:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4585:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4576:3:54"},"nodeType":"YulFunctionCall","src":"4576:12:54"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4590:17:54","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:54"},"nodeType":"YulFunctionCall","src":"4569:39:54"},"nodeType":"YulExpressionStatement","src":"4569:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4628:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4633:2:54","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4624:3:54"},"nodeType":"YulFunctionCall","src":"4624:12:54"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4638:19:54","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4617:6:54"},"nodeType":"YulFunctionCall","src":"4617:41:54"},"nodeType":"YulExpressionStatement","src":"4617:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4678:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4683:3:54","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:54"},"nodeType":"YulFunctionCall","src":"4674:13:54"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4689:20:54","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:54"},"nodeType":"YulFunctionCall","src":"4667:43:54"},"nodeType":"YulExpressionStatement","src":"4667:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4730:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4735:3:54","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:54"},"nodeType":"YulFunctionCall","src":"4726:13:54"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4741:18:54","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4719:6:54"},"nodeType":"YulFunctionCall","src":"4719:41:54"},"nodeType":"YulExpressionStatement","src":"4719:41:54"},{"nodeType":"YulAssignment","src":"4769:361:54","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5110:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5115:3:54","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:54"},"nodeType":"YulFunctionCall","src":"5106:13:54"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"5076:29:54"},"nodeType":"YulFunctionCall","src":"5076:44:54"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"5046:29:54"},"nodeType":"YulFunctionCall","src":"5046:75:54"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"5016:29:54"},"nodeType":"YulFunctionCall","src":"5016:106:54"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4986:29:54"},"nodeType":"YulFunctionCall","src":"4986:137:54"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4956:29:54"},"nodeType":"YulFunctionCall","src":"4956:168:54"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4926:29:54"},"nodeType":"YulFunctionCall","src":"4926:199:54"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4896:29:54"},"nodeType":"YulFunctionCall","src":"4896:230:54"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4866:29:54"},"nodeType":"YulFunctionCall","src":"4866:261:54"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4836:29:54"},"nodeType":"YulFunctionCall","src":"4836:292:54"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4806:29:54"},"nodeType":"YulFunctionCall","src":"4806:323:54"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4776:29:54"},"nodeType":"YulFunctionCall","src":"4776:354:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4769:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4305:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4313:3:54","type":""}],"src":"2210:2926:54"},{"body":{"nodeType":"YulBlock","src":"5838:306:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5855:3:54"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5860:15:54","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5848:6:54"},"nodeType":"YulFunctionCall","src":"5848:28:54"},"nodeType":"YulExpressionStatement","src":"5848:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5896:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5901:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:54"},"nodeType":"YulFunctionCall","src":"5892:12:54"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5906:14:54","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:54"},"nodeType":"YulFunctionCall","src":"5885:36:54"},"nodeType":"YulExpressionStatement","src":"5885:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5941:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5946:2:54","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5937:3:54"},"nodeType":"YulFunctionCall","src":"5937:12:54"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5951:17:54","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5930:6:54"},"nodeType":"YulFunctionCall","src":"5930:39:54"},"nodeType":"YulExpressionStatement","src":"5930:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5989:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5994:2:54","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5985:3:54"},"nodeType":"YulFunctionCall","src":"5985:12:54"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5999:18:54","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5978:6:54"},"nodeType":"YulFunctionCall","src":"5978:40:54"},"nodeType":"YulExpressionStatement","src":"5978:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6038:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6043:2:54","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6034:3:54"},"nodeType":"YulFunctionCall","src":"6034:12:54"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6048:27:54","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6027:6:54"},"nodeType":"YulFunctionCall","src":"6027:49:54"},"nodeType":"YulExpressionStatement","src":"6027:49:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6096:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6101:2:54","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6092:3:54"},"nodeType":"YulFunctionCall","src":"6092:12:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"6106:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6085:6:54"},"nodeType":"YulFunctionCall","src":"6085:25:54"},"nodeType":"YulExpressionStatement","src":"6085:25:54"},{"nodeType":"YulAssignment","src":"6119:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6130:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"6135:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:54"},"nodeType":"YulFunctionCall","src":"6126:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6119:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5822:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5830:3:54","type":""}],"src":"5141:1003:54"},{"body":{"nodeType":"YulBlock","src":"6362:276:54","statements":[{"nodeType":"YulAssignment","src":"6372:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6384:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6395:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:54"},"nodeType":"YulFunctionCall","src":"6380:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6372:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6415:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"6426:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:54"},"nodeType":"YulFunctionCall","src":"6408:25:54"},"nodeType":"YulExpressionStatement","src":"6408:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6453:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6464:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6449:3:54"},"nodeType":"YulFunctionCall","src":"6449:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"6469:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6442:6:54"},"nodeType":"YulFunctionCall","src":"6442:34:54"},"nodeType":"YulExpressionStatement","src":"6442:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6496:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6507:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:54"},"nodeType":"YulFunctionCall","src":"6492:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6512:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6485:6:54"},"nodeType":"YulFunctionCall","src":"6485:34:54"},"nodeType":"YulExpressionStatement","src":"6485:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6539:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6550:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6535:3:54"},"nodeType":"YulFunctionCall","src":"6535:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"6555:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6528:6:54"},"nodeType":"YulFunctionCall","src":"6528:34:54"},"nodeType":"YulExpressionStatement","src":"6528:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6593:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6578:3:54"},"nodeType":"YulFunctionCall","src":"6578:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6603:6:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6624:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6615:3:54"},"nodeType":"YulFunctionCall","src":"6615:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6628:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:54"},"nodeType":"YulFunctionCall","src":"6611:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6599:3:54"},"nodeType":"YulFunctionCall","src":"6599:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6571:6:54"},"nodeType":"YulFunctionCall","src":"6571:61:54"},"nodeType":"YulExpressionStatement","src":"6571:61:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6299:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6310:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6318:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6326:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6334:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6342:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6353:4:54","type":""}],"src":"6149:489:54"}]},"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 abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_9c70(pos) -> end\n    {\n        mstore(pos, \"uint256 duration,\")\n        end := add(pos, 17)\n    }\n    function abi_encode_stringliteral_bab2(pos) -> end\n    {\n        mstore(pos, \"uint256 periods,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_1e4b(pos) -> end\n    {\n        mstore(pos, \"uint256 amount,\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_89a9(pos) -> end\n    {\n        mstore(pos, \"uint256 ratio,\")\n        end := add(pos, 14)\n    }\n    function abi_encode_stringliteral_5c66(pos) -> end\n    {\n        mstore(pos, \"uint256 royalty,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_b48f(pos) -> end\n    {\n        mstore(pos, \"uint256 fee,\")\n        end := add(pos, 12)\n    }\n    function abi_encode_stringliteral_0c2a(pos) -> end\n    {\n        mstore(pos, \"uint256 withdrawFee,\")\n        end := add(pos, 20)\n    }\n    function abi_encode_stringliteral_7afc(pos) -> end\n    {\n        mstore(pos, \"uint256 salt,\")\n        end := add(pos, 13)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral_41ba(pos) -> end\n    {\n        mstore(pos, \"uint256 counter\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address token,\")\n        mstore(add(pos, 46), \"uint256 identifier,\")\n        mstore(add(pos, 65), \"address currency,\")\n        mstore(add(pos, 82), \"address artist,\")\n        mstore(add(pos, 97), \"address platform,\")\n        mstore(add(pos, 114), \"uint256 startTime,\")\n        mstore(add(pos, 132), \"uint256 endTime,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral_41ba(abi_encode_stringliteral_cfcd(abi_encode_stringliteral_7afc(abi_encode_stringliteral_0c2a(abi_encode_stringliteral_b48f(abi_encode_stringliteral_5c66(abi_encode_stringliteral_89a9(abi_encode_stringliteral_1e4b(abi_encode_stringliteral_bab2(abi_encode_stringliteral_9c70(add(pos, 148))))))))))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6101a060405234801561001157600080fd5b506040516105f23803806105f283398101604081905261003091610494565b80828080808061003e610124565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010091906104c7565b5061016052505060016000555050506001600160a01b031661018052506104eb9050565b600080808061015360408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b394506000916103ad91016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b80516001600160a01b038116811461048f57600080fd5b919050565b600080604083850312156104a757600080fd5b6104b083610478565b91506104be60208401610478565b90509250929050565b600080604083850312156104da57600080fd5b505080516020909101519092909150565b60805160a05160c05160e051610100516101205161014051610160516101805160b2610540600039600060310152600050506000505060005050600050506000505060005050600050506000505060b26000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea2646970667358221220fc05c46bb13a6d5d9462a24509e2d892de4add00a5a5fa8a659b1d99f32b92cb64736f6c634300080e0033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x5F2 CODESIZE SUB DUP1 PUSH2 0x5F2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x494 JUMP JUMPDEST DUP1 DUP3 DUP1 DUP1 DUP1 DUP1 PUSH2 0x3E PUSH2 0x124 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDC 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 0x100 SWAP2 SWAP1 PUSH2 0x4C7 JUMP JUMPDEST POP PUSH2 0x160 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x180 MSTORE POP PUSH2 0x4EB SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x153 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x312E3 PUSH1 0xEC SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP6 POP PUSH32 0xE6BBD6277E1BF288EED5E8D1780F9A50B239E86B153736BCEEBCCF4EA79D90B3 SWAP5 POP PUSH1 0x0 SWAP2 PUSH2 0x3AD SWAP2 ADD PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL DUP2 MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0x10 DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965722C00000000000000000000000000 PUSH1 0x2E DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC818DD5C9C995B98DE4B PUSH1 0x7A SHL PUSH1 0x41 DUP3 ADD MSTORE PUSH15 0x1859191C995CDCC8185C9D1A5CDD0B PUSH1 0x8A SHL PUSH1 0x52 DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC81C1B185D199BDC9B4B PUSH1 0x7A SHL PUSH1 0x61 DUP3 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH1 0x72 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88191D5C985D1A5BDB8B PUSH1 0x7A SHL PUSH1 0x94 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C195C9A5BD91CCB PUSH1 0x82 SHL PUSH1 0xA5 DUP3 ADD MSTORE PUSH15 0x1D5A5B9D0C8D4D88185B5BDD5B9D0B PUSH1 0x8A SHL PUSH1 0xB5 DUP3 ADD MSTORE PUSH14 0x1D5A5B9D0C8D4D881C985D1A5BCB PUSH1 0x92 SHL PUSH1 0xC4 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C9BDE585B1D1E4B PUSH1 0x82 SHL PUSH1 0xD2 DUP3 ADD MSTORE PUSH12 0x1D5A5B9D0C8D4D881999594B PUSH1 0xA2 SHL PUSH1 0xE2 DUP3 ADD MSTORE PUSH32 0x75696E743235362077697468647261774665652C000000000000000000000000 PUSH1 0xEE DUP3 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x102 DUP3 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x10F DUP3 ADD MSTORE PUSH15 0x3AB4B73A191A9B1031B7BAB73A32B9 PUSH1 0x89 SHL PUSH2 0x122 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH2 0x131 DUP3 ADD MSTORE PUSH2 0x132 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B0 DUP4 PUSH2 0x478 JUMP JUMPDEST SWAP2 POP PUSH2 0x4BE PUSH1 0x20 DUP5 ADD PUSH2 0x478 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH1 0xB2 PUSH2 0x540 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0x31 ADD MSTORE PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0xB2 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFFC5D97A EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x53 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC SDIV 0xC4 PUSH12 0xB13A6D5D9462A24509E2D892 0xDE 0x4A 0xDD STOP 0xA5 0xA5 STATICCALL DUP11 PUSH6 0x9B1D99F32B92 0xCB PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"297:12178:41:-:0;;;407:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;502:11;476:17;;;;;786:19:32;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:32;;-1:-1:-1;1203:187:32;;;6408:25:54;;;;6449:18;;;6442:34;;;;-1:-1:-1;6492:18:54;;6485:34;;;;6535:18;;;6528:34;1371:4:32;6578:19:54;;;6571:61;1203:187:32;;;;;;;;;;6380:19:54;;1203:187:32;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:32;;;;;;1032:42;;;-1:-1:-1;;;1032:42:32;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:32;;-1:-1:-1;;2345:1:33;658:16:42;:31;-1:-1:-1;;;;;;;;417:20:43;;;-1:-1:-1;297:12178:41;;-1:-1:-1;297:12178:41;1527:1491:32;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:32;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:32;;;;1909:724;1778:31;;-1:-1:-1;1834:23:32;;-1:-1:-1;;;1909:724:32;;;-1:-1:-1;;;4331:31:54;;-1:-1:-1;;;4387:2:54;4378:12;;4371:40;-1:-1:-1;;;4436:2:54;4427:12;;4420:38;4488:21;4483:2;4474:12;;4467:43;-1:-1:-1;;;4535:2:54;4526:12;;4519:41;-1:-1:-1;;;4585:2:54;4576:12;;4569:39;-1:-1:-1;;;4633:2:54;4624:12;;4617:41;-1:-1:-1;;;4683:3:54;4674:13;;4667:43;-1:-1:-1;;;4735:3:54;4726:13;;4719:41;-1:-1:-1;;;5115:3:54;5106:13;;809:32;-1:-1:-1;;;857:12:54;;;945:31;-1:-1:-1;;;992:12:54;;;1080:30;-1:-1:-1;;;1126:12:54;;;1214:29;-1:-1:-1;;;1259:12:54;;;1347:31;-1:-1:-1;;;1394:12:54;;;1482:27;1625:22;1525:12;;;1613:35;-1:-1:-1;;;1664:12:54;;;1752:28;1896:21;1796:12;;;1884:34;-1:-1:-1;;;1934:12:54;;;2022:30;-1:-1:-1;;;2068:12:54;;;2156:16;2188:11;;;2210:2926;1909:724:32;;;;-1:-1:-1;;1909:724:32;;;;;;;;;;-1:-1:-1;;;1909:724:32;2690:248;;5848:28:54;-1:-1:-1;;;5892:12:54;;;5885:36;-1:-1:-1;;;5937:12:54;;;5930:39;-1:-1:-1;;;5985:12:54;;;5978:40;6048:27;6034:12;;;6027:49;-1:-1:-1;;;6092:12:54;;;6085:25;1909:724:32;-1:-1:-1;6126:12:54;;2690:248:32;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:177:54:-;93:13;;-1:-1:-1;;;;;135:31:54;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:245::-;573:6;581;634:2;622:9;613:7;609:23;605:32;602:52;;;650:1;647;640:12;602:52;-1:-1:-1;;673:16:54;;729:2;714:18;;;708:25;673:16;;708:25;;-1:-1:-1;494:245:54:o;6149:489::-;297:12178:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@shadowToken_7790":{"entryPoint":null,"id":7790,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:242:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:125:54","statements":[{"nodeType":"YulAssignment","src":"125:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:54"},"nodeType":"YulFunctionCall","src":"133:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"182:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"190:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"178:3:54"},"nodeType":"YulFunctionCall","src":"178:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:54"},"nodeType":"YulFunctionCall","src":"160:74:54"},"nodeType":"YulExpressionStatement","src":"160:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:54","type":""}],"src":"14:226:54"}]},"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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"7790":[{"length":32,"start":49}]},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea2646970667358221220fc05c46bb13a6d5d9462a24509e2d892de4add00a5a5fa8a659b1d99f32b92cb64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFFC5D97A EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x53 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC SDIV 0xC4 PUSH12 0xB13A6D5D9462A24509E2D892 0xDE 0x4A 0xDD STOP 0xA5 0xA5 STATICCALL DUP11 PUSH6 0x9B1D99F32B92 0xCB PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"297:12178:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:36:43;;;;;;;;190:42:54;178:55;;;160:74;;148:2;133:18;336:36:43;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"35600","executionCost":"infinite","totalCost":"infinite"},"external":{"shadowToken()":"infinite"},"internal":{"_cancel(struct OrderComponents calldata[] calldata)":"infinite","_getOrderStatus(bytes32)":"infinite","_validate(struct Order calldata[] calldata)":"infinite","_validateOrderAndUpdateBreakStatus(struct OrderParameters calldata,bool)":"infinite","_validateOrderAndUpdateRepayStatus(struct OrderParameters calldata,uint256,bool)":"infinite","_validateOrderAndUpdateStatus(struct Order calldata,bool)":"infinite"}},"methodIdentifiers":{"shadowToken()":"ffc5d97a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"shadowToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNativeOfferItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrderParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderInvalidRepayParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotValidated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"CounterIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderBroken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"name\":\"OrderRepaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"shadowToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidNativeOfferItem()\":[{\"details\":\"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders.\"}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/OrderValidator.sol\":\"OrderValidator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/conduit/lib/ConduitEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ConduitItemType {\\n    NATIVE, // unused\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\\n\",\"keccak256\":\"0x1a84850bbff4b820573334c70ee0797462f20fd8c9b86fdebeacc85ecb1963a6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitItemType } from \\\"./ConduitEnums.sol\\\";\\n\\nstruct ConduitTransfer {\\n    ConduitItemType itemType;\\n    address token;\\n    address from;\\n    address to;\\n    uint256 identifier;\\n    uint256 amount;\\n}\\n\\nstruct ConduitBatch1155Transfer {\\n    address token;\\n    address from;\\n    address to;\\n    uint256[] ids;\\n    uint256[] amounts;\\n}\\n\",\"keccak256\":\"0xe3e87c74dd79c59293e49b7236cc7befdc19886bb79af5fe53208b1772fd24f9\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/interfaces/ConduitInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport {\\n    ConduitTransfer,\\n    ConduitBatch1155Transfer\\n} from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title ConduitInterface\\n * @author 0age\\n * @notice ConduitInterface contains all external function interfaces, events,\\n *         and errors for conduit contracts.\\n */\\ninterface ConduitInterface {\\n    /**\\n     * @dev Revert with an error when attempting to execute transfers using a\\n     *      caller that does not have an open channel.\\n     */\\n    error ChannelClosed(address channel);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update a channel to the\\n     *      current status of that channel.\\n     */\\n    error ChannelStatusAlreadySet(address channel, bool isOpen);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute a transfer for an\\n     *      item that does not have an ERC20/721/1155 item type.\\n     */\\n    error InvalidItemType();\\n\\n    /**\\n     * @dev Revert with an error when attempting to update the status of a\\n     *      channel from a caller that is not the conduit controller.\\n     */\\n    error InvalidController();\\n\\n    /**\\n     * @dev Emit an event whenever a channel is opened or closed.\\n     *\\n     * @param channel The channel that has been updated.\\n     * @param open    A boolean indicating whether the conduit is open or not.\\n     */\\n    event ChannelUpdated(address indexed channel, bool open);\\n\\n    /**\\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\\n     *         with an open channel can call this function.\\n     *\\n     * @param transfers The ERC20/721/1155 transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function execute(ConduitTransfer[] calldata transfers)\\n        external\\n        returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\\n     *         open channel can call this function.\\n     *\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeBatch1155(\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\\n     *         a caller with an open channel can call this function.\\n     *\\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\\n     * @param batch1155Transfers The 1155 batch transfers to perform.\\n     *\\n     * @return magicValue A magic value indicating that the transfers were\\n     *                    performed successfully.\\n     */\\n    function executeWithBatch1155(\\n        ConduitTransfer[] calldata standardTransfers,\\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\\n    ) external returns (bytes4 magicValue);\\n\\n    /**\\n     * @notice Open or close a given channel. Only callable by the controller.\\n     *\\n     * @param channel The channel to open or close.\\n     * @param isOpen  The status of the channel (either open or closed).\\n     */\\n    function updateChannel(address channel, bool isOpen) external;\\n}\\n\",\"keccak256\":\"0x628e23ec7e820e8ac59c0999211bb022bb5c5581a5bc6bd39465d6419d7d85b5\",\"license\":\"MIT\"},\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConsiderationEventsAndErrors\\n * @author 0age\\n * @notice ConsiderationEventsAndErrors contains all events and errors.\\n */\\ninterface ConsiderationEventsAndErrors {\\n\\n    event OrderFulfilled(\\n        bytes32 orderHash,\\n        address indexed offerer,\\n        uint256 shadowId\\n    );\\n\\n    event OrderRepaid(\\n        bytes32 orderHash,\\n        uint256 payTimes,\\n        bool finalized\\n    );\\n\\n    event OrderBroken(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is successfully cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     * @param offerer   The offerer of the cancelled order.\\n     */\\n    event OrderCancelled(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is explicitly validated. Note that\\n     *      this event will not be emitted on partial fills even though they do\\n     *      validate the order as part of partial fulfillment.\\n     *\\n     * @param orderHash The hash of the validated order.\\n     * @param offerer   The offerer of the validated order.\\n     */\\n    event OrderValidated(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\\n     *\\n     * @param newCounter The new counter for the offerer.\\n     * @param offerer  The offerer in question.\\n     */\\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has\\n     *      already been fully filled.\\n     *\\n     * @param orderHash The order hash on which a fill was attempted.\\n     */\\n    error OrderAlreadyFilled(bytes32 orderHash);\\n\\n    error OrderAlreadyFinalized(bytes32 orderHash);\\n\\n    error OrderAlreadyStarted(bytes32 orderHash);\\n\\n    error OrderNotStarted(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order outside the\\n     *      specified start time and end time.\\n     */\\n    error InvalidTime();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order referencing an\\n     *      invalid conduit (i.e. one that has not been deployed).\\n     */\\n    error InvalidConduit(bytes32 conduitKey, address conduit);\\n\\n    /**\\n     * @dev Revert with an error when an order is supplied for fulfillment with\\n     *      a consideration array that is shorter than the original array.\\n     */\\n    error MissingOriginalConsiderationItems();\\n\\n    /**\\n     * @dev Revert with an error when a call to a conduit fails with revert data\\n     *      that is too expensive to return.\\n     */\\n    error InvalidCallToConduit(address conduit);\\n\\n    /**\\n     * @dev Revert with an error if a consideration amount has not been fully\\n     *      zeroed out after applying all fulfillments.\\n     *\\n     * @param orderIndex         The index of the order with the consideration\\n     *                           item with a shortfall.\\n     * @param considerationIndex The index of the consideration item on the\\n     *                           order.\\n     * @param shortfallAmount    The unfulfilled consideration amount.\\n     */\\n    error ConsiderationNotMet(\\n        uint256 orderIndex,\\n        uint256 considerationIndex,\\n        uint256 shortfallAmount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when insufficient ether is supplied as part of\\n     *      msg.value when fulfilling orders.\\n     */\\n    error InsufficientEtherSupplied();\\n\\n    /**\\n     * @dev Revert with an error when an ether transfer reverts.\\n     */\\n    error EtherTransferGenericFailure(address account, uint256 amount);\\n\\n    /**\\n     * @dev Revert with an error when a partial fill is attempted on an order\\n     *      that does not specify partial fill support in its order type.\\n     */\\n    error PartialFillsNotEnabledForOrder();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has been\\n     *      cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     */\\n    error OrderIsCancelled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order that has\\n     *      been partially filled.\\n     *\\n     * @param orderHash The hash of the partially used order.\\n     */\\n    error OrderPartiallyFilled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel an order as a caller\\n     *      other than the indicated offerer or zone.\\n     */\\n    error InvalidCanceller();\\n\\n    /**\\n     * @dev Revert with an error when supplying a fraction with a value of zero\\n     *      for the numerator or denominator, or one where the numerator exceeds\\n     *      the denominator.\\n     */\\n    error BadFraction();\\n\\n    /**\\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\\n     *      non-payable basic order route or does not supply any callvalue to a\\n     *      payable basic order route.\\n     */\\n    error InvalidMsgValue(uint256 value);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order using\\n     *      calldata not produced by default ABI encoding.\\n     */\\n    error InvalidBasicOrderParameterEncoding();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill any number of\\n     *      available orders when none are fulfillable.\\n     */\\n    error NoSpecifiedOrdersAvailable();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order with an\\n     *      offer for ETH outside of matching orders.\\n     */\\n    error InvalidNativeOfferItem();\\n\\n    error OrderNotValidated(bytes32 orderHash);\\n\\n    error OrderExpired(bytes32 orderHash);\\n\\n    error OrderNotExpired(bytes32 orderHash);\\n\\n    error OrderInvalidRepayParameters(bytes32 orderHash);\\n\\n    error InvalidOrderParameters();\\n}\\n\",\"keccak256\":\"0x71a166db3dbdc44218081f02a9fe0de3cf2d3d9680ac88ef68c0b376eb1a3e97\",\"license\":\"MIT\"},\"contracts/interfaces/EIP1271Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface EIP1271Interface {\\n    function isValidSignature(bytes32 digest, bytes calldata signature)\\n        external\\n        view\\n        returns (bytes4);\\n}\",\"keccak256\":\"0xba82a40106e4565fda2909937d8ab23dc45622fead50d439ee09994d678828e0\",\"license\":\"MIT\"},\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"},\"contracts/interfaces/SignatureVerificationErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title SignatureVerificationErrors\\n * @author 0age\\n * @notice SignatureVerificationErrors contains all errors related to signature\\n *         verification.\\n */\\ninterface SignatureVerificationErrors {\\n    /**\\n     * @dev Revert with an error when a signature that does not contain a v\\n     *      value of 27 or 28 has been supplied.\\n     *\\n     * @param v The invalid v value.\\n     */\\n    error BadSignatureV(uint8 v);\\n\\n    /**\\n     * @dev Revert with an error when the signer recovered by the supplied\\n     *      signature does not match the offerer or an allowed EIP-1271 signer\\n     *      as specified by the offerer in the event they are a contract.\\n     */\\n    error InvalidSigner();\\n\\n    /**\\n     * @dev Revert with an error when a signer cannot be recovered from the\\n     *      supplied signature.\\n     */\\n    error InvalidSignature();\\n\\n    /**\\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\\n     */\\n    error BadContractSignature();\\n}\\n\",\"keccak256\":\"0xd0f5b26469ba6cd303e5ea9b53cf6b7c25cb00918097eb59a263678b51197381\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/Assertions.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { GettersAndDerivers } from \\\"./GettersAndDerivers.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { CounterManager } from \\\"./CounterManager.sol\\\";\\n\\ncontract Assertions is\\n    GettersAndDerivers,\\n    CounterManager,\\n    TokenTransferrerErrors\\n{\\n    constructor(address conduitController)\\n        GettersAndDerivers(conduitController)\\n    {}\\n\\n    function _assertNonZeroAmount(uint256 amount) internal pure {\\n        // Revert if the supplied amount is equal to zero.\\n        if (amount == 0) {\\n            revert MissingItemAmount();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5841bbb4c48b541f692567567de5672939afc452bc940ef69a9d0726697d6414\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\ncontract ConsiderationBase {\\n    bytes32 internal immutable _NAME_HASH;\\n    bytes32 internal immutable _VERSION_HASH;\\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\\n    bytes32 internal immutable _ORDER_TYPEHASH;\\n    uint256 internal immutable _CHAIN_ID;\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n\\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n\\n    constructor(address conduitController) {\\n        (\\n            _NAME_HASH,\\n            _VERSION_HASH,\\n            _EIP_712_DOMAIN_TYPEHASH,\\n            _ORDER_TYPEHASH\\n        ) = _deriveTypehashes();\\n\\n        _CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\\n\\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\\n\\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\\n        );\\n    }\\n\\n    function _deriveDomainSeparator() internal view returns (bytes32) {\\n        return keccak256(\\n            abi.encode(\\n                _EIP_712_DOMAIN_TYPEHASH,\\n                _NAME_HASH,\\n                _VERSION_HASH,\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    function _nameString() internal pure virtual returns (string memory) {\\n        return \\\"Consideration\\\";\\n    }\\n\\n    function _deriveTypehashes()\\n        internal\\n        pure\\n        returns (\\n            bytes32 nameHash,\\n            bytes32 versionHash,\\n            bytes32 eip712DomainTypehash,\\n            bytes32 orderTypehash\\n        )\\n    {\\n        nameHash = keccak256(bytes(_nameString()));\\n\\n        versionHash = keccak256(bytes(\\\"1.0\\\"));\\n\\n        bytes memory orderComponentsTypeString = abi.encodePacked(\\n            \\\"OrderComponents(\\\",\\n                \\\"address offerer,\\\",\\n                \\\"address token,\\\",\\n                \\\"uint256 identifier,\\\",\\n                \\\"address currency,\\\",\\n                \\\"address artist,\\\",\\n                \\\"address platform,\\\",\\n                \\\"uint256 startTime,\\\",\\n                \\\"uint256 endTime,\\\",\\n                \\\"uint256 duration,\\\",\\n                \\\"uint256 periods,\\\",\\n                \\\"uint256 amount,\\\",\\n                \\\"uint256 ratio,\\\",\\n                \\\"uint256 royalty,\\\",\\n                \\\"uint256 fee,\\\",\\n                \\\"uint256 withdrawFee,\\\",\\n                \\\"uint256 salt,\\\",\\n                \\\"bytes32 conduitKey,\\\",\\n                \\\"uint256 counter\\\",\\n            \\\")\\\"\\n        );\\n\\n        eip712DomainTypehash = keccak256(\\n            abi.encodePacked(\\n                \\\"EIP712Domain(\\\",\\n                    \\\"string name,\\\",\\n                    \\\"string version,\\\",\\n                    \\\"uint256 chainId,\\\",\\n                    \\\"address verifyingContract\\\",\\n                \\\")\\\"\\n            )\\n        );\\n\\n        orderTypehash = keccak256(orderComponentsTypeString);\\n    }\\n}\",\"keccak256\":\"0x9cd33c5b8bd60301ea09c0305587414ef38f6898fa7a1e0dfb217dd26091d106\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ItemType {\\n    NATIVE,\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\",\"keccak256\":\"0x6da855eedfe9a6360ac027a0b9ecebb6eacfd09fa5b0c5f55a141e21362808ea\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nstruct OrderComponents {\\n    address offerer;\\n    address token;\\n    uint256 identifier;\\n    address currency;\\n    address artist;\\n    address platform;\\n    uint256 startTime;\\n    uint256 endTime;\\n    uint256 duration;\\n    uint256 periods;\\n    uint256 amount;\\n    uint256 ratio;\\n    uint256 royalty;\\n    uint256 fee;\\n    uint256 withdrawFee;\\n    uint256 salt;\\n    bytes32 conduitKey;\\n    uint256 counter;\\n}\\n\\nstruct OrderParameters {\\n    address offerer;    // 0x00\\n    address token;      // 0x20\\n    uint256 identifier; // 0x40\\n    address currency;   // 0x60\\n    address artist;     // 0x80\\n    address platform;   // 0xa0\\n    uint256 startTime;  // 0xc0\\n    uint256 endTime;    // 0xe0\\n    uint256 duration;   // 0x100\\n    uint256 periods;    // 0x120\\n    uint256 amount;     // 0x140\\n    uint256 ratio;      // 0x160\\n    uint256 royalty;    // 0x180\\n    uint256 fee;        // 0x1a0\\n    uint256 withdrawFee;// 0x1c0\\n    uint256 salt;       // 0x1e0\\n    bytes32 conduitKey; // 0x200\\n}\\n\\nstruct Order {\\n    OrderParameters parameters;\\n    bytes signature;\\n}\\n\\nstruct OrderStatus {\\n    bool isValidated;\\n    bool isCancelled;\\n    bool isFinalized;\\n    bool isBroken;\\n    address fulfiller;\\n    uint256 startedAt;\\n    uint256 shadowId;\\n    uint256 paidTimes;\\n}\",\"keccak256\":\"0xe0a311247127b5bbaf92415e092bec717f990ed8cfe6dec710046d755db38048\",\"license\":\"MIT\"},\"contracts/lib/CounterManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConsiderationEventsAndErrors\\n} from \\\"../interfaces/ConsiderationEventsAndErrors.sol\\\";\\n\\nimport { ReentrancyGuard } from \\\"./ReentrancyGuard.sol\\\";\\n\\ncontract CounterManager is ConsiderationEventsAndErrors, ReentrancyGuard {\\n\\n    mapping(address => uint256) private _counters;\\n\\n    function _incrementCounter() internal returns (uint256 newCounter) {\\n        _assertNonReentrant();\\n\\n        unchecked {\\n            newCounter = ++_counters[msg.sender];\\n        }\\n\\n        emit CounterIncremented(newCounter, msg.sender);\\n    }\\n\\n    function _getCounter(address offerer)\\n        internal\\n        view\\n        returns (uint256 currentCounter)\\n    {\\n        currentCounter = _counters[offerer];\\n    }\\n}\\n\",\"keccak256\":\"0xf07f27dab21fe6607342bc513064c81f10729cf4b9f41e6173ae66d6a4b7a25a\",\"license\":\"MIT\"},\"contracts/lib/Executor.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ConduitInterface } from \\\"../interfaces/ConduitInterface.sol\\\";\\n\\nimport { ConduitItemType } from \\\"../conduit/lib/ConduitEnums.sol\\\";\\n\\nimport { ItemType } from \\\"./ConsiderationEnums.sol\\\";\\n\\nimport { Verifiers } from \\\"./Verifiers.sol\\\";\\n\\nimport { TokenTransferrer } from \\\"./TokenTransferrer.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title Executor\\n * @author 0age\\n * @notice Executor contains functions related to processing executions (i.e.\\n *         transferring items, either directly or via conduits).\\n */\\ncontract Executor is Verifiers, TokenTransferrer {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Verifiers(conduitController) {}\\n\\n    /**\\n     * @dev Internal function to transfer an individual ERC721 or ERC1155 item\\n     *      from a given originator to a given recipient. The accumulator will\\n     *      be bypassed, meaning that this function should be utilized in cases\\n     *      where multiple item transfers can be accumulated into a single\\n     *      conduit call. Sufficient approvals must be set, either on the\\n     *      respective conduit or on this contract itself.\\n     *\\n     * @param itemType   The type of item to transfer, either ERC721 or ERC1155.\\n     * @param token      The token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     * @param amount     The amount to transfer.\\n     * @param conduitKey A bytes32 value indicating what corresponding conduit,\\n     *                   if any, to source token approvals from. The zero hash\\n     *                   signifies that no conduit should be used, with direct\\n     *                   approvals set on this contract.\\n     */\\n    function _transferIndividual721Or1155Item(\\n        ItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Determine if the transfer is to be performed via a conduit.\\n        if (conduitKey != bytes32(0)) {\\n            // Use free memory pointer as calldata offset for the conduit call.\\n            uint256 callDataOffset;\\n\\n            // Utilize assembly to place each argument in free memory.\\n            assembly {\\n                // Retrieve the free memory pointer and use it as the offset.\\n                callDataOffset := mload(FreeMemoryPointerSlot)\\n\\n                // Write ConduitInterface.execute.selector to memory.\\n                mstore(callDataOffset, Conduit_execute_signature)\\n\\n                // Write the offset to the ConduitTransfer array in memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_offset_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_ptr\\n                )\\n\\n                // Write the length of the ConduitTransfer array to memory.\\n                mstore(\\n                    add(\\n                        callDataOffset,\\n                        Conduit_execute_ConduitTransfer_length_ptr\\n                    ),\\n                    Conduit_execute_ConduitTransfer_length\\n                )\\n\\n                // Write the item type to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferItemType_ptr),\\n                    itemType\\n                )\\n\\n                // Write the token to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferToken_ptr),\\n                    token\\n                )\\n\\n                // Write the transfer source to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferFrom_ptr),\\n                    from\\n                )\\n\\n                // Write the transfer recipient to memory.\\n                mstore(add(callDataOffset, Conduit_execute_transferTo_ptr), to)\\n\\n                // Write the token identifier to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferIdentifier_ptr),\\n                    identifier\\n                )\\n\\n                // Write the transfer amount to memory.\\n                mstore(\\n                    add(callDataOffset, Conduit_execute_transferAmount_ptr),\\n                    amount\\n                )\\n            }\\n\\n            // Perform the call to the conduit.\\n            _callConduitUsingOffsets(\\n                conduitKey,\\n                callDataOffset,\\n                OneConduitExecute_size\\n            );\\n        } else {\\n            // Otherwise, determine whether it is an ERC721 or ERC1155 item.\\n            if (itemType == ItemType.ERC721) {\\n                // Ensure that exactly one 721 item is being transferred.\\n                if (amount != 1) {\\n                    revert InvalidERC721TransferAmount();\\n                }\\n\\n                // Perform transfer via the token contract directly.\\n                _performERC721Transfer(token, from, to, identifier);\\n            } else {\\n                // Perform transfer via the token contract directly.\\n                _performERC1155Transfer(token, from, to, identifier, amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer Ether or other native tokens to a\\n     *      given recipient.\\n     *\\n     * @param to     The recipient of the transfer.\\n     * @param amount The amount to transfer.\\n     */\\n    function _transferEth(address payable to, uint256 amount) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Declare a variable indicating whether the call was successful or not.\\n        bool success;\\n\\n        assembly {\\n            // Transfer the ETH and store if it succeeded or not.\\n            success := call(gas(), to, amount, 0, 0, 0, 0)\\n        }\\n\\n        // If the call fails...\\n        if (!success) {\\n            // Revert and pass the revert reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error message.\\n            revert EtherTransferGenericFailure(to, amount);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient using a given conduit if applicable. Sufficient\\n     *      approvals must be set on this contract or on a respective conduit.\\n     *\\n     * @param token       The ERC20 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC20(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform the token transfer directly.\\n            _performERC20Transfer(token, from, to, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC20,\\n                token,\\n                from,\\n                to,\\n                uint256(0),\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer a single ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set,\\n     *      either on the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC721 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer (must be 1 for ERC721).\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC721(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Ensure that exactly one 721 item is being transferred.\\n            if (amount != 1) {\\n                revert InvalidERC721TransferAmount();\\n            }\\n\\n            // Perform transfer via the token contract directly.\\n            _performERC721Transfer(token, from, to, identifier);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC721,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set, either on\\n     *      the respective conduit or on this contract itself.\\n     *\\n     * @param token       The ERC1155 token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The id to transfer.\\n     * @param amount      The amount to transfer.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _transferERC1155(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount,\\n        bytes32 conduitKey,\\n        bytes memory accumulator\\n    ) internal {\\n        // Ensure that the supplied amount is non-zero.\\n        _assertNonZeroAmount(amount);\\n\\n        // Trigger accumulated transfers if the conduits differ.\\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\\n\\n        // If no conduit has been specified...\\n        if (conduitKey == bytes32(0)) {\\n            // Perform transfer via the token contract directly.\\n            _performERC1155Transfer(token, from, to, identifier, amount);\\n        } else {\\n            // Insert the call to the conduit into the accumulator.\\n            _insert(\\n                conduitKey,\\n                accumulator,\\n                ConduitItemType.ERC1155,\\n                token,\\n                from,\\n                to,\\n                identifier,\\n                amount\\n            );\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\") and the supplied conduit key does not match the key held\\n     *      by the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     */\\n    function _triggerIfArmedAndNotAccumulatable(\\n        bytes memory accumulator,\\n        bytes32 conduitKey\\n    ) internal {\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call if the set key does not match the supplied key.\\n        if (accumulatorConduitKey != conduitKey) {\\n            _triggerIfArmed(accumulator);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit currently held by\\n     *      the accumulator if the accumulator contains item transfers (i.e. it\\n     *      is \\\"armed\\\").\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _triggerIfArmed(bytes memory accumulator) internal {\\n        // Exit if the accumulator is not \\\"armed\\\".\\n        if (accumulator.length != AccumulatorArmed) {\\n            return;\\n        }\\n\\n        // Retrieve the current conduit key from the accumulator.\\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\\n\\n        // Perform conduit call.\\n        _trigger(accumulatorConduitKey, accumulator);\\n    }\\n\\n    /**\\n     * @dev Internal function to trigger a call to the conduit corresponding to\\n     *      a given conduit key, supplying all accumulated item transfers. The\\n     *      accumulator will be \\\"disarmed\\\" and reset in the process.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     */\\n    function _trigger(bytes32 conduitKey, bytes memory accumulator) internal {\\n        // Declare variables for offset in memory & size of calldata to conduit.\\n        uint256 callDataOffset;\\n        uint256 callDataSize;\\n\\n        // Call the conduit with all the accumulated transfers.\\n        assembly {\\n            // Call begins at third word; the first is length or \\\"armed\\\" status,\\n            // and the second is the current conduit key.\\n            callDataOffset := add(accumulator, TwoWords)\\n\\n            // 68 + items * 192\\n            callDataSize := add(\\n                Accumulator_array_offset_ptr,\\n                mul(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    Conduit_transferItem_size\\n                )\\n            )\\n        }\\n\\n        // Call conduit derived from conduit key & supply accumulated transfers.\\n        _callConduitUsingOffsets(conduitKey, callDataOffset, callDataSize);\\n\\n        // Reset accumulator length to signal that it is now \\\"disarmed\\\".\\n        assembly {\\n            mstore(accumulator, AccumulatorDisarmed)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a call to the conduit corresponding to\\n     *      a given conduit key based on the offset and size of the calldata in\\n     *      question in memory.\\n     *\\n     * @param conduitKey     A bytes32 value indicating what corresponding\\n     *                       conduit, if any, to source token approvals from.\\n     *                       The zero hash signifies that no conduit should be\\n     *                       used, with direct approvals set on this contract.\\n     * @param callDataOffset The memory pointer where calldata is contained.\\n     * @param callDataSize   The size of calldata in memory.\\n     */\\n    function _callConduitUsingOffsets(\\n        bytes32 conduitKey,\\n        uint256 callDataOffset,\\n        uint256 callDataSize\\n    ) internal {\\n        // Derive the address of the conduit using the conduit key.\\n        address conduit = _deriveConduit(conduitKey);\\n\\n        bool success;\\n        bytes4 result;\\n\\n        // call the conduit.\\n        assembly {\\n            // Ensure first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Perform call, placing first word of return data in scratch space.\\n            success := call(\\n                gas(),\\n                conduit,\\n                0,\\n                callDataOffset,\\n                callDataSize,\\n                0,\\n                OneWord\\n            )\\n\\n            // Take value from scratch space and place it on the stack.\\n            result := mload(0)\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Pass along whatever revert reason was given by the conduit.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with a generic error.\\n            revert InvalidCallToConduit(conduit);\\n        }\\n\\n        // Ensure result was extracted and matches EIP-1271 magic value.\\n        if (result != ConduitInterface.execute.selector) {\\n            revert InvalidConduit(conduitKey, conduit);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to retrieve the current conduit key set for\\n     *      the accumulator.\\n     *\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     *\\n     * @return accumulatorConduitKey The conduit key currently set for the\\n     *                               accumulator.\\n     */\\n    function _getAccumulatorConduitKey(bytes memory accumulator)\\n        internal\\n        pure\\n        returns (bytes32 accumulatorConduitKey)\\n    {\\n        // Retrieve the current conduit key from the accumulator.\\n        assembly {\\n            accumulatorConduitKey := mload(\\n                add(accumulator, Accumulator_conduitKey_ptr)\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to place an item transfer into an accumulator\\n     *      that collects a series of transfers to execute against a given\\n     *      conduit in a single call.\\n     *\\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\\n     *                    if any, to source token approvals from. The zero hash\\n     *                    signifies that no conduit should be used, with direct\\n     *                    approvals set on this contract.\\n     * @param accumulator An open-ended array that collects transfers to execute\\n     *                    against a given conduit in a single call.\\n     * @param itemType    The type of the item to transfer.\\n     * @param token       The token to transfer.\\n     * @param from        The originator of the transfer.\\n     * @param to          The recipient of the transfer.\\n     * @param identifier  The tokenId to transfer.\\n     * @param amount      The amount to transfer.\\n     */\\n    function _insert(\\n        bytes32 conduitKey,\\n        bytes memory accumulator,\\n        ConduitItemType itemType,\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal pure {\\n        uint256 elements;\\n        // \\\"Arm\\\" and prime accumulator if it's not already armed. The sentinel\\n        // value is held in the length of the accumulator array.\\n        if (accumulator.length == AccumulatorDisarmed) {\\n            elements = 1;\\n            bytes4 selector = ConduitInterface.execute.selector;\\n            assembly {\\n                mstore(accumulator, AccumulatorArmed) // \\\"arm\\\" the accumulator.\\n                mstore(add(accumulator, Accumulator_conduitKey_ptr), conduitKey)\\n                mstore(add(accumulator, Accumulator_selector_ptr), selector)\\n                mstore(\\n                    add(accumulator, Accumulator_array_offset_ptr),\\n                    Accumulator_array_offset\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        } else {\\n            // Otherwise, increase the number of elements by one.\\n            assembly {\\n                elements := add(\\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\\n                    1\\n                )\\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\\n            }\\n        }\\n\\n        // Insert the item.\\n        assembly {\\n            let itemPointer := sub(\\n                add(accumulator, mul(elements, Conduit_transferItem_size)),\\n                Accumulator_itemSizeOffsetDifference\\n            )\\n            mstore(itemPointer, itemType)\\n            mstore(add(itemPointer, Conduit_transferItem_token_ptr), token)\\n            mstore(add(itemPointer, Conduit_transferItem_from_ptr), from)\\n            mstore(add(itemPointer, Conduit_transferItem_to_ptr), to)\\n            mstore(\\n                add(itemPointer, Conduit_transferItem_identifier_ptr),\\n                identifier\\n            )\\n            mstore(add(itemPointer, Conduit_transferItem_amount_ptr), amount)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4b3165cc66037d31d39c5ca2468c46202765bd3831c91a3b33e9c03a59b93a5d\",\"license\":\"MIT\"},\"contracts/lib/GettersAndDerivers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderParameters } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { ConsiderationBase } from \\\"./ConsiderationBase.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract GettersAndDerivers is ConsiderationBase {\\n\\n    constructor(address conduitController)\\n        ConsiderationBase(conduitController)\\n    {}\\n\\n    function _deriveOrderHash(\\n        OrderParameters memory orderParameters,\\n        uint256 counter\\n    ) internal view returns (bytes32 orderHash) {\\n        bytes32 typeHash = _ORDER_TYPEHASH;\\n\\n        assembly {\\n            let typeHashPtr := sub(orderParameters, OneWord)\\n\\n            let previousValue := mload(typeHashPtr)\\n\\n            mstore(typeHashPtr, typeHash)\\n\\n            let counterPtr := add(\\n                orderParameters,\\n                OrderParameters_counter_offset\\n            )\\n\\n            let counterDataPtr := mload(counterPtr)\\n\\n            mstore(counterPtr, counter)\\n\\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\\n\\n            mstore(typeHashPtr, previousValue)\\n\\n            mstore(counterPtr, counterDataPtr)\\n        }\\n    }\\n\\n    function _deriveConduit(bytes32 conduitKey)\\n        internal\\n        view\\n        returns (address conduit)\\n    {\\n        // Read conduit controller address from runtime and place on the stack.\\n        address conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Read conduit creation code hash from runtime and place on the stack.\\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\\n\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Retrieve the free memory pointer; it will be replaced afterwards.\\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Place the control character and the conduit controller in scratch\\n            // space; note that eleven bytes at the beginning are left unused.\\n            mstore(0, or(MaskOverByteTwelve, conduitController))\\n\\n            // Place the conduit key in the next region of scratch space.\\n            mstore(OneWord, conduitKey)\\n\\n            // Place conduit creation code hash in free memory pointer location.\\n            mstore(TwoWords, conduitCreationCodeHash)\\n\\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\\n            conduit := and(\\n                // Hash the relevant region.\\n                keccak256(\\n                    // The region starts at memory pointer 11.\\n                    Create2AddressDerivation_ptr,\\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\\n                    Create2AddressDerivation_length\\n                ),\\n                // The address equals the last twenty bytes of the hash.\\n                MaskOverLastTwentyBytes\\n            )\\n\\n            // Restore the free memory pointer.\\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to get the EIP-712 domain separator. If the\\n     *      chainId matches the chainId set on deployment, the cached domain\\n     *      separator will be returned; otherwise, it will be derived from\\n     *      scratch.\\n     *\\n     * @return The domain separator.\\n     */\\n    function _domainSeparator() internal view returns (bytes32) {\\n        // prettier-ignore\\n        return block.chainid == _CHAIN_ID\\n            ? _DOMAIN_SEPARATOR\\n            : _deriveDomainSeparator();\\n    }\\n\\n    /**\\n     * @dev Internal view function to retrieve configuration information for\\n     *      this contract.\\n     *\\n     * @return version           The contract version.\\n     * @return domainSeparator   The domain separator for this contract.\\n     * @return conduitController The conduit Controller set for this contract.\\n     */\\n    function _information()\\n        internal\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        // Derive the domain separator.\\n        domainSeparator = _domainSeparator();\\n\\n        // Declare variable as immutables cannot be accessed within assembly.\\n        conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Allocate a string with the intended length.\\n        version = new string(Version_length);\\n\\n        // Set the version as data on the newly allocated string.\\n        assembly {\\n            mstore(add(version, OneWord), shl(Version_shift, Version))\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to efficiently derive an digest to sign for\\n     *      an order in accordance with EIP-712.\\n     *\\n     * @param domainSeparator The domain separator.\\n     * @param orderHash       The order hash.\\n     *\\n     * @return value The hash.\\n     */\\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\\n        internal\\n        pure\\n        returns (bytes32 value)\\n    {\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Place the EIP-712 prefix at the start of scratch space.\\n            mstore(0, EIP_712_PREFIX)\\n\\n            // Place the domain separator in the next region of scratch space.\\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\\n\\n            // Place the order hash in scratch space, spilling into the first\\n            // two bytes of the free memory pointer \\u2014 this should never be set\\n            // as memory cannot be expanded to that size, and will be zeroed out\\n            // after the hash is performed.\\n            mstore(EIP712_OrderHash_offset, orderHash)\\n\\n            // Hash the relevant region (65 bytes).\\n            value := keccak256(0, EIP712_DigestPayload_size)\\n\\n            // Clear out the dirtied bits in the memory pointer.\\n            mstore(EIP712_OrderHash_offset, 0)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5c0866572e7dfe34edad443a82e35851c4d3631cc9c5957994d68e41516dd6c4\",\"license\":\"MIT\"},\"contracts/lib/LowLevelHelpers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title LowLevelHelpers\\n * @author 0age\\n * @notice LowLevelHelpers contains logic for performing various low-level\\n *         operations.\\n */\\ncontract LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to staticcall an arbitrary target with given\\n     *      calldata. Note that no data is written to memory and no contract\\n     *      size check is performed.\\n     *\\n     * @param target   The account to staticcall.\\n     * @param callData The calldata to supply when staticcalling the target.\\n     *\\n     * @return success The status of the staticcall to the target.\\n     */\\n    function _staticcall(address target, bytes memory callData)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        assembly {\\n            // Perform the staticcall.\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(callData, OneWord),\\n                mload(callData),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to revert and pass along the revert reason if\\n     *      data was returned by the last call and that the size of that data\\n     *      does not exceed the currently allocated memory size.\\n     */\\n    function _revertWithReasonIfOneIsReturned() internal view {\\n        assembly {\\n            // If it returned a message, bubble it up as long as sufficient gas\\n            // remains to do so:\\n            if returndatasize() {\\n                // Ensure that sufficient gas is available to copy returndata\\n                // while expanding memory where necessary. Start by computing\\n                // the word size of returndata and allocated memory.\\n                let returnDataWords := div(\\n                    add(returndatasize(), AlmostOneWord),\\n                    OneWord\\n                )\\n\\n                // Note: use the free memory pointer in place of msize() to work\\n                // around a Yul warning that prevents accessing msize directly\\n                // when the IR pipeline is activated.\\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\\n\\n                // Next, compute the cost of the returndatacopy.\\n                let cost := mul(CostPerWord, returnDataWords)\\n\\n                // Then, compute cost of new memory allocation.\\n                if gt(returnDataWords, msizeWords) {\\n                    cost := add(\\n                        cost,\\n                        add(\\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\\n                            div(\\n                                sub(\\n                                    mul(returnDataWords, returnDataWords),\\n                                    mul(msizeWords, msizeWords)\\n                                ),\\n                                MemoryExpansionCoefficient\\n                            )\\n                        )\\n                    )\\n                }\\n\\n                // Finally, add a small constant and compare to gas remaining;\\n                // bubble up the revert data if enough gas is still available.\\n                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                    // Copy returndata to memory; overwrite existing memory.\\n                    returndatacopy(0, 0, returndatasize())\\n\\n                    // Revert, specifying memory region with copied returndata.\\n                    revert(0, returndatasize())\\n                }\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to determine if the first word of returndata\\n     *      matches an expected magic value.\\n     *\\n     * @param expected The expected magic value.\\n     *\\n     * @return A boolean indicating whether the expected value matches the one\\n     *         located in the first word of returndata.\\n     */\\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\\n        // Declare a variable for the value held by the return data buffer.\\n        bytes4 result;\\n\\n        // Utilize assembly in order to read directly from returndata buffer.\\n        assembly {\\n            // Only put result on stack if return data is exactly one word.\\n            if eq(returndatasize(), OneWord) {\\n                // Copy the word directly from return data into scratch space.\\n                returndatacopy(0, 0, OneWord)\\n\\n                // Take value from scratch space and place it on the stack.\\n                result := mload(0)\\n            }\\n        }\\n\\n        // Return a boolean indicating whether expected and located value match.\\n        return result != expected;\\n    }\\n}\\n\",\"keccak256\":\"0x57700a6f8f18d1cdfc8492724ef3b9f89aa143382f13794489df70c1f3fc027c\",\"license\":\"MIT\"},\"contracts/lib/OrderValidator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    OrderParameters,\\n    Order,\\n    OrderComponents,\\n    OrderStatus\\n} from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\nimport { Executor } from \\\"./Executor.sol\\\";\\nimport { Shadow } from \\\"./Shadow.sol\\\";\\n\\ncontract OrderValidator is Executor, Shadow {\\n\\n    mapping(bytes32 => OrderStatus) private _orderStatus;\\n\\n    constructor(address conduitController, address shadowToken) Executor(conduitController) Shadow(shadowToken) {}\\n\\n    function _validateOrderAndUpdateStatus(\\n        Order calldata order,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            bool valid,\\n            uint256 shadowId\\n        )\\n    {\\n        OrderParameters calldata orderParameters = order.parameters;\\n        if (\\n            !_verifyTime(\\n                orderParameters.startTime,\\n                orderParameters.endTime,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (bytes32(0), false, 0);\\n        }\\n\\n        if (orderParameters.periods < 2) {\\n            if (revertOnInvalid) {\\n                revert InvalidOrderParameters();\\n            }\\n            return (bytes32(0), false, 0);\\n        }\\n\\n        orderHash = _deriveOrderHash(\\n            orderParameters,\\n            _getCounter(orderParameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                true,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, false, 0);\\n        }\\n\\n        if (!orderStatus.isValidated) {\\n            _verifySignature(\\n                orderParameters.offerer,\\n                orderHash,\\n                order.signature\\n            );\\n        }\\n\\n        shadowId = _mintToken(\\n            msg.sender,\\n            orderParameters.token,\\n            orderParameters.identifier,\\n            orderParameters.duration\\n        );\\n\\n        orderStatus.isValidated = true;\\n        orderStatus.isCancelled = false;\\n        orderStatus.isBroken = false;\\n        orderStatus.fulfiller = msg.sender;\\n        orderStatus.startedAt = block.timestamp;\\n        orderStatus.shadowId = shadowId;\\n        orderStatus.paidTimes = 1;\\n\\n        valid = true;\\n    }\\n\\n    function _validateOrderAndUpdateRepayStatus(\\n        OrderParameters calldata parameters,\\n        uint256 payTimes,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            address fulfiller,\\n            bool valid,\\n            bool isFinalized\\n        )\\n    {\\n        orderHash = _deriveOrderHash(\\n            parameters,\\n            _getCounter(parameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        if (!orderStatus.isValidated) {\\n            if (revertOnInvalid) {\\n                revert OrderNotValidated(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                false,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (orderStatus.paidTimes + payTimes > parameters.periods || payTimes < 1) {\\n            if (revertOnInvalid) {\\n                revert OrderInvalidRepayParameters(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        if (orderStatus.startedAt + orderStatus.paidTimes * parameters.duration < block.timestamp) {\\n            if (revertOnInvalid) {\\n                revert OrderExpired(orderHash);\\n            }\\n            return (orderHash, address(0), false, false);\\n        }\\n\\n        orderStatus.paidTimes += payTimes;\\n        if (orderStatus.paidTimes == parameters.periods) {\\n            orderStatus.isFinalized = true;\\n            isFinalized = true;\\n            _burnToken(orderStatus.shadowId);\\n        } else {\\n            _extendToken(\\n                orderStatus.fulfiller,\\n                orderStatus.shadowId,\\n                orderStatus.startedAt + orderStatus.paidTimes * parameters.duration\\n            );\\n        }\\n\\n        valid = true;\\n        fulfiller = orderStatus.fulfiller;\\n    }\\n\\n    function _validateOrderAndUpdateBreakStatus(\\n        OrderParameters calldata parameters,\\n        bool revertOnInvalid\\n    )\\n        internal\\n        returns (\\n            bytes32 orderHash,\\n            uint256 paidTimes,\\n            bool valid\\n        )\\n    {\\n        orderHash = _deriveOrderHash(\\n            parameters,\\n            _getCounter(parameters.offerer)\\n        );\\n\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        if (!orderStatus.isValidated) {\\n            if (revertOnInvalid) {\\n                revert OrderNotValidated(orderHash);\\n            }\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        paidTimes = orderStatus.paidTimes;\\n\\n        if (\\n            !_verifyOrderStatus(\\n                orderHash,\\n                orderStatus,\\n                false,\\n                revertOnInvalid\\n            )\\n        ) {\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        if (orderStatus.startedAt + paidTimes * parameters.duration > block.timestamp) {\\n            if (revertOnInvalid) {\\n                revert OrderNotExpired(orderHash);\\n            }\\n            return (orderHash, paidTimes, false);\\n        }\\n\\n        _burnToken(orderStatus.shadowId);\\n\\n        orderStatus.isFinalized = true;\\n        orderStatus.isBroken = true;\\n        valid = true;\\n    }\\n\\n    function _cancel(OrderComponents[] calldata orders)\\n        internal\\n        returns (bool cancelled)\\n    {\\n        // Ensure that the reentrancy guard is not currently set.\\n        _assertNonReentrant();\\n\\n        // Declare variables outside of the loop.\\n        OrderStatus storage orderStatus;\\n        address offerer;\\n\\n        // Skip overflow check as for loop is indexed starting at zero.\\n        unchecked {\\n            // Read length of the orders array from memory and place on stack.\\n            uint256 totalOrders = orders.length;\\n\\n            // Iterate over each order.\\n            for (uint256 i = 0; i < totalOrders; ) {\\n                // Retrieve the order.\\n                OrderComponents calldata order = orders[i];\\n\\n                offerer = order.offerer;\\n\\n                if (msg.sender != offerer) {\\n                    revert InvalidCanceller();\\n                }\\n\\n                // Derive order hash using the order parameters and the counter.\\n                bytes32 orderHash = _deriveOrderHash(\\n                    OrderParameters(\\n                        offerer,\\n                        order.token,\\n                        order.identifier,\\n                        order.currency,\\n                        order.artist,\\n                        order.platform,\\n                        order.startTime,\\n                        order.endTime,\\n                        order.duration,\\n                        order.periods,\\n                        order.amount,\\n                        order.ratio,\\n                        order.royalty,\\n                        order.fee,\\n                        order.withdrawFee,\\n                        order.salt,\\n                        order.conduitKey\\n                    ),\\n                    order.counter\\n                );\\n\\n                // Retrieve the order status using the derived order hash.\\n                orderStatus = _orderStatus[orderHash];\\n\\n                if (orderStatus.startedAt > 0) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n\\n                // Update the order status as not valid and cancelled.\\n                orderStatus.isValidated = false;\\n                orderStatus.isCancelled = true;\\n\\n                // Emit an event signifying that the order has been cancelled.\\n                emit OrderCancelled(orderHash, offerer);\\n\\n                // Increment counter inside body of loop for gas efficiency.\\n                ++i;\\n            }\\n        }\\n\\n        // Return a boolean indicating that orders were successfully cancelled.\\n        cancelled = true;\\n    }\\n\\n    function _validate(Order[] calldata orders)\\n        internal\\n        returns (bool validated)\\n    {\\n        // Ensure that the reentrancy guard is not currently set.\\n        _assertNonReentrant();\\n\\n        // Declare variables outside of the loop.\\n        OrderStatus storage orderStatus;\\n        bytes32 orderHash;\\n        address offerer;\\n\\n        // Skip overflow check as for loop is indexed starting at zero.\\n        unchecked {\\n            // Read length of the orders array from memory and place on stack.\\n            uint256 totalOrders = orders.length;\\n\\n            // Iterate over each order.\\n            for (uint256 i = 0; i < totalOrders; ) {\\n                // Retrieve the order.\\n                Order calldata order = orders[i];\\n\\n                // Retrieve the order parameters.\\n                OrderParameters calldata orderParameters = order.parameters;\\n\\n                // Move offerer from memory to the stack.\\n                offerer = orderParameters.offerer;\\n\\n                // Get current counter & use it w/ params to derive order hash.\\n                orderHash = _deriveOrderHash(\\n                    OrderParameters(\\n                        offerer,\\n                        orderParameters.token,\\n                        orderParameters.identifier,\\n                        orderParameters.currency,\\n                        orderParameters.artist,\\n                        orderParameters.platform,\\n                        orderParameters.startTime,\\n                        orderParameters.endTime,\\n                        orderParameters.duration,\\n                        orderParameters.periods,\\n                        orderParameters.amount,\\n                        orderParameters.ratio,\\n                        orderParameters.royalty,\\n                        orderParameters.fee,\\n                        orderParameters.withdrawFee,\\n                        orderParameters.salt,\\n                        orderParameters.conduitKey\\n                    ),\\n                    _getCounter(orderParameters.offerer)\\n                );\\n\\n                // Retrieve the order status using the derived order hash.\\n                orderStatus = _orderStatus[orderHash];\\n\\n                // Ensure order is fillable and retrieve the filled amount.\\n                _verifyOrderStatus(\\n                    orderHash,\\n                    orderStatus,\\n                    true, // Signifies that partially filled orders are valid.\\n                    true // Signifies to revert if the order is invalid.\\n                );\\n\\n                // If the order has not already been validated...\\n                if (!orderStatus.isValidated) {\\n                    // Verify the supplied signature.\\n                    _verifySignature(offerer, orderHash, order.signature);\\n\\n                    // Update order status to mark the order as valid.\\n                    orderStatus.isValidated = true;\\n\\n                    // Emit an event signifying the order has been validated.\\n                    emit OrderValidated(\\n                        orderHash,\\n                        offerer\\n                    );\\n                }\\n\\n                // Increment counter inside body of the loop for gas efficiency.\\n                ++i;\\n            }\\n        }\\n\\n        // Return a boolean indicating that orders were successfully validated.\\n        validated = true;\\n    }\\n\\n    function _getOrderStatus(bytes32 orderHash)\\n        internal\\n        view\\n        returns (\\n            bool isValidated,\\n            bool isCancelled,\\n            bool isFinalized,\\n            bool isBroken,\\n            address fulfiller,\\n            uint256 startedAt,\\n            uint256 shadowId,\\n            uint256 paidTimes\\n        )\\n    {\\n        OrderStatus storage orderStatus = _orderStatus[orderHash];\\n        return (\\n            orderStatus.isValidated,\\n            orderStatus.isCancelled,\\n            orderStatus.isFinalized,\\n            orderStatus.isBroken,\\n            orderStatus.fulfiller,\\n            orderStatus.startedAt,\\n            orderStatus.shadowId,\\n            orderStatus.paidTimes\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x4076a1d39f964a1c535665dcacbe5a04e9b001273db63b3846bf5eec9c9e88bd\",\"license\":\"MIT\"},\"contracts/lib/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ReentrancyErrors } from \\\"../interfaces/ReentrancyErrors.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title ReentrancyGuard\\n * @author 0age\\n * @notice ReentrancyGuard contains a storage variable and related functionality\\n *         for protecting against reentrancy.\\n */\\ncontract ReentrancyGuard is ReentrancyErrors {\\n    // Prevent reentrant calls on protected functions.\\n    uint256 private _reentrancyGuard;\\n\\n    /**\\n     * @dev Initialize the reentrancy guard during deployment.\\n     */\\n    constructor() {\\n        // Initialize the reentrancy guard in a cleared state.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to ensure that the sentinel value for the\\n     *      reentrancy guard is not currently set and, if not, to set the\\n     *      sentinel value for the reentrancy guard.\\n     */\\n    function _setReentrancyGuard() internal {\\n        // Ensure that the reentrancy guard is not already set.\\n        _assertNonReentrant();\\n\\n        // Set the reentrancy guard.\\n        _reentrancyGuard = _ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to unset the reentrancy guard sentinel value.\\n     */\\n    function _clearReentrancyGuard() internal {\\n        // Clear the reentrancy guard.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal view function to ensure that the sentinel value for the\\n            reentrancy guard is not currently set.\\n     */\\n    function _assertNonReentrant() internal view {\\n        // Ensure that the reentrancy guard is not currently set.\\n        if (_reentrancyGuard != _NOT_ENTERED) {\\n            revert NoReentrantCalls();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa52711c788a24071f8a872ea5ee3030f0f8f592abf8f0d5577707e585a7628d5\",\"license\":\"MIT\"},\"contracts/lib/Shadow.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { IERC4907A } from \\\"erc721a/contracts/extensions/IERC4907A.sol\\\";\\n\\ninterface IMintBurnableERC4907 {\\n    function mint(address to, address tokenAddress, uint256 tokenId) external returns (uint256);\\n    function burn(uint256 tokenId) external;\\n}\\n\\ncontract Shadow {\\n    \\n    address public immutable shadowToken;\\n\\n    constructor(address _token) {\\n        shadowToken = _token;\\n    }\\n\\n    function _mintToken(\\n        address to,\\n        address token,\\n        uint256 identifier,\\n        uint256 duration\\n    ) internal returns (uint256) {\\n        uint256 tid = IMintBurnableERC4907(shadowToken).mint(address(this), token, identifier);\\n        IERC4907A(shadowToken).setUser(tid, to, uint64(duration + block.timestamp));\\n        return tid;\\n    }\\n\\n    function _extendToken(address to, uint256 tokenId, uint256 expires) internal {\\n        IERC4907A(shadowToken).setUser(tokenId, to, uint64(expires));\\n    }\\n\\n    function _burnToken(uint256 tokenId) internal {\\n        IMintBurnableERC4907(shadowToken).burn(tokenId);\\n    }\\n}\",\"keccak256\":\"0x71b95c35b423d619bb4583e8a39c0227fd730c090d4b7071e79c8cac87910e8d\",\"license\":\"MIT\"},\"contracts/lib/SignatureVerification.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { EIP1271Interface } from \\\"../interfaces/EIP1271Interface.sol\\\";\\n\\nimport {\\n    SignatureVerificationErrors\\n} from \\\"../interfaces/SignatureVerificationErrors.sol\\\";\\n\\nimport { LowLevelHelpers } from \\\"./LowLevelHelpers.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title SignatureVerification\\n * @author 0age\\n * @notice SignatureVerification contains logic for verifying signatures.\\n */\\ncontract SignatureVerification is SignatureVerificationErrors, LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied signer.\\n     *\\n     * @param signer    The signer for the order.\\n     * @param digest    The digest to verify the signature against.\\n     * @param signature A signature from the signer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _assertValidSignature(\\n        address signer,\\n        bytes32 digest,\\n        bytes memory signature\\n    ) internal view {\\n        // Declare value for ecrecover equality or 1271 call success status.\\n        bool success;\\n\\n        // Utilize assembly to perform optimized signature verification check.\\n        assembly {\\n            // Ensure that first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Declare value for v signature parameter.\\n            let v\\n\\n            // Get the length of the signature.\\n            let signatureLength := mload(signature)\\n\\n            // Get the pointer to the value preceding the signature length.\\n            // This will be used for temporary memory overrides - either the\\n            // signature head for isValidSignature or the digest for ecrecover.\\n            let wordBeforeSignaturePtr := sub(signature, OneWord)\\n\\n            // Cache the current value behind the signature to restore it later.\\n            let cachedWordBeforeSignature := mload(wordBeforeSignaturePtr)\\n\\n            // Declare lenDiff + recoveredSigner scope to manage stack pressure.\\n            {\\n                // Take the difference between the max ECDSA signature length\\n                // and the actual signature length. Overflow desired for any\\n                // values > 65. If the diff is not 0 or 1, it is not a valid\\n                // ECDSA signature - move on to EIP1271 check.\\n                let lenDiff := sub(ECDSA_MaxLength, signatureLength)\\n\\n                // Declare variable for recovered signer.\\n                let recoveredSigner\\n\\n                // If diff is 0 or 1, it may be an ECDSA signature.\\n                // Try to recover signer.\\n                if iszero(gt(lenDiff, 1)) {\\n                    // Read the signature `s` value.\\n                    let originalSignatureS := mload(\\n                        add(signature, ECDSA_signature_s_offset)\\n                    )\\n\\n                    // Read the first byte of the word after `s`. If the\\n                    // signature is 65 bytes, this will be the real `v` value.\\n                    // If not, it will need to be modified - doing it this way\\n                    // saves an extra condition.\\n                    v := byte(\\n                        0,\\n                        mload(add(signature, ECDSA_signature_v_offset))\\n                    )\\n\\n                    // If lenDiff is 1, parse 64-byte signature as ECDSA.\\n                    if lenDiff {\\n                        // Extract yParity from highest bit of vs and add 27 to\\n                        // get v.\\n                        v := add(\\n                            shr(MaxUint8, originalSignatureS),\\n                            Signature_lower_v\\n                        )\\n\\n                        // Extract canonical s from vs, all but the highest bit.\\n                        // Temporarily overwrite the original `s` value in the\\n                        // signature.\\n                        mstore(\\n                            add(signature, ECDSA_signature_s_offset),\\n                            and(\\n                                originalSignatureS,\\n                                EIP2098_allButHighestBitMask\\n                            )\\n                        )\\n                    }\\n                    // Temporarily overwrite the signature length with `v` to\\n                    // conform to the expected input for ecrecover.\\n                    mstore(signature, v)\\n\\n                    // Temporarily overwrite the word before the length with\\n                    // `digest` to conform to the expected input for ecrecover.\\n                    mstore(wordBeforeSignaturePtr, digest)\\n\\n                    // Attempt to recover the signer for the given signature. Do\\n                    // not check the call status as ecrecover will return a null\\n                    // address if the signature is invalid.\\n                    pop(\\n                        staticcall(\\n                            gas(),\\n                            Ecrecover_precompile, // Call ecrecover precompile.\\n                            wordBeforeSignaturePtr, // Use data memory location.\\n                            Ecrecover_args_size, // Size of digest, v, r, and s.\\n                            0, // Write result to scratch space.\\n                            OneWord // Provide size of returned result.\\n                        )\\n                    )\\n\\n                    // Restore cached word before signature.\\n                    mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n\\n                    // Restore cached signature length.\\n                    mstore(signature, signatureLength)\\n\\n                    // Restore cached signature `s` value.\\n                    mstore(\\n                        add(signature, ECDSA_signature_s_offset),\\n                        originalSignatureS\\n                    )\\n\\n                    // Read the recovered signer from the buffer given as return\\n                    // space for ecrecover.\\n                    recoveredSigner := mload(0)\\n                }\\n\\n                // Set success to true if the signature provided was a valid\\n                // ECDSA signature and the signer is not the null address. Use\\n                // gt instead of direct as success is used outside of assembly.\\n                success := and(eq(signer, recoveredSigner), gt(signer, 0))\\n            }\\n\\n            // If the signature was not verified with ecrecover, try EIP1271.\\n            if iszero(success) {\\n                // Temporarily overwrite the word before the signature length\\n                // and use it as the head of the signature input to\\n                // `isValidSignature`, which has a value of 64.\\n                mstore(\\n                    wordBeforeSignaturePtr,\\n                    EIP1271_isValidSignature_signature_head_offset\\n                )\\n\\n                // Get pointer to use for the selector of `isValidSignature`.\\n                let selectorPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_selector_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the selector pointer.\\n                let cachedWordOverwrittenBySelector := mload(selectorPtr)\\n\\n                // Get pointer to use for `digest` input to `isValidSignature`.\\n                let digestPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_digest_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the digest pointer.\\n                let cachedWordOverwrittenByDigest := mload(digestPtr)\\n\\n                // Write the selector first, since it overlaps the digest.\\n                mstore(selectorPtr, EIP1271_isValidSignature_selector)\\n\\n                // Next, write the digest.\\n                mstore(digestPtr, digest)\\n\\n                // Call signer with `isValidSignature` to validate signature.\\n                success := staticcall(\\n                    gas(),\\n                    signer,\\n                    selectorPtr,\\n                    add(\\n                        signatureLength,\\n                        EIP1271_isValidSignature_calldata_baseLength\\n                    ),\\n                    0,\\n                    OneWord\\n                )\\n\\n                // Determine if the signature is valid on successful calls.\\n                if success {\\n                    // If first word of scratch space does not contain EIP-1271\\n                    // signature selector, revert.\\n                    if iszero(eq(mload(0), EIP1271_isValidSignature_selector)) {\\n                        // Revert with bad 1271 signature if signer has code.\\n                        if extcodesize(signer) {\\n                            // Bad contract signature.\\n                            mstore(0, BadContractSignature_error_signature)\\n                            revert(0, BadContractSignature_error_length)\\n                        }\\n\\n                        // Check if signature length was invalid.\\n                        if gt(sub(ECDSA_MaxLength, signatureLength), 1) {\\n                            // Revert with generic invalid signature error.\\n                            mstore(0, InvalidSignature_error_signature)\\n                            revert(0, InvalidSignature_error_length)\\n                        }\\n\\n                        // Check if v was invalid.\\n                        if iszero(\\n                            byte(v, ECDSA_twentySeventhAndTwentyEighthBytesSet)\\n                        ) {\\n                            // Revert with invalid v value.\\n                            mstore(0, BadSignatureV_error_signature)\\n                            mstore(BadSignatureV_error_offset, v)\\n                            revert(0, BadSignatureV_error_length)\\n                        }\\n\\n                        // Revert with generic invalid signer error message.\\n                        mstore(0, InvalidSigner_error_signature)\\n                        revert(0, InvalidSigner_error_length)\\n                    }\\n                }\\n\\n                // Restore the cached values overwritten by selector, digest and\\n                // signature head.\\n                mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n                mstore(selectorPtr, cachedWordOverwrittenBySelector)\\n                mstore(digestPtr, cachedWordOverwrittenByDigest)\\n            }\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Revert and pass reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with error indicating bad contract signature.\\n            assembly {\\n                mstore(0, BadContractSignature_error_signature)\\n                revert(0, BadContractSignature_error_length)\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9af8a720f3f6aac730d7896484f407ecea62105c1c9dc45666273d51555a0f42\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport \\\"./TokenTransferrerConstants.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { ConduitBatch1155Transfer } from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title TokenTransferrer\\n * @author 0age\\n * @custom:coauthor d1ll0n\\n * @custom:coauthor transmissions11\\n * @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\\n *         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\\n *         by conduits deployed by the ConduitController. Use great caution when\\n *         considering these functions for use in other codebases, as there are\\n *         significant side effects and edge cases that need to be thoroughly\\n *         understood and carefully addressed.\\n */\\ncontract TokenTransferrer is TokenTransferrerErrors {\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set on the\\n     *      contract performing the transfer.\\n     *\\n     * @param token      The ERC20 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC20Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\\n            mstore(ERC20_transferFrom_from_ptr, from)\\n            mstore(ERC20_transferFrom_to_ptr, to)\\n            mstore(ERC20_transferFrom_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transferFrom_sig_ptr,\\n                ERC20_transferFrom_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                from\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            from\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    function _performSelfERC20Transfer(\\n        address token,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transfer_sig_ptr, ERC20_transfer_signature)\\n            mstore(ERC20_transfer_to_ptr, to)\\n            mstore(ERC20_transfer_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transfer_sig_ptr,\\n                ERC20_transfer_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                address()\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            address()\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer an ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer. Note that this function does\\n     *      not check whether the receiver can accept the ERC721 token (i.e. it\\n     *      does not use `safeTransferFrom`).\\n     *\\n     * @param token      The ERC721 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     */\\n    function _performERC721Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC721 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data to memory starting with function selector.\\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\\n            mstore(ERC721_transferFrom_from_ptr, from)\\n            mstore(ERC721_transferFrom_to_ptr, to)\\n            mstore(ERC721_transferFrom_id_ptr, identifier)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC721_transferFrom_sig_ptr,\\n                ERC721_transferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer.\\n     *\\n     * @param token      The ERC1155 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The id to transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC1155Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The following memory slots will be used when populating call data\\n            // for the transfer; read the values and restore them later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n            let slot0x80 := mload(Slot0x80)\\n            let slot0xA0 := mload(Slot0xA0)\\n            let slot0xC0 := mload(Slot0xC0)\\n\\n            // Write call data into memory, beginning with function selector.\\n            mstore(\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_signature\\n            )\\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\\n            mstore(\\n                ERC1155_safeTransferFrom_data_offset_ptr,\\n                ERC1155_safeTransferFrom_data_length_offset\\n            )\\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer. NOTE: this function is not\\n     *      memory-safe; it will overwrite existing memory, restore the free\\n     *      memory pointer to the default value, and overwrite the zero slot.\\n     *      This function should only be called once memory is no longer\\n     *      required and when uninitialized arrays are not utilized, and memory\\n     *      should be considered fully corrupted (aside from the existence of a\\n     *      default-value free memory pointer) after calling this function.\\n     *\\n     * @param batchTransfers The group of 1155 batch transfers to perform.\\n     */\\n    function _performERC1155BatchTransfers(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) internal {\\n        // Utilize assembly to perform optimized batch 1155 transfers.\\n        assembly {\\n            let len := batchTransfers.length\\n            // Pointer to first head in the array, which is offset to the struct\\n            // at each index. This gets incremented after each loop to avoid\\n            // multiplying by 32 to get the offset for each element.\\n            let nextElementHeadPtr := batchTransfers.offset\\n\\n            // Pointer to beginning of the head of the array. This is the\\n            // reference position each offset references. It's held static to\\n            // let each loop calculate the data position for an element.\\n            let arrayHeadPtr := nextElementHeadPtr\\n\\n            // Write the function selector, which will be reused for each call:\\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\n            mstore(\\n                ConduitBatch1155Transfer_from_offset,\\n                ERC1155_safeBatchTransferFrom_signature\\n            )\\n\\n            // Iterate over each batch transfer.\\n            for {\\n                let i := 0\\n            } lt(i, len) {\\n                i := add(i, 1)\\n            } {\\n                // Read the offset to the beginning of the element and add\\n                // it to pointer to the beginning of the array head to get\\n                // the absolute position of the element in calldata.\\n                let elementPtr := add(\\n                    arrayHeadPtr,\\n                    calldataload(nextElementHeadPtr)\\n                )\\n\\n                // Retrieve the token from calldata.\\n                let token := calldataload(elementPtr)\\n\\n                // If the token has no code, revert.\\n                if iszero(extcodesize(token)) {\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Get the total number of supplied ids.\\n                let idsLength := calldataload(\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\\n                )\\n\\n                // Determine the expected offset for the amounts array.\\n                let expectedAmountsOffset := add(\\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\\n                    mul(idsLength, OneWord)\\n                )\\n\\n                // Validate struct encoding.\\n                let invalidEncoding := iszero(\\n                    and(\\n                        // ids.length == amounts.length\\n                        eq(\\n                            idsLength,\\n                            calldataload(add(elementPtr, expectedAmountsOffset))\\n                        ),\\n                        and(\\n                            // ids_offset == 0xa0\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatch1155Transfer_ids_head_offset\\n                                    )\\n                                ),\\n                                ConduitBatch1155Transfer_ids_length_offset\\n                            ),\\n                            // amounts_offset == 0xc0 + ids.length*32\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatchTransfer_amounts_head_offset\\n                                    )\\n                                ),\\n                                expectedAmountsOffset\\n                            )\\n                        )\\n                    )\\n                )\\n\\n                // Revert with an error if the encoding is not valid.\\n                if invalidEncoding {\\n                    mstore(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_selector\\n                    )\\n                    revert(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_length\\n                    )\\n                }\\n\\n                // Update the offset position for the next loop\\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\\n\\n                // Copy the first section of calldata (before dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\\n                    ConduitBatch1155Transfer_usable_head_size\\n                )\\n\\n                // Determine size of calldata required for ids and amounts. Note\\n                // that the size includes both lengths as well as the data.\\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\\n\\n                // Update the offset for the data array in memory.\\n                mstore(\\n                    BatchTransfer1155Params_data_head_ptr,\\n                    add(\\n                        BatchTransfer1155Params_ids_length_offset,\\n                        idsAndAmountsSize\\n                    )\\n                )\\n\\n                // Set the length of the data array in memory to zero.\\n                mstore(\\n                    add(\\n                        BatchTransfer1155Params_data_length_basePtr,\\n                        idsAndAmountsSize\\n                    ),\\n                    0\\n                )\\n\\n                // Determine the total calldata size for the call to transfer.\\n                let transferDataSize := add(\\n                    BatchTransfer1155Params_calldata_baseSize,\\n                    idsAndAmountsSize\\n                )\\n\\n                // Copy second section of calldata (including dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ids_length_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\\n                    idsAndAmountsSize\\n                )\\n\\n                // Perform the call to transfer 1155 tokens.\\n                let success := call(\\n                    gas(),\\n                    token,\\n                    0,\\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\\n                    transferDataSize, // Location of the length of callData.\\n                    0,\\n                    0\\n                )\\n\\n                // If the transfer reverted:\\n                if iszero(success) {\\n                    // If it returned a message, bubble it up as long as\\n                    // sufficient gas remains to do so:\\n                    if returndatasize() {\\n                        // Ensure that sufficient gas is available to copy\\n                        // returndata while expanding memory where necessary.\\n                        // Start by computing word size of returndata and\\n                        // allocated memory. Round up to the nearest full word.\\n                        let returnDataWords := div(\\n                            add(returndatasize(), AlmostOneWord),\\n                            OneWord\\n                        )\\n\\n                        // Note: use transferDataSize in place of msize() to\\n                        // work around a Yul warning that prevents accessing\\n                        // msize directly when the IR pipeline is activated.\\n                        // The free memory pointer is not used here because\\n                        // this function does almost all memory management\\n                        // manually and does not update it, and transferDataSize\\n                        // should be the largest memory value used (unless a\\n                        // previous batch was larger).\\n                        let msizeWords := div(transferDataSize, OneWord)\\n\\n                        // Next, compute the cost of the returndatacopy.\\n                        let cost := mul(CostPerWord, returnDataWords)\\n\\n                        // Then, compute cost of new memory allocation.\\n                        if gt(returnDataWords, msizeWords) {\\n                            cost := add(\\n                                cost,\\n                                add(\\n                                    mul(\\n                                        sub(returnDataWords, msizeWords),\\n                                        CostPerWord\\n                                    ),\\n                                    div(\\n                                        sub(\\n                                            mul(\\n                                                returnDataWords,\\n                                                returnDataWords\\n                                            ),\\n                                            mul(msizeWords, msizeWords)\\n                                        ),\\n                                        MemoryExpansionCoefficient\\n                                    )\\n                                )\\n                            )\\n                        }\\n\\n                        // Finally, add a small constant and compare to gas\\n                        // remaining; bubble up the revert data if enough gas is\\n                        // still available.\\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\\n                            // Copy returndata to memory; overwrite existing.\\n                            returndatacopy(0, 0, returndatasize())\\n\\n                            // Revert with memory region containing returndata.\\n                            revert(0, returndatasize())\\n                        }\\n                    }\\n\\n                    // Set the error signature.\\n                    mstore(\\n                        0,\\n                        ERC1155BatchTransferGenericFailure_error_signature\\n                    )\\n\\n                    // Write the token.\\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\\n\\n                    // Increase the offset to ids by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_ids_head_ptr,\\n                        ERC1155BatchTransferGenericFailure_ids_offset\\n                    )\\n\\n                    // Increase the offset to amounts by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_amounts_head_ptr,\\n                        add(\\n                            OneWord,\\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\\n                        )\\n                    )\\n\\n                    // Return modified region. The total size stays the same as\\n                    // `token` uses the same number of bytes as `data.length`.\\n                    revert(0, transferDataSize)\\n                }\\n            }\\n\\n            // Reset the free memory pointer to the default value; memory must\\n            // be assumed to be dirtied and not reused from this point forward.\\n            // Also note that the zero slot is not reset to zero, meaning empty\\n            // arrays cannot be safely created or utilized until it is restored.\\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9be626e5928b95748e08259c63a6168d3e0b3e490f2f340491b8afd546cbbcd1\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrerConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\nuint256 constant Slot0xC0 = 0xc0;\\n\\n// abi.encodeWithSignature(\\\"transferFrom(address,address,uint256)\\\")\\nuint256 constant ERC20_transferFrom_signature = (\\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"transfer(address,uint256)\\\")\\nuint256 constant ERC20_transfer_signature = (\\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transfer_sig_ptr = 0x0;\\nuint256 constant ERC20_transfer_to_ptr = 0x04;\\nuint256 constant ERC20_transfer_amount_ptr = 0x24;\\nuint256 constant ERC20_transfer_length = 0x44; // 4 + 32 * 2 == 68\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeTransferFrom(address,address,uint256,uint256,bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeTransferFrom_signature = (\\n    0xf242432a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\\n);\\n\\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\\n);\\n\\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\n// abi.encodeWithSignature(\\n//     \\\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\\\"\\n// )\\nuint256 constant TokenTransferGenericFailure_error_signature = (\\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\\n\\n// 4 + 32 * 5 == 164\\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\\n\\n// abi.encodeWithSignature(\\n//     \\\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\\\"\\n// )\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\\n    0x9889192300000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\\n\\n// 4 + 32 * 4 == 132\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200;\\n\\n// Values are offset by 32 bytes in order to write the token to the beginning\\n// in the event of a revert\\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x64;\\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0xc4;\\nuint256 constant BatchTransfer1155Params_calldata_baseSize = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\\n\\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\\n\\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\\n\\n// Note: abbreviated version of above constant to adhere to line length limit.\\nuint256 constant ConduitBatchTransfer_amounts_head_offset = 0x80;\\n\\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\\n    0xafc445e200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\\nuint256 constant ERC1155BatchTransferGenericFailure_ids_offset = 0xc0;\\n\",\"keccak256\":\"0x002bea8dcc1d37a0cdd6d1c25f536a1a13e01e1fb32b7bbb2a3016425e40b672\",\"license\":\"MIT\"},\"contracts/lib/Verifiers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderStatus } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { Assertions } from \\\"./Assertions.sol\\\";\\n\\nimport { SignatureVerification } from \\\"./SignatureVerification.sol\\\";\\n\\n/**\\n * @title Verifiers\\n * @author 0age\\n * @notice Verifiers contains functions for performing verifications.\\n */\\ncontract Verifiers is Assertions, SignatureVerification {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Assertions(conduitController) {}\\n\\n    /**\\n     * @dev Internal view function to ensure that the current time falls within\\n     *      an order's valid timespan.\\n     *\\n     * @param startTime       The time at which the order becomes active.\\n     * @param endTime         The time at which the order becomes inactive.\\n     * @param revertOnInvalid A boolean indicating whether to revert if the\\n     *                        order is not active.\\n     *\\n     * @return valid A boolean indicating whether the order is active.\\n     */\\n    function _verifyTime(\\n        uint256 startTime,\\n        uint256 endTime,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        // Revert if order's timespan hasn't started yet or has already ended.\\n        if (startTime > block.timestamp || endTime <= block.timestamp) {\\n            // Only revert if revertOnInvalid has been supplied as true.\\n            if (revertOnInvalid) {\\n                revert InvalidTime();\\n            }\\n\\n            // Return false as the order is invalid.\\n            return false;\\n        }\\n\\n        // Return true as the order time is valid.\\n        valid = true;\\n    }\\n\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied offerer. Note that in cases where a 64 or 65 byte signature\\n     *      is supplied, only standard ECDSA signatures that recover to a\\n     *      non-zero address are supported.\\n     *\\n     * @param offerer   The offerer for the order.\\n     * @param orderHash The order hash.\\n     * @param signature A signature from the offerer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _verifySignature(\\n        address offerer,\\n        bytes32 orderHash,\\n        bytes memory signature\\n    ) internal view {\\n        // Skip signature verification if the offerer is the caller.\\n        if (offerer == msg.sender) {\\n            return;\\n        }\\n\\n        // Derive EIP-712 digest using the domain separator and the order hash.\\n        bytes32 digest = _deriveEIP712Digest(_domainSeparator(), orderHash);\\n\\n        // Ensure that the signature for the digest is valid for the offerer.\\n        _assertValidSignature(offerer, digest, signature);\\n    }\\n\\n    function _verifyOrderStatus(\\n        bytes32 orderHash,\\n        OrderStatus storage orderStatus,\\n        bool firstPay,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        if (orderStatus.isCancelled) {\\n            if (revertOnInvalid) {\\n                revert OrderIsCancelled(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (orderStatus.isFinalized) {\\n            if (revertOnInvalid) {\\n                revert OrderAlreadyFinalized(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (firstPay) {\\n            if (orderStatus.paidTimes > 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        } else {\\n            if (orderStatus.paidTimes == 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderNotStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        }\\n\\n        valid = true;\\n    }\\n}\\n\",\"keccak256\":\"0x4166159d504ffb5810fbad9c64445fd23659f5b19e84a61dde67f8760bcd1255\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7723,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":5403,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":6907,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"_orderStatus","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_struct(OrderStatus)5389_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OrderStatus)","numberOfBytes":"32","value":"t_struct(OrderStatus)5389_storage"},"t_struct(OrderStatus)5389_storage":{"encoding":"inplace","label":"struct OrderStatus","members":[{"astId":5374,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"isValidated","offset":0,"slot":"0","type":"t_bool"},{"astId":5376,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"isCancelled","offset":1,"slot":"0","type":"t_bool"},{"astId":5378,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"isFinalized","offset":2,"slot":"0","type":"t_bool"},{"astId":5380,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"isBroken","offset":3,"slot":"0","type":"t_bool"},{"astId":5382,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"fulfiller","offset":4,"slot":"0","type":"t_address"},{"astId":5384,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"startedAt","offset":0,"slot":"1","type":"t_uint256"},{"astId":5386,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"shadowId","offset":0,"slot":"2","type":"t_uint256"},{"astId":5388,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"paidTimes","offset":0,"slot":"3","type":"t_uint256"}],"numberOfBytes":"128"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NoReentrantCalls","type":"error"}],"devdoc":{"author":"0age","errors":{"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}]},"kind":"dev","methods":{"constructor":{"details":"Initialize the reentrancy guard during deployment."}},"title":"ReentrancyGuard","version":1},"evm":{"bytecode":{"functionDebugData":{"@_7732":{"entryPoint":null,"id":7732,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b506001600055603f8060226000396000f3fe6080604052600080fdfea264697066735822122050069d5689d9f49dff3e06bdba04e8fc56f45349beb6372c642e5e55836b712464736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x3F DUP1 PUSH1 0x22 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP MOD SWAP14 JUMP DUP10 0xD9 DELEGATECALL SWAP14 SELFDESTRUCT RETURNDATACOPY MOD 0xBD 0xBA DIV 0xE8 0xFC JUMP DELEGATECALL MSTORE8 0x49 0xBE 0xB6 CALLDATACOPY 0x2C PUSH5 0x2E5E55836B PUSH18 0x2464736F6C634300080E0033000000000000 ","sourceMap":"347:1381:42:-:0;;;571:125;;;;;;;;;-1:-1:-1;2345:1:33;658:16:42;:31;347:1381;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea264697066735822122050069d5689d9f49dff3e06bdba04e8fc56f45349beb6372c642e5e55836b712464736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP MOD SWAP14 JUMP DUP10 0xD9 DELEGATECALL SWAP14 SELFDESTRUCT RETURNDATACOPY MOD 0xBD 0xBA DIV 0xE8 0xFC JUMP DELEGATECALL MSTORE8 0x49 0xBE 0xB6 CALLDATACOPY 0x2C PUSH5 0x2E5E55836B PUSH18 0x2464736F6C634300080E0033000000000000 ","sourceMap":"347:1381:42:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"22172","totalCost":"34772"},"internal":{"_assertNonReentrant()":"infinite","_clearReentrancyGuard()":"infinite","_setReentrancyGuard()":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initialize the reentrancy guard during deployment.\"}},\"title\":\"ReentrancyGuard\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ReentrancyGuard contains a storage variable and related functionality         for protecting against reentrancy.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ReentrancyErrors } from \\\"../interfaces/ReentrancyErrors.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title ReentrancyGuard\\n * @author 0age\\n * @notice ReentrancyGuard contains a storage variable and related functionality\\n *         for protecting against reentrancy.\\n */\\ncontract ReentrancyGuard is ReentrancyErrors {\\n    // Prevent reentrant calls on protected functions.\\n    uint256 private _reentrancyGuard;\\n\\n    /**\\n     * @dev Initialize the reentrancy guard during deployment.\\n     */\\n    constructor() {\\n        // Initialize the reentrancy guard in a cleared state.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to ensure that the sentinel value for the\\n     *      reentrancy guard is not currently set and, if not, to set the\\n     *      sentinel value for the reentrancy guard.\\n     */\\n    function _setReentrancyGuard() internal {\\n        // Ensure that the reentrancy guard is not already set.\\n        _assertNonReentrant();\\n\\n        // Set the reentrancy guard.\\n        _reentrancyGuard = _ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to unset the reentrancy guard sentinel value.\\n     */\\n    function _clearReentrancyGuard() internal {\\n        // Clear the reentrancy guard.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal view function to ensure that the sentinel value for the\\n            reentrancy guard is not currently set.\\n     */\\n    function _assertNonReentrant() internal view {\\n        // Ensure that the reentrancy guard is not currently set.\\n        if (_reentrancyGuard != _NOT_ENTERED) {\\n            revert NoReentrantCalls();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa52711c788a24071f8a872ea5ee3030f0f8f592abf8f0d5577707e585a7628d5\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7723,"contract":"contracts/lib/ReentrancyGuard.sol:ReentrancyGuard","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"notice":"ReentrancyGuard contains a storage variable and related functionality         for protecting against reentrancy.","version":1}}},"contracts/lib/Shadow.sol":{"IMintBurnableERC4907":{"abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(uint256)":"42966c68","mint(address,address,uint256)":"c6c3bbe6"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/Shadow.sol\":\"IMintBurnableERC4907\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/lib/Shadow.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { IERC4907A } from \\\"erc721a/contracts/extensions/IERC4907A.sol\\\";\\n\\ninterface IMintBurnableERC4907 {\\n    function mint(address to, address tokenAddress, uint256 tokenId) external returns (uint256);\\n    function burn(uint256 tokenId) external;\\n}\\n\\ncontract Shadow {\\n    \\n    address public immutable shadowToken;\\n\\n    constructor(address _token) {\\n        shadowToken = _token;\\n    }\\n\\n    function _mintToken(\\n        address to,\\n        address token,\\n        uint256 identifier,\\n        uint256 duration\\n    ) internal returns (uint256) {\\n        uint256 tid = IMintBurnableERC4907(shadowToken).mint(address(this), token, identifier);\\n        IERC4907A(shadowToken).setUser(tid, to, uint64(duration + block.timestamp));\\n        return tid;\\n    }\\n\\n    function _extendToken(address to, uint256 tokenId, uint256 expires) internal {\\n        IERC4907A(shadowToken).setUser(tokenId, to, uint64(expires));\\n    }\\n\\n    function _burnToken(uint256 tokenId) internal {\\n        IMintBurnableERC4907(shadowToken).burn(tokenId);\\n    }\\n}\",\"keccak256\":\"0x71b95c35b423d619bb4583e8a39c0227fd730c090d4b7071e79c8cac87910e8d\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"Shadow":{"abi":[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"shadowToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_7800":{"entryPoint":null,"id":7800,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":64,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:306:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:54","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:54"},"nodeType":"YulFunctionCall","src":"143:12:54"},"nodeType":"YulExpressionStatement","src":"143:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:54"},"nodeType":"YulFunctionCall","src":"112:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:54"},"nodeType":"YulFunctionCall","src":"108:32:54"},"nodeType":"YulIf","src":"105:52:54"},{"nodeType":"YulVariableDeclaration","src":"166:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:54"},"nodeType":"YulFunctionCall","src":"179:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:54"},"nodeType":"YulFunctionCall","src":"260:12:54"},"nodeType":"YulExpressionStatement","src":"260:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:54"},"nodeType":"YulFunctionCall","src":"239:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:54"},"nodeType":"YulFunctionCall","src":"235:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:54"},"nodeType":"YulFunctionCall","src":"224:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:54"},"nodeType":"YulFunctionCall","src":"214:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:54"},"nodeType":"YulFunctionCall","src":"207:50:54"},"nodeType":"YulIf","src":"204:70:54"},{"nodeType":"YulAssignment","src":"283:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:54"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:54","type":""}],"src":"14:290:54"}]},"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}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161013a38038061013a83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805160b261008860003960006031015260b26000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212209df3b51e6584e740f9e93d17829eb9f156ab2e60c5b5a27b5383488ea58e41a564736f6c634300080e0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x13A CODESIZE SUB DUP1 PUSH2 0x13A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xB2 PUSH2 0x88 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0x31 ADD MSTORE PUSH1 0xB2 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFFC5D97A EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x53 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 RETURN 0xB5 0x1E PUSH6 0x84E740F9E93D OR DUP3 SWAP15 0xB9 CALL JUMP 0xAB 0x2E PUSH1 0xC5 0xB5 LOG2 PUSH28 0x5383488EA58E41A564736F6C634300080E0033000000000000000000 ","sourceMap":"309:777:43:-:0;;;379:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;417:20:43;;;309:777;;14:290:54;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:54;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:54:o;:::-;309:777:43;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@shadowToken_7790":{"entryPoint":null,"id":7790,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:242:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:125:54","statements":[{"nodeType":"YulAssignment","src":"125:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:54"},"nodeType":"YulFunctionCall","src":"133:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"182:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"190:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"178:3:54"},"nodeType":"YulFunctionCall","src":"178:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:54"},"nodeType":"YulFunctionCall","src":"160:74:54"},"nodeType":"YulExpressionStatement","src":"160:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:54","type":""}],"src":"14:226:54"}]},"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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"7790":[{"length":32,"start":49}]},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212209df3b51e6584e740f9e93d17829eb9f156ab2e60c5b5a27b5383488ea58e41a564736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFFC5D97A EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x53 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 RETURN 0xB5 0x1E PUSH6 0x84E740F9E93D OR DUP3 SWAP15 0xB9 CALL JUMP 0xAB 0x2E PUSH1 0xC5 0xB5 LOG2 PUSH28 0x5383488EA58E41A564736F6C634300080E0033000000000000000000 ","sourceMap":"309:777:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:36;;;;;;;;190:42:54;178:55;;;160:74;;148:2;133:18;336:36:43;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"35600","executionCost":"infinite","totalCost":"infinite"},"external":{"shadowToken()":"infinite"},"internal":{"_burnToken(uint256)":"infinite","_extendToken(address,uint256,uint256)":"infinite","_mintToken(address,address,uint256,uint256)":"infinite"}},"methodIdentifiers":{"shadowToken()":"ffc5d97a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"shadowToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/Shadow.sol\":\"Shadow\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/lib/Shadow.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { IERC4907A } from \\\"erc721a/contracts/extensions/IERC4907A.sol\\\";\\n\\ninterface IMintBurnableERC4907 {\\n    function mint(address to, address tokenAddress, uint256 tokenId) external returns (uint256);\\n    function burn(uint256 tokenId) external;\\n}\\n\\ncontract Shadow {\\n    \\n    address public immutable shadowToken;\\n\\n    constructor(address _token) {\\n        shadowToken = _token;\\n    }\\n\\n    function _mintToken(\\n        address to,\\n        address token,\\n        uint256 identifier,\\n        uint256 duration\\n    ) internal returns (uint256) {\\n        uint256 tid = IMintBurnableERC4907(shadowToken).mint(address(this), token, identifier);\\n        IERC4907A(shadowToken).setUser(tid, to, uint64(duration + block.timestamp));\\n        return tid;\\n    }\\n\\n    function _extendToken(address to, uint256 tokenId, uint256 expires) internal {\\n        IERC4907A(shadowToken).setUser(tokenId, to, uint64(expires));\\n    }\\n\\n    function _burnToken(uint256 tokenId) internal {\\n        IMintBurnableERC4907(shadowToken).burn(tokenId);\\n    }\\n}\",\"keccak256\":\"0x71b95c35b423d619bb4583e8a39c0227fd730c090d4b7071e79c8cac87910e8d\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/SignatureVerification.sol":{"SignatureVerification":{"abi":[{"inputs":[],"name":"BadContractSignature","type":"error"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"}],"name":"BadSignatureV","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"}],"devdoc":{"author":"0age","errors":{"BadContractSignature()":[{"details":"Revert with an error when an EIP-1271 call to an account fails."}],"BadSignatureV(uint8)":[{"details":"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.","params":{"v":"The invalid v value."}}],"InvalidSignature()":[{"details":"Revert with an error when a signer cannot be recovered from the      supplied signature."}],"InvalidSigner()":[{"details":"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract."}]},"kind":"dev","methods":{},"title":"SignatureVerification","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212204c8b781a5e5476ebc69fff6d9df3f36391d3459157719f78140b4feca3f5405964736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C DUP12 PUSH25 0x1A5E5476EBC69FFF6D9DF3F36391D3459157719F78140B4FEC LOG3 CREATE2 BLOCKHASH MSIZE PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"456:10531:44:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212204c8b781a5e5476ebc69fff6d9df3f36391d3459157719f78140b4feca3f5405964736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C DUP12 PUSH25 0x1A5E5476EBC69FFF6D9DF3F36391D3459157719F78140B4FEC LOG3 CREATE2 BLOCKHASH MSIZE PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"456:10531:44:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"66","totalCost":"12666"},"internal":{"_assertValidSignature(address,bytes32,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SignatureVerification\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"SignatureVerification contains logic for verifying signatures.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/SignatureVerification.sol\":\"SignatureVerification\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/EIP1271Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface EIP1271Interface {\\n    function isValidSignature(bytes32 digest, bytes calldata signature)\\n        external\\n        view\\n        returns (bytes4);\\n}\",\"keccak256\":\"0xba82a40106e4565fda2909937d8ab23dc45622fead50d439ee09994d678828e0\",\"license\":\"MIT\"},\"contracts/interfaces/SignatureVerificationErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title SignatureVerificationErrors\\n * @author 0age\\n * @notice SignatureVerificationErrors contains all errors related to signature\\n *         verification.\\n */\\ninterface SignatureVerificationErrors {\\n    /**\\n     * @dev Revert with an error when a signature that does not contain a v\\n     *      value of 27 or 28 has been supplied.\\n     *\\n     * @param v The invalid v value.\\n     */\\n    error BadSignatureV(uint8 v);\\n\\n    /**\\n     * @dev Revert with an error when the signer recovered by the supplied\\n     *      signature does not match the offerer or an allowed EIP-1271 signer\\n     *      as specified by the offerer in the event they are a contract.\\n     */\\n    error InvalidSigner();\\n\\n    /**\\n     * @dev Revert with an error when a signer cannot be recovered from the\\n     *      supplied signature.\\n     */\\n    error InvalidSignature();\\n\\n    /**\\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\\n     */\\n    error BadContractSignature();\\n}\\n\",\"keccak256\":\"0xd0f5b26469ba6cd303e5ea9b53cf6b7c25cb00918097eb59a263678b51197381\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/LowLevelHelpers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title LowLevelHelpers\\n * @author 0age\\n * @notice LowLevelHelpers contains logic for performing various low-level\\n *         operations.\\n */\\ncontract LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to staticcall an arbitrary target with given\\n     *      calldata. Note that no data is written to memory and no contract\\n     *      size check is performed.\\n     *\\n     * @param target   The account to staticcall.\\n     * @param callData The calldata to supply when staticcalling the target.\\n     *\\n     * @return success The status of the staticcall to the target.\\n     */\\n    function _staticcall(address target, bytes memory callData)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        assembly {\\n            // Perform the staticcall.\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(callData, OneWord),\\n                mload(callData),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to revert and pass along the revert reason if\\n     *      data was returned by the last call and that the size of that data\\n     *      does not exceed the currently allocated memory size.\\n     */\\n    function _revertWithReasonIfOneIsReturned() internal view {\\n        assembly {\\n            // If it returned a message, bubble it up as long as sufficient gas\\n            // remains to do so:\\n            if returndatasize() {\\n                // Ensure that sufficient gas is available to copy returndata\\n                // while expanding memory where necessary. Start by computing\\n                // the word size of returndata and allocated memory.\\n                let returnDataWords := div(\\n                    add(returndatasize(), AlmostOneWord),\\n                    OneWord\\n                )\\n\\n                // Note: use the free memory pointer in place of msize() to work\\n                // around a Yul warning that prevents accessing msize directly\\n                // when the IR pipeline is activated.\\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\\n\\n                // Next, compute the cost of the returndatacopy.\\n                let cost := mul(CostPerWord, returnDataWords)\\n\\n                // Then, compute cost of new memory allocation.\\n                if gt(returnDataWords, msizeWords) {\\n                    cost := add(\\n                        cost,\\n                        add(\\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\\n                            div(\\n                                sub(\\n                                    mul(returnDataWords, returnDataWords),\\n                                    mul(msizeWords, msizeWords)\\n                                ),\\n                                MemoryExpansionCoefficient\\n                            )\\n                        )\\n                    )\\n                }\\n\\n                // Finally, add a small constant and compare to gas remaining;\\n                // bubble up the revert data if enough gas is still available.\\n                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                    // Copy returndata to memory; overwrite existing memory.\\n                    returndatacopy(0, 0, returndatasize())\\n\\n                    // Revert, specifying memory region with copied returndata.\\n                    revert(0, returndatasize())\\n                }\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to determine if the first word of returndata\\n     *      matches an expected magic value.\\n     *\\n     * @param expected The expected magic value.\\n     *\\n     * @return A boolean indicating whether the expected value matches the one\\n     *         located in the first word of returndata.\\n     */\\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\\n        // Declare a variable for the value held by the return data buffer.\\n        bytes4 result;\\n\\n        // Utilize assembly in order to read directly from returndata buffer.\\n        assembly {\\n            // Only put result on stack if return data is exactly one word.\\n            if eq(returndatasize(), OneWord) {\\n                // Copy the word directly from return data into scratch space.\\n                returndatacopy(0, 0, OneWord)\\n\\n                // Take value from scratch space and place it on the stack.\\n                result := mload(0)\\n            }\\n        }\\n\\n        // Return a boolean indicating whether expected and located value match.\\n        return result != expected;\\n    }\\n}\\n\",\"keccak256\":\"0x57700a6f8f18d1cdfc8492724ef3b9f89aa143382f13794489df70c1f3fc027c\",\"license\":\"MIT\"},\"contracts/lib/SignatureVerification.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { EIP1271Interface } from \\\"../interfaces/EIP1271Interface.sol\\\";\\n\\nimport {\\n    SignatureVerificationErrors\\n} from \\\"../interfaces/SignatureVerificationErrors.sol\\\";\\n\\nimport { LowLevelHelpers } from \\\"./LowLevelHelpers.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title SignatureVerification\\n * @author 0age\\n * @notice SignatureVerification contains logic for verifying signatures.\\n */\\ncontract SignatureVerification is SignatureVerificationErrors, LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied signer.\\n     *\\n     * @param signer    The signer for the order.\\n     * @param digest    The digest to verify the signature against.\\n     * @param signature A signature from the signer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _assertValidSignature(\\n        address signer,\\n        bytes32 digest,\\n        bytes memory signature\\n    ) internal view {\\n        // Declare value for ecrecover equality or 1271 call success status.\\n        bool success;\\n\\n        // Utilize assembly to perform optimized signature verification check.\\n        assembly {\\n            // Ensure that first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Declare value for v signature parameter.\\n            let v\\n\\n            // Get the length of the signature.\\n            let signatureLength := mload(signature)\\n\\n            // Get the pointer to the value preceding the signature length.\\n            // This will be used for temporary memory overrides - either the\\n            // signature head for isValidSignature or the digest for ecrecover.\\n            let wordBeforeSignaturePtr := sub(signature, OneWord)\\n\\n            // Cache the current value behind the signature to restore it later.\\n            let cachedWordBeforeSignature := mload(wordBeforeSignaturePtr)\\n\\n            // Declare lenDiff + recoveredSigner scope to manage stack pressure.\\n            {\\n                // Take the difference between the max ECDSA signature length\\n                // and the actual signature length. Overflow desired for any\\n                // values > 65. If the diff is not 0 or 1, it is not a valid\\n                // ECDSA signature - move on to EIP1271 check.\\n                let lenDiff := sub(ECDSA_MaxLength, signatureLength)\\n\\n                // Declare variable for recovered signer.\\n                let recoveredSigner\\n\\n                // If diff is 0 or 1, it may be an ECDSA signature.\\n                // Try to recover signer.\\n                if iszero(gt(lenDiff, 1)) {\\n                    // Read the signature `s` value.\\n                    let originalSignatureS := mload(\\n                        add(signature, ECDSA_signature_s_offset)\\n                    )\\n\\n                    // Read the first byte of the word after `s`. If the\\n                    // signature is 65 bytes, this will be the real `v` value.\\n                    // If not, it will need to be modified - doing it this way\\n                    // saves an extra condition.\\n                    v := byte(\\n                        0,\\n                        mload(add(signature, ECDSA_signature_v_offset))\\n                    )\\n\\n                    // If lenDiff is 1, parse 64-byte signature as ECDSA.\\n                    if lenDiff {\\n                        // Extract yParity from highest bit of vs and add 27 to\\n                        // get v.\\n                        v := add(\\n                            shr(MaxUint8, originalSignatureS),\\n                            Signature_lower_v\\n                        )\\n\\n                        // Extract canonical s from vs, all but the highest bit.\\n                        // Temporarily overwrite the original `s` value in the\\n                        // signature.\\n                        mstore(\\n                            add(signature, ECDSA_signature_s_offset),\\n                            and(\\n                                originalSignatureS,\\n                                EIP2098_allButHighestBitMask\\n                            )\\n                        )\\n                    }\\n                    // Temporarily overwrite the signature length with `v` to\\n                    // conform to the expected input for ecrecover.\\n                    mstore(signature, v)\\n\\n                    // Temporarily overwrite the word before the length with\\n                    // `digest` to conform to the expected input for ecrecover.\\n                    mstore(wordBeforeSignaturePtr, digest)\\n\\n                    // Attempt to recover the signer for the given signature. Do\\n                    // not check the call status as ecrecover will return a null\\n                    // address if the signature is invalid.\\n                    pop(\\n                        staticcall(\\n                            gas(),\\n                            Ecrecover_precompile, // Call ecrecover precompile.\\n                            wordBeforeSignaturePtr, // Use data memory location.\\n                            Ecrecover_args_size, // Size of digest, v, r, and s.\\n                            0, // Write result to scratch space.\\n                            OneWord // Provide size of returned result.\\n                        )\\n                    )\\n\\n                    // Restore cached word before signature.\\n                    mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n\\n                    // Restore cached signature length.\\n                    mstore(signature, signatureLength)\\n\\n                    // Restore cached signature `s` value.\\n                    mstore(\\n                        add(signature, ECDSA_signature_s_offset),\\n                        originalSignatureS\\n                    )\\n\\n                    // Read the recovered signer from the buffer given as return\\n                    // space for ecrecover.\\n                    recoveredSigner := mload(0)\\n                }\\n\\n                // Set success to true if the signature provided was a valid\\n                // ECDSA signature and the signer is not the null address. Use\\n                // gt instead of direct as success is used outside of assembly.\\n                success := and(eq(signer, recoveredSigner), gt(signer, 0))\\n            }\\n\\n            // If the signature was not verified with ecrecover, try EIP1271.\\n            if iszero(success) {\\n                // Temporarily overwrite the word before the signature length\\n                // and use it as the head of the signature input to\\n                // `isValidSignature`, which has a value of 64.\\n                mstore(\\n                    wordBeforeSignaturePtr,\\n                    EIP1271_isValidSignature_signature_head_offset\\n                )\\n\\n                // Get pointer to use for the selector of `isValidSignature`.\\n                let selectorPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_selector_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the selector pointer.\\n                let cachedWordOverwrittenBySelector := mload(selectorPtr)\\n\\n                // Get pointer to use for `digest` input to `isValidSignature`.\\n                let digestPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_digest_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the digest pointer.\\n                let cachedWordOverwrittenByDigest := mload(digestPtr)\\n\\n                // Write the selector first, since it overlaps the digest.\\n                mstore(selectorPtr, EIP1271_isValidSignature_selector)\\n\\n                // Next, write the digest.\\n                mstore(digestPtr, digest)\\n\\n                // Call signer with `isValidSignature` to validate signature.\\n                success := staticcall(\\n                    gas(),\\n                    signer,\\n                    selectorPtr,\\n                    add(\\n                        signatureLength,\\n                        EIP1271_isValidSignature_calldata_baseLength\\n                    ),\\n                    0,\\n                    OneWord\\n                )\\n\\n                // Determine if the signature is valid on successful calls.\\n                if success {\\n                    // If first word of scratch space does not contain EIP-1271\\n                    // signature selector, revert.\\n                    if iszero(eq(mload(0), EIP1271_isValidSignature_selector)) {\\n                        // Revert with bad 1271 signature if signer has code.\\n                        if extcodesize(signer) {\\n                            // Bad contract signature.\\n                            mstore(0, BadContractSignature_error_signature)\\n                            revert(0, BadContractSignature_error_length)\\n                        }\\n\\n                        // Check if signature length was invalid.\\n                        if gt(sub(ECDSA_MaxLength, signatureLength), 1) {\\n                            // Revert with generic invalid signature error.\\n                            mstore(0, InvalidSignature_error_signature)\\n                            revert(0, InvalidSignature_error_length)\\n                        }\\n\\n                        // Check if v was invalid.\\n                        if iszero(\\n                            byte(v, ECDSA_twentySeventhAndTwentyEighthBytesSet)\\n                        ) {\\n                            // Revert with invalid v value.\\n                            mstore(0, BadSignatureV_error_signature)\\n                            mstore(BadSignatureV_error_offset, v)\\n                            revert(0, BadSignatureV_error_length)\\n                        }\\n\\n                        // Revert with generic invalid signer error message.\\n                        mstore(0, InvalidSigner_error_signature)\\n                        revert(0, InvalidSigner_error_length)\\n                    }\\n                }\\n\\n                // Restore the cached values overwritten by selector, digest and\\n                // signature head.\\n                mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n                mstore(selectorPtr, cachedWordOverwrittenBySelector)\\n                mstore(digestPtr, cachedWordOverwrittenByDigest)\\n            }\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Revert and pass reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with error indicating bad contract signature.\\n            assembly {\\n                mstore(0, BadContractSignature_error_signature)\\n                revert(0, BadContractSignature_error_length)\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9af8a720f3f6aac730d7896484f407ecea62105c1c9dc45666273d51555a0f42\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"SignatureVerification contains logic for verifying signatures.","version":1}}},"contracts/lib/TokenTransferrer.sol":{"TokenTransferrer":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"}],"devdoc":{"author":"0age","custom:coauthor":"d1ll0ntransmissions11","errors":{"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{},"title":"TokenTransferrer","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212207e582ff6d3e51fe1afa4b2ccf60e30a094f718a003716496f4c47c91d754c65964736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x582FF6D3E51FE1AFA4B2CCF60E30A094F718A003716496F4C47C91D754C659 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"829:43868:45:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212207e582ff6d3e51fe1afa4b2ccf60e30a094f718a003716496f4c47c91d754c65964736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x582FF6D3E51FE1AFA4B2CCF60E30A094F718A003716496F4C47C91D754C659 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"829:43868:45:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"66","totalCost":"12666"},"internal":{"_performERC1155BatchTransfers(struct ConduitBatch1155Transfer calldata[] calldata)":"infinite","_performERC1155Transfer(address,address,address,uint256,uint256)":"infinite","_performERC20Transfer(address,address,address,uint256)":"infinite","_performERC721Transfer(address,address,address,uint256)":"infinite","_performSelfERC20Transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"custom:coauthor\":\"d1ll0ntransmissions11\",\"errors\":{\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"TokenTransferrer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"TokenTransferrer is a library for performing optimized ERC20, ERC721,         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as         by conduits deployed by the ConduitController. Use great caution when         considering these functions for use in other codebases, as there are         significant side effects and edge cases that need to be thoroughly         understood and carefully addressed.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/TokenTransferrer.sol\":\"TokenTransferrer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/conduit/lib/ConduitEnums.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nenum ConduitItemType {\\n    NATIVE, // unused\\n    ERC20,\\n    ERC721,\\n    ERC1155\\n}\\n\",\"keccak256\":\"0x1a84850bbff4b820573334c70ee0797462f20fd8c9b86fdebeacc85ecb1963a6\",\"license\":\"MIT\"},\"contracts/conduit/lib/ConduitStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport { ConduitItemType } from \\\"./ConduitEnums.sol\\\";\\n\\nstruct ConduitTransfer {\\n    ConduitItemType itemType;\\n    address token;\\n    address from;\\n    address to;\\n    uint256 identifier;\\n    uint256 amount;\\n}\\n\\nstruct ConduitBatch1155Transfer {\\n    address token;\\n    address from;\\n    address to;\\n    uint256[] ids;\\n    uint256[] amounts;\\n}\\n\",\"keccak256\":\"0xe3e87c74dd79c59293e49b7236cc7befdc19886bb79af5fe53208b1772fd24f9\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nimport \\\"./TokenTransferrerConstants.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { ConduitBatch1155Transfer } from \\\"../conduit/lib/ConduitStructs.sol\\\";\\n\\n/**\\n * @title TokenTransferrer\\n * @author 0age\\n * @custom:coauthor d1ll0n\\n * @custom:coauthor transmissions11\\n * @notice TokenTransferrer is a library for performing optimized ERC20, ERC721,\\n *         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as\\n *         by conduits deployed by the ConduitController. Use great caution when\\n *         considering these functions for use in other codebases, as there are\\n *         significant side effects and edge cases that need to be thoroughly\\n *         understood and carefully addressed.\\n */\\ncontract TokenTransferrer is TokenTransferrerErrors {\\n    /**\\n     * @dev Internal function to transfer ERC20 tokens from a given originator\\n     *      to a given recipient. Sufficient approvals must be set on the\\n     *      contract performing the transfer.\\n     *\\n     * @param token      The ERC20 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC20Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\\n            mstore(ERC20_transferFrom_from_ptr, from)\\n            mstore(ERC20_transferFrom_to_ptr, to)\\n            mstore(ERC20_transferFrom_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transferFrom_sig_ptr,\\n                ERC20_transferFrom_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                from\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            from\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    function _performSelfERC20Transfer(\\n        address token,\\n        address to,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC20 token transfer.\\n        assembly {\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data into memory, starting with function selector.\\n            mstore(ERC20_transfer_sig_ptr, ERC20_transfer_signature)\\n            mstore(ERC20_transfer_to_ptr, to)\\n            mstore(ERC20_transfer_amount_ptr, amount)\\n\\n            // Make call & copy up to 32 bytes of return data to scratch space.\\n            // Scratch space does not need to be cleared ahead of time, as the\\n            // subsequent check will ensure that either at least a full word of\\n            // return data is received (in which case it will be overwritten) or\\n            // that no data is received (in which case scratch space will be\\n            // ignored) on a successful call to the given token.\\n            let callStatus := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC20_transfer_sig_ptr,\\n                ERC20_transfer_length,\\n                0,\\n                OneWord\\n            )\\n\\n            // Determine whether transfer was successful using status & result.\\n            let success := and(\\n                // Set success to whether the call reverted, if not check it\\n                // either returned exactly 1 (can't just be non-zero data), or\\n                // had no return data.\\n                or(\\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\\n                    iszero(returndatasize())\\n                ),\\n                callStatus\\n            )\\n\\n            // Handle cases where either the transfer failed or no data was\\n            // returned. Group these, as most transfers will succeed with data.\\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\\n            // but after it's inverted for JUMPI this expression is cheaper.\\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\\n                // If the token has no code or the transfer failed: Equivalent\\n                // to `or(iszero(success), iszero(extcodesize(token)))` but\\n                // after it's inverted for JUMPI this expression is cheaper.\\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\\n                    // If the transfer failed:\\n                    if iszero(success) {\\n                        // If it was due to a revert:\\n                        if iszero(callStatus) {\\n                            // If it returned a message, bubble it up as long as\\n                            // sufficient gas remains to do so:\\n                            if returndatasize() {\\n                                // Ensure that sufficient gas is available to\\n                                // copy returndata while expanding memory where\\n                                // necessary. Start by computing the word size\\n                                // of returndata and allocated memory. Round up\\n                                // to the nearest full word.\\n                                let returnDataWords := div(\\n                                    add(returndatasize(), AlmostOneWord),\\n                                    OneWord\\n                                )\\n\\n                                // Note: use the free memory pointer in place of\\n                                // msize() to work around a Yul warning that\\n                                // prevents accessing msize directly when the IR\\n                                // pipeline is activated.\\n                                let msizeWords := div(memPointer, OneWord)\\n\\n                                // Next, compute the cost of the returndatacopy.\\n                                let cost := mul(CostPerWord, returnDataWords)\\n\\n                                // Then, compute cost of new memory allocation.\\n                                if gt(returnDataWords, msizeWords) {\\n                                    cost := add(\\n                                        cost,\\n                                        add(\\n                                            mul(\\n                                                sub(\\n                                                    returnDataWords,\\n                                                    msizeWords\\n                                                ),\\n                                                CostPerWord\\n                                            ),\\n                                            div(\\n                                                sub(\\n                                                    mul(\\n                                                        returnDataWords,\\n                                                        returnDataWords\\n                                                    ),\\n                                                    mul(msizeWords, msizeWords)\\n                                                ),\\n                                                MemoryExpansionCoefficient\\n                                            )\\n                                        )\\n                                    )\\n                                }\\n\\n                                // Finally, add a small constant and compare to\\n                                // gas remaining; bubble up the revert data if\\n                                // enough gas is still available.\\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                                    // Copy returndata to memory; overwrite\\n                                    // existing memory.\\n                                    returndatacopy(0, 0, returndatasize())\\n\\n                                    // Revert, specifying memory region with\\n                                    // copied returndata.\\n                                    revert(0, returndatasize())\\n                                }\\n                            }\\n\\n                            // Otherwise revert with a generic error message.\\n                            mstore(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_signature\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_token_ptr,\\n                                token\\n                            )\\n                            mstore(\\n                                TokenTransferGenericFailure_error_from_ptr,\\n                                address()\\n                            )\\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\\n                            mstore(\\n                                TokenTransferGenericFailure_error_amount_ptr,\\n                                amount\\n                            )\\n                            revert(\\n                                TokenTransferGenericFailure_error_sig_ptr,\\n                                TokenTransferGenericFailure_error_length\\n                            )\\n                        }\\n\\n                        // Otherwise revert with a message about the token\\n                        // returning false or non-compliant return values.\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_signature\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\\n                            token\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\\n                            address()\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\\n                            to\\n                        )\\n                        mstore(\\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\\n                            amount\\n                        )\\n                        revert(\\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\\n                            BadReturnValueFromERC20OnTransfer_error_length\\n                        )\\n                    }\\n\\n                    // Otherwise, revert with error about token not having code:\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Otherwise, the token just returned no data despite the call\\n                // having succeeded; no need to optimize for this as it's not\\n                // technically ERC20 compliant.\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer an ERC721 token from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer. Note that this function does\\n     *      not check whether the receiver can accept the ERC721 token (i.e. it\\n     *      does not use `safeTransferFrom`).\\n     *\\n     * @param token      The ERC721 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The tokenId to transfer.\\n     */\\n    function _performERC721Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC721 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The free memory pointer memory slot will be used when populating\\n            // call data for the transfer; read the value and restore it later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Write call data to memory starting with function selector.\\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\\n            mstore(ERC721_transferFrom_from_ptr, from)\\n            mstore(ERC721_transferFrom_to_ptr, to)\\n            mstore(ERC721_transferFrom_id_ptr, identifier)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC721_transferFrom_sig_ptr,\\n                ERC721_transferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer.\\n     *\\n     * @param token      The ERC1155 token to transfer.\\n     * @param from       The originator of the transfer.\\n     * @param to         The recipient of the transfer.\\n     * @param identifier The id to transfer.\\n     * @param amount     The amount to transfer.\\n     */\\n    function _performERC1155Transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    ) internal {\\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\\n        assembly {\\n            // If the token has no code, revert.\\n            if iszero(extcodesize(token)) {\\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                mstore(NoContract_error_token_ptr, token)\\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\\n            }\\n\\n            // The following memory slots will be used when populating call data\\n            // for the transfer; read the values and restore them later.\\n            let memPointer := mload(FreeMemoryPointerSlot)\\n            let slot0x80 := mload(Slot0x80)\\n            let slot0xA0 := mload(Slot0xA0)\\n            let slot0xC0 := mload(Slot0xC0)\\n\\n            // Write call data into memory, beginning with function selector.\\n            mstore(\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_signature\\n            )\\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\\n            mstore(\\n                ERC1155_safeTransferFrom_data_offset_ptr,\\n                ERC1155_safeTransferFrom_data_length_offset\\n            )\\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\\n\\n            // Perform the call, ignoring return data.\\n            let success := call(\\n                gas(),\\n                token,\\n                0,\\n                ERC1155_safeTransferFrom_sig_ptr,\\n                ERC1155_safeTransferFrom_length,\\n                0,\\n                0\\n            )\\n\\n            // If the transfer reverted:\\n            if iszero(success) {\\n                // If it returned a message, bubble it up as long as sufficient\\n                // gas remains to do so:\\n                if returndatasize() {\\n                    // Ensure that sufficient gas is available to copy\\n                    // returndata while expanding memory where necessary. Start\\n                    // by computing word size of returndata & allocated memory.\\n                    // Round up to the nearest full word.\\n                    let returnDataWords := div(\\n                        add(returndatasize(), AlmostOneWord),\\n                        OneWord\\n                    )\\n\\n                    // Note: use the free memory pointer in place of msize() to\\n                    // work around a Yul warning that prevents accessing msize\\n                    // directly when the IR pipeline is activated.\\n                    let msizeWords := div(memPointer, OneWord)\\n\\n                    // Next, compute the cost of the returndatacopy.\\n                    let cost := mul(CostPerWord, returnDataWords)\\n\\n                    // Then, compute cost of new memory allocation.\\n                    if gt(returnDataWords, msizeWords) {\\n                        cost := add(\\n                            cost,\\n                            add(\\n                                mul(\\n                                    sub(returnDataWords, msizeWords),\\n                                    CostPerWord\\n                                ),\\n                                div(\\n                                    sub(\\n                                        mul(returnDataWords, returnDataWords),\\n                                        mul(msizeWords, msizeWords)\\n                                    ),\\n                                    MemoryExpansionCoefficient\\n                                )\\n                            )\\n                        )\\n                    }\\n\\n                    // Finally, add a small constant and compare to gas\\n                    // remaining; bubble up the revert data if enough gas is\\n                    // still available.\\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\\n                        // Copy returndata to memory; overwrite existing memory.\\n                        returndatacopy(0, 0, returndatasize())\\n\\n                        // Revert, giving memory region with copied returndata.\\n                        revert(0, returndatasize())\\n                    }\\n                }\\n\\n                // Otherwise revert with a generic error message.\\n                mstore(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_signature\\n                )\\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\\n                revert(\\n                    TokenTransferGenericFailure_error_sig_ptr,\\n                    TokenTransferGenericFailure_error_length\\n                )\\n            }\\n\\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\\n\\n            // Restore the original free memory pointer.\\n            mstore(FreeMemoryPointerSlot, memPointer)\\n\\n            // Restore the zero slot to zero.\\n            mstore(ZeroSlot, 0)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to transfer ERC1155 tokens from a given\\n     *      originator to a given recipient. Sufficient approvals must be set on\\n     *      the contract performing the transfer and contract recipients must\\n     *      implement the ERC1155TokenReceiver interface to indicate that they\\n     *      are willing to accept the transfer. NOTE: this function is not\\n     *      memory-safe; it will overwrite existing memory, restore the free\\n     *      memory pointer to the default value, and overwrite the zero slot.\\n     *      This function should only be called once memory is no longer\\n     *      required and when uninitialized arrays are not utilized, and memory\\n     *      should be considered fully corrupted (aside from the existence of a\\n     *      default-value free memory pointer) after calling this function.\\n     *\\n     * @param batchTransfers The group of 1155 batch transfers to perform.\\n     */\\n    function _performERC1155BatchTransfers(\\n        ConduitBatch1155Transfer[] calldata batchTransfers\\n    ) internal {\\n        // Utilize assembly to perform optimized batch 1155 transfers.\\n        assembly {\\n            let len := batchTransfers.length\\n            // Pointer to first head in the array, which is offset to the struct\\n            // at each index. This gets incremented after each loop to avoid\\n            // multiplying by 32 to get the offset for each element.\\n            let nextElementHeadPtr := batchTransfers.offset\\n\\n            // Pointer to beginning of the head of the array. This is the\\n            // reference position each offset references. It's held static to\\n            // let each loop calculate the data position for an element.\\n            let arrayHeadPtr := nextElementHeadPtr\\n\\n            // Write the function selector, which will be reused for each call:\\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\n            mstore(\\n                ConduitBatch1155Transfer_from_offset,\\n                ERC1155_safeBatchTransferFrom_signature\\n            )\\n\\n            // Iterate over each batch transfer.\\n            for {\\n                let i := 0\\n            } lt(i, len) {\\n                i := add(i, 1)\\n            } {\\n                // Read the offset to the beginning of the element and add\\n                // it to pointer to the beginning of the array head to get\\n                // the absolute position of the element in calldata.\\n                let elementPtr := add(\\n                    arrayHeadPtr,\\n                    calldataload(nextElementHeadPtr)\\n                )\\n\\n                // Retrieve the token from calldata.\\n                let token := calldataload(elementPtr)\\n\\n                // If the token has no code, revert.\\n                if iszero(extcodesize(token)) {\\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\\n                    mstore(NoContract_error_token_ptr, token)\\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\\n                }\\n\\n                // Get the total number of supplied ids.\\n                let idsLength := calldataload(\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\\n                )\\n\\n                // Determine the expected offset for the amounts array.\\n                let expectedAmountsOffset := add(\\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\\n                    mul(idsLength, OneWord)\\n                )\\n\\n                // Validate struct encoding.\\n                let invalidEncoding := iszero(\\n                    and(\\n                        // ids.length == amounts.length\\n                        eq(\\n                            idsLength,\\n                            calldataload(add(elementPtr, expectedAmountsOffset))\\n                        ),\\n                        and(\\n                            // ids_offset == 0xa0\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatch1155Transfer_ids_head_offset\\n                                    )\\n                                ),\\n                                ConduitBatch1155Transfer_ids_length_offset\\n                            ),\\n                            // amounts_offset == 0xc0 + ids.length*32\\n                            eq(\\n                                calldataload(\\n                                    add(\\n                                        elementPtr,\\n                                        ConduitBatchTransfer_amounts_head_offset\\n                                    )\\n                                ),\\n                                expectedAmountsOffset\\n                            )\\n                        )\\n                    )\\n                )\\n\\n                // Revert with an error if the encoding is not valid.\\n                if invalidEncoding {\\n                    mstore(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_selector\\n                    )\\n                    revert(\\n                        Invalid1155BatchTransferEncoding_ptr,\\n                        Invalid1155BatchTransferEncoding_length\\n                    )\\n                }\\n\\n                // Update the offset position for the next loop\\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\\n\\n                // Copy the first section of calldata (before dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\\n                    ConduitBatch1155Transfer_usable_head_size\\n                )\\n\\n                // Determine size of calldata required for ids and amounts. Note\\n                // that the size includes both lengths as well as the data.\\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\\n\\n                // Update the offset for the data array in memory.\\n                mstore(\\n                    BatchTransfer1155Params_data_head_ptr,\\n                    add(\\n                        BatchTransfer1155Params_ids_length_offset,\\n                        idsAndAmountsSize\\n                    )\\n                )\\n\\n                // Set the length of the data array in memory to zero.\\n                mstore(\\n                    add(\\n                        BatchTransfer1155Params_data_length_basePtr,\\n                        idsAndAmountsSize\\n                    ),\\n                    0\\n                )\\n\\n                // Determine the total calldata size for the call to transfer.\\n                let transferDataSize := add(\\n                    BatchTransfer1155Params_calldata_baseSize,\\n                    idsAndAmountsSize\\n                )\\n\\n                // Copy second section of calldata (including dynamic values).\\n                calldatacopy(\\n                    BatchTransfer1155Params_ids_length_ptr,\\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\\n                    idsAndAmountsSize\\n                )\\n\\n                // Perform the call to transfer 1155 tokens.\\n                let success := call(\\n                    gas(),\\n                    token,\\n                    0,\\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\\n                    transferDataSize, // Location of the length of callData.\\n                    0,\\n                    0\\n                )\\n\\n                // If the transfer reverted:\\n                if iszero(success) {\\n                    // If it returned a message, bubble it up as long as\\n                    // sufficient gas remains to do so:\\n                    if returndatasize() {\\n                        // Ensure that sufficient gas is available to copy\\n                        // returndata while expanding memory where necessary.\\n                        // Start by computing word size of returndata and\\n                        // allocated memory. Round up to the nearest full word.\\n                        let returnDataWords := div(\\n                            add(returndatasize(), AlmostOneWord),\\n                            OneWord\\n                        )\\n\\n                        // Note: use transferDataSize in place of msize() to\\n                        // work around a Yul warning that prevents accessing\\n                        // msize directly when the IR pipeline is activated.\\n                        // The free memory pointer is not used here because\\n                        // this function does almost all memory management\\n                        // manually and does not update it, and transferDataSize\\n                        // should be the largest memory value used (unless a\\n                        // previous batch was larger).\\n                        let msizeWords := div(transferDataSize, OneWord)\\n\\n                        // Next, compute the cost of the returndatacopy.\\n                        let cost := mul(CostPerWord, returnDataWords)\\n\\n                        // Then, compute cost of new memory allocation.\\n                        if gt(returnDataWords, msizeWords) {\\n                            cost := add(\\n                                cost,\\n                                add(\\n                                    mul(\\n                                        sub(returnDataWords, msizeWords),\\n                                        CostPerWord\\n                                    ),\\n                                    div(\\n                                        sub(\\n                                            mul(\\n                                                returnDataWords,\\n                                                returnDataWords\\n                                            ),\\n                                            mul(msizeWords, msizeWords)\\n                                        ),\\n                                        MemoryExpansionCoefficient\\n                                    )\\n                                )\\n                            )\\n                        }\\n\\n                        // Finally, add a small constant and compare to gas\\n                        // remaining; bubble up the revert data if enough gas is\\n                        // still available.\\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\\n                            // Copy returndata to memory; overwrite existing.\\n                            returndatacopy(0, 0, returndatasize())\\n\\n                            // Revert with memory region containing returndata.\\n                            revert(0, returndatasize())\\n                        }\\n                    }\\n\\n                    // Set the error signature.\\n                    mstore(\\n                        0,\\n                        ERC1155BatchTransferGenericFailure_error_signature\\n                    )\\n\\n                    // Write the token.\\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\\n\\n                    // Increase the offset to ids by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_ids_head_ptr,\\n                        ERC1155BatchTransferGenericFailure_ids_offset\\n                    )\\n\\n                    // Increase the offset to amounts by 32.\\n                    mstore(\\n                        BatchTransfer1155Params_amounts_head_ptr,\\n                        add(\\n                            OneWord,\\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\\n                        )\\n                    )\\n\\n                    // Return modified region. The total size stays the same as\\n                    // `token` uses the same number of bytes as `data.length`.\\n                    revert(0, transferDataSize)\\n                }\\n            }\\n\\n            // Reset the free memory pointer to the default value; memory must\\n            // be assumed to be dirtied and not reused from this point forward.\\n            // Also note that the zero slot is not reset to zero, meaning empty\\n            // arrays cannot be safely created or utilized until it is restored.\\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9be626e5928b95748e08259c63a6168d3e0b3e490f2f340491b8afd546cbbcd1\",\"license\":\"MIT\"},\"contracts/lib/TokenTransferrerConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\nuint256 constant Slot0xC0 = 0xc0;\\n\\n// abi.encodeWithSignature(\\\"transferFrom(address,address,uint256)\\\")\\nuint256 constant ERC20_transferFrom_signature = (\\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"transfer(address,uint256)\\\")\\nuint256 constant ERC20_transfer_signature = (\\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC20_transfer_sig_ptr = 0x0;\\nuint256 constant ERC20_transfer_to_ptr = 0x04;\\nuint256 constant ERC20_transfer_amount_ptr = 0x24;\\nuint256 constant ERC20_transfer_length = 0x44; // 4 + 32 * 2 == 68\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeTransferFrom(address,address,uint256,uint256,bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeTransferFrom_signature = (\\n    0xf242432a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\\n\\n// abi.encodeWithSignature(\\n//     \\\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\\\"\\n// )\\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\\n);\\n\\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\\n);\\n\\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\n// abi.encodeWithSignature(\\n//     \\\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\\\"\\n// )\\nuint256 constant TokenTransferGenericFailure_error_signature = (\\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\\n\\n// 4 + 32 * 5 == 164\\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\\n\\n// abi.encodeWithSignature(\\n//     \\\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\\\"\\n// )\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\\n    0x9889192300000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\\n\\n// 4 + 32 * 4 == 132\\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200;\\n\\n// Values are offset by 32 bytes in order to write the token to the beginning\\n// in the event of a revert\\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x64;\\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0xc4;\\nuint256 constant BatchTransfer1155Params_calldata_baseSize = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\\n\\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\\n\\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\\n\\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\\n\\n// Note: abbreviated version of above constant to adhere to line length limit.\\nuint256 constant ConduitBatchTransfer_amounts_head_offset = 0x80;\\n\\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\\n    0xafc445e200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\\nuint256 constant ERC1155BatchTransferGenericFailure_ids_offset = 0xc0;\\n\",\"keccak256\":\"0x002bea8dcc1d37a0cdd6d1c25f536a1a13e01e1fb32b7bbb2a3016425e40b672\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"TokenTransferrer is a library for performing optimized ERC20, ERC721,         ERC1155, and batch ERC1155 transfers, used by both Seaport as well as         by conduits deployed by the ConduitController. Use great caution when         considering these functions for use in other codebases, as there are         significant side effects and edge cases that need to be thoroughly         understood and carefully addressed.","version":1}}},"contracts/lib/Verifiers.sol":{"Verifiers":{"abi":[{"inputs":[{"internalType":"address","name":"conduitController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadContractSignature","type":"error"},{"inputs":[],"name":"BadFraction","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BadReturnValueFromERC20OnTransfer","type":"error"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"}],"name":"BadSignatureV","type":"error"},{"inputs":[{"internalType":"uint256","name":"orderIndex","type":"uint256"},{"internalType":"uint256","name":"considerationIndex","type":"uint256"},{"internalType":"uint256","name":"shortfallAmount","type":"uint256"}],"name":"ConsiderationNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"identifiers","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ERC1155BatchTransferGenericFailure","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherTransferGenericFailure","type":"error"},{"inputs":[],"name":"InsufficientEtherSupplied","type":"error"},{"inputs":[],"name":"Invalid1155BatchTransferEncoding","type":"error"},{"inputs":[],"name":"InvalidBasicOrderParameterEncoding","type":"error"},{"inputs":[{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidCallToConduit","type":"error"},{"inputs":[],"name":"InvalidCanceller","type":"error"},{"inputs":[{"internalType":"bytes32","name":"conduitKey","type":"bytes32"},{"internalType":"address","name":"conduit","type":"address"}],"name":"InvalidConduit","type":"error"},{"inputs":[],"name":"InvalidERC721TransferAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidMsgValue","type":"error"},{"inputs":[],"name":"InvalidNativeOfferItem","type":"error"},{"inputs":[],"name":"InvalidOrderParameters","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"InvalidTime","type":"error"},{"inputs":[],"name":"MissingItemAmount","type":"error"},{"inputs":[],"name":"MissingOriginalConsiderationItems","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoContract","type":"error"},{"inputs":[],"name":"NoReentrantCalls","type":"error"},{"inputs":[],"name":"NoSpecifiedOrdersAvailable","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFilled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyFinalized","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderAlreadyStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderInvalidRepayParameters","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderIsCancelled","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotStarted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderNotValidated","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderPartiallyFilled","type":"error"},{"inputs":[],"name":"PartialFillsNotEnabledForOrder","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"identifier","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenTransferGenericFailure","type":"error"},{"inputs":[],"name":"UnusedItemParameters","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCounter","type":"uint256"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"CounterIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderBroken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"},{"indexed":false,"internalType":"uint256","name":"shadowId","type":"uint256"}],"name":"OrderFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payTimes","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finalized","type":"bool"}],"name":"OrderRepaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"offerer","type":"address"}],"name":"OrderValidated","type":"event"}],"devdoc":{"author":"0age","errors":{"BadContractSignature()":[{"details":"Revert with an error when an EIP-1271 call to an account fails."}],"BadFraction()":[{"details":"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator."}],"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)":[{"details":"Revert with an error when an ERC20 token transfer returns a falsey      value.","params":{"amount":"The amount for the attempted ERC20 transfer.","from":"The source of the attempted ERC20 transfer.","to":"The recipient of the attempted ERC20 transfer.","token":"The token for which the ERC20 transfer was attempted."}}],"BadSignatureV(uint8)":[{"details":"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.","params":{"v":"The invalid v value."}}],"ConsiderationNotMet(uint256,uint256,uint256)":[{"details":"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.","params":{"considerationIndex":"The index of the consideration item on the                           order.","orderIndex":"The index of the order with the consideration                           item with a shortfall.","shortfallAmount":"The unfulfilled consideration amount."}}],"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])":[{"details":"Revert with an error when a batch ERC1155 token transfer reverts.","params":{"amounts":"The amounts for the attempted transfer.","from":"The source of the attempted transfer.","identifiers":"The identifiers for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"EtherTransferGenericFailure(address,uint256)":[{"details":"Revert with an error when an ether transfer reverts."}],"InsufficientEtherSupplied()":[{"details":"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders."}],"Invalid1155BatchTransferEncoding()":[{"details":"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays."}],"InvalidBasicOrderParameterEncoding()":[{"details":"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding."}],"InvalidCallToConduit(address)":[{"details":"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return."}],"InvalidCanceller()":[{"details":"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone."}],"InvalidConduit(bytes32,address)":[{"details":"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed)."}],"InvalidERC721TransferAmount()":[{"details":"Revert with an error when an ERC721 transfer with amount other than      one is attempted."}],"InvalidMsgValue(uint256)":[{"details":"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route."}],"InvalidNativeOfferItem()":[{"details":"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders."}],"InvalidSignature()":[{"details":"Revert with an error when a signer cannot be recovered from the      supplied signature."}],"InvalidSigner()":[{"details":"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract."}],"InvalidTime()":[{"details":"Revert with an error when attempting to fill an order outside the      specified start time and end time."}],"MissingItemAmount()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has an amount of zero."}],"MissingOriginalConsiderationItems()":[{"details":"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array."}],"NoContract(address)":[{"details":"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.","params":{"account":"The account that should contain code."}}],"NoReentrantCalls()":[{"details":"Revert with an error when a caller attempts to reenter a protected      function."}],"NoSpecifiedOrdersAvailable()":[{"details":"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable."}],"OrderAlreadyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has      already been fully filled.","params":{"orderHash":"The order hash on which a fill was attempted."}}],"OrderIsCancelled(bytes32)":[{"details":"Revert with an error when attempting to fill an order that has been      cancelled.","params":{"orderHash":"The hash of the cancelled order."}}],"OrderPartiallyFilled(bytes32)":[{"details":"Revert with an error when attempting to fill a basic order that has      been partially filled.","params":{"orderHash":"The hash of the partially used order."}}],"PartialFillsNotEnabledForOrder()":[{"details":"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type."}],"TokenTransferGenericFailure(address,address,address,uint256,uint256)":[{"details":"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.","params":{"amount":"The amount for the attempted transfer.","from":"The source of the attempted transfer.","identifier":"The identifier for the attempted transfer.","to":"The recipient of the attempted transfer.","token":"The token for which the transfer was attempted."}}],"UnusedItemParameters()":[{"details":"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired."}]},"kind":"dev","methods":{"constructor":{"details":"Derive and set hashes, reference chainId, and associated domain      separator during deployment.","params":{"conduitController":"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens."}}},"title":"Verifiers","version":1},"evm":{"bytecode":{"functionDebugData":{"@_4348":{"entryPoint":null,"id":4348,"parameterSlots":1,"returnSlots":0},"@_4654":{"entryPoint":null,"id":4654,"parameterSlots":1,"returnSlots":0},"@_5935":{"entryPoint":null,"id":5935,"parameterSlots":1,"returnSlots":0},"@_7732":{"entryPoint":null,"id":7732,"parameterSlots":0,"returnSlots":0},"@_8290":{"entryPoint":null,"id":8290,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_4675":{"entryPoint":null,"id":4675,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_4760":{"entryPoint":273,"id":4760,"parameterSlots":0,"returnSlots":4},"@_nameString_4683":{"entryPoint":null,"id":4683,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":1125,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_bytes32_fromMemory":{"entryPoint":1173,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_stringliteral_0c2a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e4b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_41ba":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_59d7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5c66":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7afc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89a9":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9c70":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b48f":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bab2":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_cfcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6455:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:54","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:54"},"nodeType":"YulFunctionCall","src":"143:12:54"},"nodeType":"YulExpressionStatement","src":"143:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:54"},"nodeType":"YulFunctionCall","src":"112:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:54"},"nodeType":"YulFunctionCall","src":"108:32:54"},"nodeType":"YulIf","src":"105:52:54"},{"nodeType":"YulVariableDeclaration","src":"166:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:54"},"nodeType":"YulFunctionCall","src":"179:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:54"},"nodeType":"YulFunctionCall","src":"260:12:54"},"nodeType":"YulExpressionStatement","src":"260:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:54"},"nodeType":"YulFunctionCall","src":"239:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:54"},"nodeType":"YulFunctionCall","src":"235:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:54"},"nodeType":"YulFunctionCall","src":"224:31:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:54"},"nodeType":"YulFunctionCall","src":"214:42:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:54"},"nodeType":"YulFunctionCall","src":"207:50:54"},"nodeType":"YulIf","src":"204:70:54"},{"nodeType":"YulAssignment","src":"283:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:54"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:54","type":""}],"src":"14:290:54"},{"body":{"nodeType":"YulBlock","src":"407:147:54","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:54"},"nodeType":"YulFunctionCall","src":"455:12:54"},"nodeType":"YulExpressionStatement","src":"455:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:54"},"nodeType":"YulFunctionCall","src":"424:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:54"},"nodeType":"YulFunctionCall","src":"420:32:54"},"nodeType":"YulIf","src":"417:52:54"},{"nodeType":"YulAssignment","src":"478:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:54"},"nodeType":"YulFunctionCall","src":"488:16:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:54"}]},{"nodeType":"YulAssignment","src":"513:35:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:54"},"nodeType":"YulFunctionCall","src":"529:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:54"},"nodeType":"YulFunctionCall","src":"523:25:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:54"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:54","type":""}],"src":"309:245:54"},{"body":{"nodeType":"YulBlock","src":"614:76:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:54"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:54","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:54"},"nodeType":"YulFunctionCall","src":"624:32:54"},"nodeType":"YulExpressionStatement","src":"624:32:54"},{"nodeType":"YulAssignment","src":"665:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:54","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:54"},"nodeType":"YulFunctionCall","src":"672:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:54"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:54","type":""}],"src":"559:131:54"},{"body":{"nodeType":"YulBlock","src":"750:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:54"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:54","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:54"},"nodeType":"YulFunctionCall","src":"760:31:54"},"nodeType":"YulExpressionStatement","src":"760:31:54"},{"nodeType":"YulAssignment","src":"800:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:54"},"nodeType":"YulFunctionCall","src":"807:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:54"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:54","type":""}],"src":"695:130:54"},{"body":{"nodeType":"YulBlock","src":"885:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:54"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:54","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:54"},"nodeType":"YulFunctionCall","src":"895:30:54"},"nodeType":"YulExpressionStatement","src":"895:30:54"},{"nodeType":"YulAssignment","src":"934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:54"},"nodeType":"YulFunctionCall","src":"941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:54"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:54","type":""}],"src":"830:129:54"},{"body":{"nodeType":"YulBlock","src":"1019:73:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:54"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:54","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:54"},"nodeType":"YulFunctionCall","src":"1029:29:54"},"nodeType":"YulExpressionStatement","src":"1029:29:54"},{"nodeType":"YulAssignment","src":"1067:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:54","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:54"},"nodeType":"YulFunctionCall","src":"1074:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:54"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:54","type":""}],"src":"964:128:54"},{"body":{"nodeType":"YulBlock","src":"1152:75:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:54"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:54","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:54"},"nodeType":"YulFunctionCall","src":"1162:31:54"},"nodeType":"YulExpressionStatement","src":"1162:31:54"},{"nodeType":"YulAssignment","src":"1202:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:54"},"nodeType":"YulFunctionCall","src":"1209:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:54"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:54","type":""}],"src":"1097:130:54"},{"body":{"nodeType":"YulBlock","src":"1287:71:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:54"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:54","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:54"},"nodeType":"YulFunctionCall","src":"1297:27:54"},"nodeType":"YulExpressionStatement","src":"1297:27:54"},{"nodeType":"YulAssignment","src":"1333:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:54","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:54"},"nodeType":"YulFunctionCall","src":"1340:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:54"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:54","type":""}],"src":"1232:126:54"},{"body":{"nodeType":"YulBlock","src":"1418:79:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:54"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:54","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:54"},"nodeType":"YulFunctionCall","src":"1428:35:54"},"nodeType":"YulExpressionStatement","src":"1428:35:54"},{"nodeType":"YulAssignment","src":"1472:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:54","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:54"},"nodeType":"YulFunctionCall","src":"1479:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:54"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:54","type":""}],"src":"1363:134:54"},{"body":{"nodeType":"YulBlock","src":"1557:72:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:54"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:54","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:54"},"nodeType":"YulFunctionCall","src":"1567:28:54"},"nodeType":"YulExpressionStatement","src":"1567:28:54"},{"nodeType":"YulAssignment","src":"1604:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:54"},"nodeType":"YulFunctionCall","src":"1611:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:54"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:54","type":""}],"src":"1502:127:54"},{"body":{"nodeType":"YulBlock","src":"1689:78:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:54"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:54","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:54"},"nodeType":"YulFunctionCall","src":"1699:34:54"},"nodeType":"YulExpressionStatement","src":"1699:34:54"},{"nodeType":"YulAssignment","src":"1742:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:54","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:54"},"nodeType":"YulFunctionCall","src":"1749:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:54"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:54","type":""}],"src":"1634:133:54"},{"body":{"nodeType":"YulBlock","src":"1827:74:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:54"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:54","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:54"},"nodeType":"YulFunctionCall","src":"1837:30:54"},"nodeType":"YulExpressionStatement","src":"1837:30:54"},{"nodeType":"YulAssignment","src":"1876:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:54","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:54"},"nodeType":"YulFunctionCall","src":"1883:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:54"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:54","type":""}],"src":"1772:129:54"},{"body":{"nodeType":"YulBlock","src":"1961:59:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:54"},"nodeType":"YulFunctionCall","src":"1971:16:54"},"nodeType":"YulExpressionStatement","src":"1971:16:54"},{"nodeType":"YulAssignment","src":"1996:18:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:54","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:54"},"nodeType":"YulFunctionCall","src":"2003:11:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:54"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:54","type":""}],"src":"1906:114:54"},{"body":{"nodeType":"YulBlock","src":"4136:815:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:54"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:54","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:54"},"nodeType":"YulFunctionCall","src":"4146:31:54"},"nodeType":"YulExpressionStatement","src":"4146:31:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:54","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:54"},"nodeType":"YulFunctionCall","src":"4193:12:54"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:54","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:54"},"nodeType":"YulFunctionCall","src":"4186:40:54"},"nodeType":"YulExpressionStatement","src":"4186:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:54"},"nodeType":"YulFunctionCall","src":"4242:12:54"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:54","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:54"},"nodeType":"YulFunctionCall","src":"4235:38:54"},"nodeType":"YulExpressionStatement","src":"4235:38:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:54","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:54"},"nodeType":"YulFunctionCall","src":"4289:12:54"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:54","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:54"},"nodeType":"YulFunctionCall","src":"4282:43:54"},"nodeType":"YulExpressionStatement","src":"4282:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:54","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:54"},"nodeType":"YulFunctionCall","src":"4341:12:54"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:54","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:54"},"nodeType":"YulFunctionCall","src":"4334:41:54"},"nodeType":"YulExpressionStatement","src":"4334:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:54"},"nodeType":"YulFunctionCall","src":"4391:12:54"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:54","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:54"},"nodeType":"YulFunctionCall","src":"4384:39:54"},"nodeType":"YulExpressionStatement","src":"4384:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:54","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:54"},"nodeType":"YulFunctionCall","src":"4439:12:54"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:54","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:54"},"nodeType":"YulFunctionCall","src":"4432:41:54"},"nodeType":"YulExpressionStatement","src":"4432:41:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:54","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:54"},"nodeType":"YulFunctionCall","src":"4489:13:54"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:54","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:54"},"nodeType":"YulFunctionCall","src":"4482:43:54"},"nodeType":"YulExpressionStatement","src":"4482:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:54","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:54"},"nodeType":"YulFunctionCall","src":"4541:13:54"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:54","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:54"},"nodeType":"YulFunctionCall","src":"4534:41:54"},"nodeType":"YulExpressionStatement","src":"4534:41:54"},{"nodeType":"YulAssignment","src":"4584:361:54","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:54","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:54"},"nodeType":"YulFunctionCall","src":"4921:13:54"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:54"},"nodeType":"YulFunctionCall","src":"4891:44:54"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:54"},"nodeType":"YulFunctionCall","src":"4861:75:54"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:54"},"nodeType":"YulFunctionCall","src":"4831:106:54"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:54"},"nodeType":"YulFunctionCall","src":"4801:137:54"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:54"},"nodeType":"YulFunctionCall","src":"4771:168:54"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:54"},"nodeType":"YulFunctionCall","src":"4741:199:54"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:54"},"nodeType":"YulFunctionCall","src":"4711:230:54"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:54"},"nodeType":"YulFunctionCall","src":"4681:261:54"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:54"},"nodeType":"YulFunctionCall","src":"4651:292:54"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:54"},"nodeType":"YulFunctionCall","src":"4621:323:54"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:54"},"nodeType":"YulFunctionCall","src":"4591:354:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4120:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:54","type":""}],"src":"2025:2926:54"},{"body":{"nodeType":"YulBlock","src":"5653:306:54","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:54"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:54","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:54"},"nodeType":"YulFunctionCall","src":"5663:28:54"},"nodeType":"YulExpressionStatement","src":"5663:28:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:54","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:54"},"nodeType":"YulFunctionCall","src":"5707:12:54"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:54","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:54"},"nodeType":"YulFunctionCall","src":"5700:36:54"},"nodeType":"YulExpressionStatement","src":"5700:36:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:54","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:54"},"nodeType":"YulFunctionCall","src":"5752:12:54"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:54","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:54"},"nodeType":"YulFunctionCall","src":"5745:39:54"},"nodeType":"YulExpressionStatement","src":"5745:39:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:54","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:54"},"nodeType":"YulFunctionCall","src":"5800:12:54"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:54","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:54"},"nodeType":"YulFunctionCall","src":"5793:40:54"},"nodeType":"YulExpressionStatement","src":"5793:40:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:54","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:54"},"nodeType":"YulFunctionCall","src":"5849:12:54"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:54","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:54"},"nodeType":"YulFunctionCall","src":"5842:49:54"},"nodeType":"YulExpressionStatement","src":"5842:49:54"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:54","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:54"},"nodeType":"YulFunctionCall","src":"5907:12:54"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:54","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:54"},"nodeType":"YulFunctionCall","src":"5900:25:54"},"nodeType":"YulExpressionStatement","src":"5900:25:54"},{"nodeType":"YulAssignment","src":"5934:19:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:54","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:54"},"nodeType":"YulFunctionCall","src":"5941:12:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:54"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5637:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:54","type":""}],"src":"4956:1003:54"},{"body":{"nodeType":"YulBlock","src":"6177:276:54","statements":[{"nodeType":"YulAssignment","src":"6187:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:54","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:54"},"nodeType":"YulFunctionCall","src":"6195:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:54"},"nodeType":"YulFunctionCall","src":"6223:25:54"},"nodeType":"YulExpressionStatement","src":"6223:25:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:54"},"nodeType":"YulFunctionCall","src":"6264:18:54"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:54"},"nodeType":"YulFunctionCall","src":"6257:34:54"},"nodeType":"YulExpressionStatement","src":"6257:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:54"},"nodeType":"YulFunctionCall","src":"6307:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:54"},"nodeType":"YulFunctionCall","src":"6300:34:54"},"nodeType":"YulExpressionStatement","src":"6300:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:54"},"nodeType":"YulFunctionCall","src":"6350:18:54"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:54"},"nodeType":"YulFunctionCall","src":"6343:34:54"},"nodeType":"YulExpressionStatement","src":"6343:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:54"},"nodeType":"YulFunctionCall","src":"6393:19:54"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:54"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:54","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:54"},"nodeType":"YulFunctionCall","src":"6430:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:54"},"nodeType":"YulFunctionCall","src":"6426:19:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:54"},"nodeType":"YulFunctionCall","src":"6414:32:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:54"},"nodeType":"YulFunctionCall","src":"6386:61:54"},"nodeType":"YulExpressionStatement","src":"6386:61:54"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6114:9:54","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:54","type":""}],"src":"5964:489:54"}]},"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_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_9c70(pos) -> end\n    {\n        mstore(pos, \"uint256 duration,\")\n        end := add(pos, 17)\n    }\n    function abi_encode_stringliteral_bab2(pos) -> end\n    {\n        mstore(pos, \"uint256 periods,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_1e4b(pos) -> end\n    {\n        mstore(pos, \"uint256 amount,\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_89a9(pos) -> end\n    {\n        mstore(pos, \"uint256 ratio,\")\n        end := add(pos, 14)\n    }\n    function abi_encode_stringliteral_5c66(pos) -> end\n    {\n        mstore(pos, \"uint256 royalty,\")\n        end := add(pos, 16)\n    }\n    function abi_encode_stringliteral_b48f(pos) -> end\n    {\n        mstore(pos, \"uint256 fee,\")\n        end := add(pos, 12)\n    }\n    function abi_encode_stringliteral_0c2a(pos) -> end\n    {\n        mstore(pos, \"uint256 withdrawFee,\")\n        end := add(pos, 20)\n    }\n    function abi_encode_stringliteral_7afc(pos) -> end\n    {\n        mstore(pos, \"uint256 salt,\")\n        end := add(pos, 13)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral_41ba(pos) -> end\n    {\n        mstore(pos, \"uint256 counter\")\n        end := add(pos, 15)\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01_t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703_t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2_t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489_t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38_t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3_t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b_t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0_t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21_t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address token,\")\n        mstore(add(pos, 46), \"uint256 identifier,\")\n        mstore(add(pos, 65), \"address currency,\")\n        mstore(add(pos, 82), \"address artist,\")\n        mstore(add(pos, 97), \"address platform,\")\n        mstore(add(pos, 114), \"uint256 startTime,\")\n        mstore(add(pos, 132), \"uint256 endTime,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral_41ba(abi_encode_stringliteral_cfcd(abi_encode_stringliteral_7afc(abi_encode_stringliteral_0c2a(abi_encode_stringliteral_b48f(abi_encode_stringliteral_5c66(abi_encode_stringliteral_89a9(abi_encode_stringliteral_1e4b(abi_encode_stringliteral_bab2(abi_encode_stringliteral_9c70(add(pos, 148))))))))))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"61018060405234801561001157600080fd5b5060405161054338038061054383398101604081905261003091610465565b80808061003b610111565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fd9190610495565b506101605250506001600055506104b99050565b600080808061014060408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3945060009161039a91016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b60006020828403121561047757600080fd5b81516001600160a01b038116811461048e57600080fd5b9392505050565b600080604083850312156104a857600080fd5b505080516020909101519092909150565b60805160a05160c05160e05161010051610120516101405161016051603f6105046000396000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea26469706673582212204a9d20703e550afc51bf7f6a6f128f4c8a66a1dfdd3de80439f844a9c9c6123b64736f6c634300080e0033","opcodes":"PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x543 CODESIZE SUB DUP1 PUSH2 0x543 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x465 JUMP JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x3B PUSH2 0x111 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x100 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD9 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 0xFD SWAP2 SWAP1 PUSH2 0x495 JUMP JUMPDEST POP PUSH2 0x160 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x4B9 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x140 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x312E3 PUSH1 0xEC SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP6 POP PUSH32 0xE6BBD6277E1BF288EED5E8D1780F9A50B239E86B153736BCEEBCCF4EA79D90B3 SWAP5 POP PUSH1 0x0 SWAP2 PUSH2 0x39A SWAP2 ADD PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL DUP2 MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0x10 DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965722C00000000000000000000000000 PUSH1 0x2E DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC818DD5C9C995B98DE4B PUSH1 0x7A SHL PUSH1 0x41 DUP3 ADD MSTORE PUSH15 0x1859191C995CDCC8185C9D1A5CDD0B PUSH1 0x8A SHL PUSH1 0x52 DUP3 ADD MSTORE PUSH17 0x1859191C995CDCC81C1B185D199BDC9B4B PUSH1 0x7A SHL PUSH1 0x61 DUP3 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH1 0x72 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88191D5C985D1A5BDB8B PUSH1 0x7A SHL PUSH1 0x94 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C195C9A5BD91CCB PUSH1 0x82 SHL PUSH1 0xA5 DUP3 ADD MSTORE PUSH15 0x1D5A5B9D0C8D4D88185B5BDD5B9D0B PUSH1 0x8A SHL PUSH1 0xB5 DUP3 ADD MSTORE PUSH14 0x1D5A5B9D0C8D4D881C985D1A5BCB PUSH1 0x92 SHL PUSH1 0xC4 DUP3 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D881C9BDE585B1D1E4B PUSH1 0x82 SHL PUSH1 0xD2 DUP3 ADD MSTORE PUSH12 0x1D5A5B9D0C8D4D881999594B PUSH1 0xA2 SHL PUSH1 0xE2 DUP3 ADD MSTORE PUSH32 0x75696E743235362077697468647261774665652C000000000000000000000000 PUSH1 0xEE DUP3 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x102 DUP3 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x10F DUP3 ADD MSTORE PUSH15 0x3AB4B73A191A9B1031B7BAB73A32B9 PUSH1 0x89 SHL PUSH2 0x122 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH2 0x131 DUP3 ADD MSTORE PUSH2 0x132 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH1 0x3F PUSH2 0x504 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A SWAP14 KECCAK256 PUSH17 0x3E550AFC51BF7F6A6F128F4C8A66A1DFDD RETURNDATASIZE 0xE8 DIV CODECOPY 0xF8 DIFFICULTY 0xA9 0xC9 0xC6 SLT EXTCODESIZE PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"349:3907:47:-:0;;;764:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;814:17;;;786:19:32;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:32;;-1:-1:-1;1203:187:32;;;6223:25:54;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:54;;6300:34;;;;6350:18;;;6343:34;1371:4:32;6393:19:54;;;6386:61;1203:187:32;;;;;;;;;;6195:19:54;;1203:187:32;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:32;;;;;;1032:42;;;-1:-1:-1;;;1032:42:32;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:32;;-1:-1:-1;;2345:1:33;658:16:42;:31;-1:-1:-1;349:3907:47;;-1:-1:-1;349:3907:47;1527:1491:32;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:32;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:32;;;;1909:724;1778:31;;-1:-1:-1;1834:23:32;;-1:-1:-1;;;1909:724:32;;;-1:-1:-1;;;4146:31:54;;-1:-1:-1;;;4202:2:54;4193:12;;4186:40;-1:-1:-1;;;4251:2:54;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:54;4341:12;;4334:41;-1:-1:-1;;;4400:2:54;4391:12;;4384:39;-1:-1:-1;;;4448:2:54;4439:12;;4432:41;-1:-1:-1;;;4498:3:54;4489:13;;4482:43;-1:-1:-1;;;4550:3:54;4541:13;;4534:41;-1:-1:-1;;;4930:3:54;4921:13;;624:32;-1:-1:-1;;;672:12:54;;;760:31;-1:-1:-1;;;807:12:54;;;895:30;-1:-1:-1;;;941:12:54;;;1029:29;-1:-1:-1;;;1074:12:54;;;1162:31;-1:-1:-1;;;1209:12:54;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:54;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:54;;;1837:30;-1:-1:-1;;;1883:12:54;;;1971:16;2003:11;;;2025:2926;1909:724:32;;;;-1:-1:-1;;1909:724:32;;;;;;;;;;-1:-1:-1;;;1909:724:32;2690:248;;5663:28:54;-1:-1:-1;;;5707:12:54;;;5700:36;-1:-1:-1;;;5752:12:54;;;5745:39;-1:-1:-1;;;5800:12:54;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:54;;;5900:25;1909:724:32;-1:-1:-1;5941:12:54;;2690:248:32;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:54:-;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:54;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:54:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:54;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:54:o;5964:489::-;349:3907:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212204a9d20703e550afc51bf7f6a6f128f4c8a66a1dfdd3de80439f844a9c9c6123b64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A SWAP14 KECCAK256 PUSH17 0x3E550AFC51BF7F6A6F128F4C8A66A1DFDD RETURNDATASIZE 0xE8 DIV CODECOPY 0xF8 DIFFICULTY 0xA9 0xC9 0xC6 SLT EXTCODESIZE PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"349:3907:47:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"infinite","totalCost":"infinite"},"internal":{"_verifyOrderStatus(bytes32,struct OrderStatus storage pointer,bool,bool)":"infinite","_verifySignature(address,bytes32,bytes memory)":"infinite","_verifyTime(uint256,uint256,bool)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNativeOfferItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrderParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderInvalidRepayParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotValidated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnusedItemParameters\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCounter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"CounterIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderBroken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shadowId\",\"type\":\"uint256\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payTimes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"name\":\"OrderRepaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidNativeOfferItem()\":[{\"details\":\"Revert with an error when attempting to fulfill an order with an      offer for ETH outside of matching orders.\"}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnusedItemParameters()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has unused parameters. This includes both the token and the      identifier parameters for native transfers as well as the identifier      parameter for ERC20 transfers. Note that the conduit does not      perform this check, leaving it up to the calling channel to enforce      when desired.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"Verifiers\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Verifiers contains functions for performing verifications.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/Verifiers.sol\":\"Verifiers\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ConduitControllerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConduitControllerInterface\\n * @author 0age\\n * @notice ConduitControllerInterface contains all external function interfaces,\\n *         structs, events, and errors for the conduit controller.\\n */\\ninterface ConduitControllerInterface {\\n    /**\\n     * @dev Track the conduit key, current owner, new potential owner, and open\\n     *      channels for each deployed conduit.\\n     */\\n    struct ConduitProperties {\\n        bytes32 key;\\n        address owner;\\n        address potentialOwner;\\n        address[] channels;\\n        mapping(address => uint256) channelIndexesPlusOne;\\n    }\\n\\n    /**\\n     * @dev Emit an event whenever a new conduit is created.\\n     *\\n     * @param conduit    The newly created conduit.\\n     * @param conduitKey The conduit key used to create the new conduit.\\n     */\\n    event NewConduit(address conduit, bytes32 conduitKey);\\n\\n    /**\\n     * @dev Emit an event whenever conduit ownership is transferred.\\n     *\\n     * @param conduit       The conduit for which ownership has been\\n     *                      transferred.\\n     * @param previousOwner The previous owner of the conduit.\\n     * @param newOwner      The new owner of the conduit.\\n     */\\n    event OwnershipTransferred(\\n        address indexed conduit,\\n        address indexed previousOwner,\\n        address indexed newOwner\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a conduit owner registers a new potential\\n     *      owner for that conduit.\\n     *\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    event PotentialOwnerUpdated(address indexed newPotentialOwner);\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit using a\\n     *      conduit key where the first twenty bytes of the key do not match the\\n     *      address of the caller.\\n     */\\n    error InvalidCreator();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a new conduit when no\\n     *      initial owner address is supplied.\\n     */\\n    error InvalidInitialOwner();\\n\\n    /**\\n     * @dev Revert with an error when attempting to set a new potential owner\\n     *      that is already set.\\n     */\\n    error NewPotentialOwnerAlreadySet(\\n        address conduit,\\n        address newPotentialOwner\\n    );\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel ownership transfer\\n     *      when no new potential owner is currently set.\\n     */\\n    error NoPotentialOwnerCurrentlySet(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to interact with a conduit that\\n     *      does not yet exist.\\n     */\\n    error NoConduit();\\n\\n    /**\\n     * @dev Revert with an error when attempting to create a conduit that\\n     *      already exists.\\n     */\\n    error ConduitAlreadyExists(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to update channels or transfer\\n     *      ownership of a conduit when the caller is not the owner of the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to register a new potential\\n     *      owner and supplying the null address.\\n     */\\n    error NewPotentialOwnerIsZeroAddress(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to claim ownership of a conduit\\n     *      with a caller that is not the current potential owner for the\\n     *      conduit in question.\\n     */\\n    error CallerIsNotNewPotentialOwner(address conduit);\\n\\n    /**\\n     * @dev Revert with an error when attempting to retrieve a channel using an\\n     *      index that is out of range.\\n     */\\n    error ChannelOutOfRange(address conduit);\\n\\n    /**\\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\\n     *         an initial owner for the deployed conduit. Note that the first\\n     *         twenty bytes of the supplied conduit key must match the caller\\n     *         and that a new conduit cannot be created if one has already been\\n     *         deployed using the same conduit key.\\n     *\\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\\n     *                     the first twenty bytes of the conduit key must match\\n     *                     the caller of this contract.\\n     * @param initialOwner The initial owner to set for the new conduit.\\n     *\\n     * @return conduit The address of the newly deployed conduit.\\n     */\\n    function createConduit(bytes32 conduitKey, address initialOwner)\\n        external\\n        returns (address conduit);\\n\\n    /**\\n     * @notice Open or close a channel on a given conduit, thereby allowing the\\n     *         specified account to execute transfers against that conduit.\\n     *         Extreme care must be taken when updating channels, as malicious\\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\\n     *         tokens where the token holder has granted the conduit approval.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to open or close the channel.\\n     * @param channel The channel to open or close on the conduit.\\n     * @param isOpen  A boolean indicating whether to open or close the channel.\\n     */\\n    function updateChannel(\\n        address conduit,\\n        address channel,\\n        bool isOpen\\n    ) external;\\n\\n    /**\\n     * @notice Initiate conduit ownership transfer by assigning a new potential\\n     *         owner for the given conduit. Once set, the new potential owner\\n     *         may call `acceptOwnership` to claim ownership of the conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to initiate ownership transfer.\\n     * @param newPotentialOwner The new potential owner of the conduit.\\n     */\\n    function transferOwnership(address conduit, address newPotentialOwner)\\n        external;\\n\\n    /**\\n     * @notice Clear the currently set potential owner, if any, from a conduit.\\n     *         Only the owner of the conduit in question may call this function.\\n     *\\n     * @param conduit The conduit for which to cancel ownership transfer.\\n     */\\n    function cancelOwnershipTransfer(address conduit) external;\\n\\n    /**\\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\\n     *         current owner has set as the new potential owner may call this\\n     *         function.\\n     *\\n     * @param conduit The conduit for which to accept ownership.\\n     */\\n    function acceptOwnership(address conduit) external;\\n\\n    /**\\n     * @notice Retrieve the current owner of a deployed conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated owner.\\n     *\\n     * @return owner The owner of the supplied conduit.\\n     */\\n    function ownerOf(address conduit) external view returns (address owner);\\n\\n    /**\\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\\n     *         lookup.\\n     *\\n     * @param conduit The conduit for which to retrieve the associated conduit\\n     *                key.\\n     *\\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\\n     */\\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\\n\\n    /**\\n     * @notice Derive the conduit associated with a given conduit key and\\n     *         determine whether that conduit exists (i.e. whether it has been\\n     *         deployed).\\n     *\\n     * @param conduitKey The conduit key used to derive the conduit.\\n     *\\n     * @return conduit The derived address of the conduit.\\n     * @return exists  A boolean indicating whether the derived conduit has been\\n     *                 deployed or not.\\n     */\\n    function getConduit(bytes32 conduitKey)\\n        external\\n        view\\n        returns (address conduit, bool exists);\\n\\n    /**\\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\\n     *         current owner may set a new potential owner via\\n     *         `transferOwnership` and that owner may then accept ownership of\\n     *         the conduit in question via `acceptOwnership`.\\n     *\\n     * @param conduit The conduit for which to retrieve the potential owner.\\n     *\\n     * @return potentialOwner The potential owner, if any, for the conduit.\\n     */\\n    function getPotentialOwner(address conduit)\\n        external\\n        view\\n        returns (address potentialOwner);\\n\\n    /**\\n     * @notice Retrieve the status (either open or closed) of a given channel on\\n     *         a conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the channel status.\\n     * @param channel The channel for which to retrieve the status.\\n     *\\n     * @return isOpen The status of the channel on the given conduit.\\n     */\\n    function getChannelStatus(address conduit, address channel)\\n        external\\n        view\\n        returns (bool isOpen);\\n\\n    /**\\n     * @notice Retrieve the total number of open channels for a given conduit.\\n     *\\n     * @param conduit The conduit for which to retrieve the total channel count.\\n     *\\n     * @return totalChannels The total number of open channels for the conduit.\\n     */\\n    function getTotalChannels(address conduit)\\n        external\\n        view\\n        returns (uint256 totalChannels);\\n\\n    /**\\n     * @notice Retrieve an open channel at a specific index for a given conduit.\\n     *         Note that the index of a channel can change as a result of other\\n     *         channels being closed on the conduit.\\n     *\\n     * @param conduit      The conduit for which to retrieve the open channel.\\n     * @param channelIndex The index of the channel in question.\\n     *\\n     * @return channel The open channel, if any, at the specified channel index.\\n     */\\n    function getChannel(address conduit, uint256 channelIndex)\\n        external\\n        view\\n        returns (address channel);\\n\\n    /**\\n     * @notice Retrieve all open channels for a given conduit. Note that calling\\n     *         this function for a conduit with many channels will revert with\\n     *         an out-of-gas error.\\n     *\\n     * @param conduit The conduit for which to retrieve open channels.\\n     *\\n     * @return channels An array of open channels on the given conduit.\\n     */\\n    function getChannels(address conduit)\\n        external\\n        view\\n        returns (address[] memory channels);\\n\\n    /**\\n     * @dev Retrieve the conduit creation code and runtime code hashes.\\n     */\\n    function getConduitCodeHashes()\\n        external\\n        view\\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\\n}\\n\",\"keccak256\":\"0xb124e40645efdf5d92b48fd54eaeb0ba1d05fde62bf51e7684c1bc3bf5343388\",\"license\":\"MIT\"},\"contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ConsiderationEventsAndErrors\\n * @author 0age\\n * @notice ConsiderationEventsAndErrors contains all events and errors.\\n */\\ninterface ConsiderationEventsAndErrors {\\n\\n    event OrderFulfilled(\\n        bytes32 orderHash,\\n        address indexed offerer,\\n        uint256 shadowId\\n    );\\n\\n    event OrderRepaid(\\n        bytes32 orderHash,\\n        uint256 payTimes,\\n        bool finalized\\n    );\\n\\n    event OrderBroken(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is successfully cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     * @param offerer   The offerer of the cancelled order.\\n     */\\n    event OrderCancelled(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever an order is explicitly validated. Note that\\n     *      this event will not be emitted on partial fills even though they do\\n     *      validate the order as part of partial fulfillment.\\n     *\\n     * @param orderHash The hash of the validated order.\\n     * @param offerer   The offerer of the validated order.\\n     */\\n    event OrderValidated(\\n        bytes32 orderHash,\\n        address indexed offerer\\n    );\\n\\n    /**\\n     * @dev Emit an event whenever a counter for a given offerer is incremented.\\n     *\\n     * @param newCounter The new counter for the offerer.\\n     * @param offerer  The offerer in question.\\n     */\\n    event CounterIncremented(uint256 newCounter, address indexed offerer);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has\\n     *      already been fully filled.\\n     *\\n     * @param orderHash The order hash on which a fill was attempted.\\n     */\\n    error OrderAlreadyFilled(bytes32 orderHash);\\n\\n    error OrderAlreadyFinalized(bytes32 orderHash);\\n\\n    error OrderAlreadyStarted(bytes32 orderHash);\\n\\n    error OrderNotStarted(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order outside the\\n     *      specified start time and end time.\\n     */\\n    error InvalidTime();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order referencing an\\n     *      invalid conduit (i.e. one that has not been deployed).\\n     */\\n    error InvalidConduit(bytes32 conduitKey, address conduit);\\n\\n    /**\\n     * @dev Revert with an error when an order is supplied for fulfillment with\\n     *      a consideration array that is shorter than the original array.\\n     */\\n    error MissingOriginalConsiderationItems();\\n\\n    /**\\n     * @dev Revert with an error when a call to a conduit fails with revert data\\n     *      that is too expensive to return.\\n     */\\n    error InvalidCallToConduit(address conduit);\\n\\n    /**\\n     * @dev Revert with an error if a consideration amount has not been fully\\n     *      zeroed out after applying all fulfillments.\\n     *\\n     * @param orderIndex         The index of the order with the consideration\\n     *                           item with a shortfall.\\n     * @param considerationIndex The index of the consideration item on the\\n     *                           order.\\n     * @param shortfallAmount    The unfulfilled consideration amount.\\n     */\\n    error ConsiderationNotMet(\\n        uint256 orderIndex,\\n        uint256 considerationIndex,\\n        uint256 shortfallAmount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when insufficient ether is supplied as part of\\n     *      msg.value when fulfilling orders.\\n     */\\n    error InsufficientEtherSupplied();\\n\\n    /**\\n     * @dev Revert with an error when an ether transfer reverts.\\n     */\\n    error EtherTransferGenericFailure(address account, uint256 amount);\\n\\n    /**\\n     * @dev Revert with an error when a partial fill is attempted on an order\\n     *      that does not specify partial fill support in its order type.\\n     */\\n    error PartialFillsNotEnabledForOrder();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill an order that has been\\n     *      cancelled.\\n     *\\n     * @param orderHash The hash of the cancelled order.\\n     */\\n    error OrderIsCancelled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order that has\\n     *      been partially filled.\\n     *\\n     * @param orderHash The hash of the partially used order.\\n     */\\n    error OrderPartiallyFilled(bytes32 orderHash);\\n\\n    /**\\n     * @dev Revert with an error when attempting to cancel an order as a caller\\n     *      other than the indicated offerer or zone.\\n     */\\n    error InvalidCanceller();\\n\\n    /**\\n     * @dev Revert with an error when supplying a fraction with a value of zero\\n     *      for the numerator or denominator, or one where the numerator exceeds\\n     *      the denominator.\\n     */\\n    error BadFraction();\\n\\n    /**\\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\\n     *      non-payable basic order route or does not supply any callvalue to a\\n     *      payable basic order route.\\n     */\\n    error InvalidMsgValue(uint256 value);\\n\\n    /**\\n     * @dev Revert with an error when attempting to fill a basic order using\\n     *      calldata not produced by default ABI encoding.\\n     */\\n    error InvalidBasicOrderParameterEncoding();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill any number of\\n     *      available orders when none are fulfillable.\\n     */\\n    error NoSpecifiedOrdersAvailable();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order with an\\n     *      offer for ETH outside of matching orders.\\n     */\\n    error InvalidNativeOfferItem();\\n\\n    error OrderNotValidated(bytes32 orderHash);\\n\\n    error OrderExpired(bytes32 orderHash);\\n\\n    error OrderNotExpired(bytes32 orderHash);\\n\\n    error OrderInvalidRepayParameters(bytes32 orderHash);\\n\\n    error InvalidOrderParameters();\\n}\\n\",\"keccak256\":\"0x71a166db3dbdc44218081f02a9fe0de3cf2d3d9680ac88ef68c0b376eb1a3e97\",\"license\":\"MIT\"},\"contracts/interfaces/EIP1271Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface EIP1271Interface {\\n    function isValidSignature(bytes32 digest, bytes calldata signature)\\n        external\\n        view\\n        returns (bytes4);\\n}\",\"keccak256\":\"0xba82a40106e4565fda2909937d8ab23dc45622fead50d439ee09994d678828e0\",\"license\":\"MIT\"},\"contracts/interfaces/ReentrancyErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title ReentrancyErrors\\n * @author 0age\\n * @notice ReentrancyErrors contains errors related to reentrancy.\\n */\\ninterface ReentrancyErrors {\\n    /**\\n     * @dev Revert with an error when a caller attempts to reenter a protected\\n     *      function.\\n     */\\n    error NoReentrantCalls();\\n}\\n\",\"keccak256\":\"0xd8825124dc105b07e1d2c857f219a30092f02f14b56905ae44e503ead6d276c8\",\"license\":\"MIT\"},\"contracts/interfaces/SignatureVerificationErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title SignatureVerificationErrors\\n * @author 0age\\n * @notice SignatureVerificationErrors contains all errors related to signature\\n *         verification.\\n */\\ninterface SignatureVerificationErrors {\\n    /**\\n     * @dev Revert with an error when a signature that does not contain a v\\n     *      value of 27 or 28 has been supplied.\\n     *\\n     * @param v The invalid v value.\\n     */\\n    error BadSignatureV(uint8 v);\\n\\n    /**\\n     * @dev Revert with an error when the signer recovered by the supplied\\n     *      signature does not match the offerer or an allowed EIP-1271 signer\\n     *      as specified by the offerer in the event they are a contract.\\n     */\\n    error InvalidSigner();\\n\\n    /**\\n     * @dev Revert with an error when a signer cannot be recovered from the\\n     *      supplied signature.\\n     */\\n    error InvalidSignature();\\n\\n    /**\\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\\n     */\\n    error BadContractSignature();\\n}\\n\",\"keccak256\":\"0xd0f5b26469ba6cd303e5ea9b53cf6b7c25cb00918097eb59a263678b51197381\",\"license\":\"MIT\"},\"contracts/interfaces/TokenTransferrerErrors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/**\\n * @title TokenTransferrerErrors\\n */\\ninterface TokenTransferrerErrors {\\n    /**\\n     * @dev Revert with an error when an ERC721 transfer with amount other than\\n     *      one is attempted.\\n     */\\n    error InvalidERC721TransferAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has an amount of zero.\\n     */\\n    error MissingItemAmount();\\n\\n    /**\\n     * @dev Revert with an error when attempting to fulfill an order where an\\n     *      item has unused parameters. This includes both the token and the\\n     *      identifier parameters for native transfers as well as the identifier\\n     *      parameter for ERC20 transfers. Note that the conduit does not\\n     *      perform this check, leaving it up to the calling channel to enforce\\n     *      when desired.\\n     */\\n    error UnusedItemParameters();\\n\\n    /**\\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\\n     *      transfer reverts.\\n     *\\n     * @param token      The token for which the transfer was attempted.\\n     * @param from       The source of the attempted transfer.\\n     * @param to         The recipient of the attempted transfer.\\n     * @param identifier The identifier for the attempted transfer.\\n     * @param amount     The amount for the attempted transfer.\\n     */\\n    error TokenTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 identifier,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\\n     *\\n     * @param token       The token for which the transfer was attempted.\\n     * @param from        The source of the attempted transfer.\\n     * @param to          The recipient of the attempted transfer.\\n     * @param identifiers The identifiers for the attempted transfer.\\n     * @param amounts     The amounts for the attempted transfer.\\n     */\\n    error ERC1155BatchTransferGenericFailure(\\n        address token,\\n        address from,\\n        address to,\\n        uint256[] identifiers,\\n        uint256[] amounts\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\\n     *      value.\\n     *\\n     * @param token      The token for which the ERC20 transfer was attempted.\\n     * @param from       The source of the attempted ERC20 transfer.\\n     * @param to         The recipient of the attempted ERC20 transfer.\\n     * @param amount     The amount for the attempted ERC20 transfer.\\n     */\\n    error BadReturnValueFromERC20OnTransfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount\\n    );\\n\\n    /**\\n     * @dev Revert with an error when an account being called as an assumed\\n     *      contract does not have code and returns no data.\\n     *\\n     * @param account The account that should contain code.\\n     */\\n    error NoContract(address account);\\n\\n    /**\\n     * @dev Revert with an error when attempting to execute an 1155 batch\\n     *      transfer using calldata not produced by default ABI encoding or with\\n     *      different lengths for ids and amounts arrays.\\n     */\\n    error Invalid1155BatchTransferEncoding();\\n}\\n\",\"keccak256\":\"0x0a89101400c263654f920aad668249ce67eaebd1af7d5582d38456c8384fc962\",\"license\":\"MIT\"},\"contracts/lib/Assertions.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { GettersAndDerivers } from \\\"./GettersAndDerivers.sol\\\";\\n\\nimport {\\n    TokenTransferrerErrors\\n} from \\\"../interfaces/TokenTransferrerErrors.sol\\\";\\n\\nimport { CounterManager } from \\\"./CounterManager.sol\\\";\\n\\ncontract Assertions is\\n    GettersAndDerivers,\\n    CounterManager,\\n    TokenTransferrerErrors\\n{\\n    constructor(address conduitController)\\n        GettersAndDerivers(conduitController)\\n    {}\\n\\n    function _assertNonZeroAmount(uint256 amount) internal pure {\\n        // Revert if the supplied amount is equal to zero.\\n        if (amount == 0) {\\n            revert MissingItemAmount();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5841bbb4c48b541f692567567de5672939afc452bc940ef69a9d0726697d6414\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConduitControllerInterface\\n} from \\\"../interfaces/ConduitControllerInterface.sol\\\";\\n\\ncontract ConsiderationBase {\\n    bytes32 internal immutable _NAME_HASH;\\n    bytes32 internal immutable _VERSION_HASH;\\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\\n    bytes32 internal immutable _ORDER_TYPEHASH;\\n    uint256 internal immutable _CHAIN_ID;\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n\\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\\n\\n    constructor(address conduitController) {\\n        (\\n            _NAME_HASH,\\n            _VERSION_HASH,\\n            _EIP_712_DOMAIN_TYPEHASH,\\n            _ORDER_TYPEHASH\\n        ) = _deriveTypehashes();\\n\\n        _CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\\n\\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\\n\\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\\n        );\\n    }\\n\\n    function _deriveDomainSeparator() internal view returns (bytes32) {\\n        return keccak256(\\n            abi.encode(\\n                _EIP_712_DOMAIN_TYPEHASH,\\n                _NAME_HASH,\\n                _VERSION_HASH,\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    function _nameString() internal pure virtual returns (string memory) {\\n        return \\\"Consideration\\\";\\n    }\\n\\n    function _deriveTypehashes()\\n        internal\\n        pure\\n        returns (\\n            bytes32 nameHash,\\n            bytes32 versionHash,\\n            bytes32 eip712DomainTypehash,\\n            bytes32 orderTypehash\\n        )\\n    {\\n        nameHash = keccak256(bytes(_nameString()));\\n\\n        versionHash = keccak256(bytes(\\\"1.0\\\"));\\n\\n        bytes memory orderComponentsTypeString = abi.encodePacked(\\n            \\\"OrderComponents(\\\",\\n                \\\"address offerer,\\\",\\n                \\\"address token,\\\",\\n                \\\"uint256 identifier,\\\",\\n                \\\"address currency,\\\",\\n                \\\"address artist,\\\",\\n                \\\"address platform,\\\",\\n                \\\"uint256 startTime,\\\",\\n                \\\"uint256 endTime,\\\",\\n                \\\"uint256 duration,\\\",\\n                \\\"uint256 periods,\\\",\\n                \\\"uint256 amount,\\\",\\n                \\\"uint256 ratio,\\\",\\n                \\\"uint256 royalty,\\\",\\n                \\\"uint256 fee,\\\",\\n                \\\"uint256 withdrawFee,\\\",\\n                \\\"uint256 salt,\\\",\\n                \\\"bytes32 conduitKey,\\\",\\n                \\\"uint256 counter\\\",\\n            \\\")\\\"\\n        );\\n\\n        eip712DomainTypehash = keccak256(\\n            abi.encodePacked(\\n                \\\"EIP712Domain(\\\",\\n                    \\\"string name,\\\",\\n                    \\\"string version,\\\",\\n                    \\\"uint256 chainId,\\\",\\n                    \\\"address verifyingContract\\\",\\n                \\\")\\\"\\n            )\\n        );\\n\\n        orderTypehash = keccak256(orderComponentsTypeString);\\n    }\\n}\",\"keccak256\":\"0x9cd33c5b8bd60301ea09c0305587414ef38f6898fa7a1e0dfb217dd26091d106\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationConstants.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\n/*\\n * -------------------------- Disambiguation & Other Notes ---------------------\\n *    - The term \\\"head\\\" is used as it is in the documentation for ABI encoding,\\n *      but only in reference to dynamic types, i.e. it always refers to the\\n *      offset or pointer to the body of a dynamic type. In calldata, the head\\n *      is always an offset (relative to the parent object), while in memory,\\n *      the head is always the pointer to the body. More information found here:\\n *      https://docs.soliditylang.org/en/v0.8.14/abi-spec.html#argument-encoding\\n *        - Note that the length of an array is separate from and precedes the\\n *          head of the array.\\n *\\n *    - The term \\\"body\\\" is used in place of the term \\\"head\\\" used in the ABI\\n *      documentation. It refers to the start of the data for a dynamic type,\\n *      e.g. the first word of a struct or the first word of the first element\\n *      in an array.\\n *\\n *    - The term \\\"pointer\\\" is used to describe the absolute position of a value\\n *      and never an offset relative to another value.\\n *        - The suffix \\\"_ptr\\\" refers to a memory pointer.\\n *        - The suffix \\\"_cdPtr\\\" refers to a calldata pointer.\\n *\\n *    - The term \\\"offset\\\" is used to describe the position of a value relative\\n *      to some parent value. For example, OrderParameters_conduit_offset is the\\n *      offset to the \\\"conduit\\\" value in the OrderParameters struct relative to\\n *      the start of the body.\\n *        - Note: Offsets are used to derive pointers.\\n *\\n *    - Some structs have pointers defined for all of their fields in this file.\\n *      Lines which are commented out are fields that are not used in the\\n *      codebase but have been left in for readability.\\n */\\n\\n// Declare constants for name, version, and reentrancy sentinel values.\\n\\n// Name is right padded, so it touches the length which is left padded. This\\n// enables writing both values at once. Length goes at byte 95 in memory, and\\n// name fills bytes 96-109, so both values can be written left-padded to 77.\\nuint256 constant NameLengthPtr = 77;\\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\\n\\nuint256 constant Version = 0x312e31;\\nuint256 constant Version_length = 3;\\nuint256 constant Version_shift = 0xe8;\\n\\nuint256 constant _NOT_ENTERED = 1;\\nuint256 constant _ENTERED = 2;\\n\\n// Common Offsets\\n// Offsets for identically positioned fields shared by:\\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\\n\\nuint256 constant Common_token_offset = 0x20;\\nuint256 constant Common_identifier_offset = 0x40;\\nuint256 constant Common_amount_offset = 0x60;\\n\\nuint256 constant ReceivedItem_size = 0xa0;\\nuint256 constant ReceivedItem_amount_offset = 0x60;\\nuint256 constant ReceivedItem_recipient_offset = 0x80;\\n\\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\\n\\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\\n// Store the same constant in an abbreviated format for a line length fix.\\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\\n\\nuint256 constant Execution_offerer_offset = 0x20;\\nuint256 constant Execution_conduit_offset = 0x40;\\n\\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\\n    0x7fda727900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x04;\\n\\nuint256 constant Panic_error_signature = (\\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant Panic_error_offset = 0x04;\\nuint256 constant Panic_error_length = 0x24;\\nuint256 constant Panic_arithmetic = 0x11;\\n\\nuint256 constant MissingItemAmount_error_signature = (\\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant MissingItemAmount_error_len = 0x04;\\n\\nuint256 constant OrderParameters_offer_head_offset = 0x20;\\nuint256 constant OrderParameters_consideration_head_offset = 0x40;\\nuint256 constant OrderParameters_conduit_offset = 0x200;\\nuint256 constant OrderParameters_counter_offset = 0x220;\\n\\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\\n\\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\\n\\nuint256 constant AlmostOneWord = 0x1f;\\nuint256 constant OneWord = 0x20;\\nuint256 constant TwoWords = 0x40;\\nuint256 constant ThreeWords = 0x60;\\nuint256 constant FourWords = 0x80;\\nuint256 constant FiveWords = 0xa0;\\n\\nuint256 constant FreeMemoryPointerSlot = 0x40;\\nuint256 constant ZeroSlot = 0x60;\\nuint256 constant DefaultFreeMemoryPointer = 0x80;\\n\\nuint256 constant Slot0x80 = 0x80;\\nuint256 constant Slot0xA0 = 0xa0;\\n\\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_common_params_size = 0xa0;\\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\\n\\nuint256 constant EIP712_Order_size = 0x260;\\nuint256 constant AdditionalRecipients_size = 0x40;\\n\\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\\nuint256 constant EIP712_OrderHash_offset = 0x22;\\nuint256 constant EIP712_DigestPayload_size = 0x42;\\n\\nuint256 constant receivedItemsHash_ptr = 0x60;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  data for OrderFulfilled\\n *\\n *   event OrderFulfilled(\\n *     bytes32 orderHash,\\n *     address indexed offerer,\\n *     address indexed zone,\\n *     address fulfiller,\\n *     SpentItem[] offer,\\n *       > (itemType, token, id, amount)\\n *     ReceivedItem[] consideration\\n *       > (itemType, token, id, amount, recipient)\\n *   )\\n *\\n *  - 0x00: orderHash\\n *  - 0x20: fulfiller\\n *  - 0x40: offer offset (0x80)\\n *  - 0x60: consideration offset (0x120)\\n *  - 0x80: offer.length (1)\\n *  - 0xa0: offerItemType\\n *  - 0xc0: offerToken\\n *  - 0xe0: offerIdentifier\\n *  - 0x100: offerAmount\\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\\n *  - 0x140: considerationItemType\\n *  - 0x160: considerationToken\\n *  - 0x180: considerationIdentifier\\n *  - 0x1a0: considerationAmount\\n *  - 0x1c0: considerationRecipient\\n *  - ...\\n */\\n\\n// Minimum length of the OrderFulfilled event data.\\n// Must be added to the size of the ReceivedItem array for additionalRecipients\\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\\nuint256 constant OrderFulfilled_selector = (\\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\\n);\\n\\n// Minimum offset in memory to OrderFulfilled event data.\\n// Must be added to the size of the EIP712 hash array for additionalRecipients\\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\\nuint256 constant OrderFulfilled_baseOffset = 0x180;\\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\\n\\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\\n\\n// BasicOrderParameters\\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\\n\\nuint256 constant BasicOrder_parameters_ptr = 0x20;\\n\\nuint256 constant BasicOrder_basicOrderType_range = 0x18; // 24 values\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for ConsiderationItem\\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\\n *   - 0xa0: itemType\\n *   - 0xc0: token\\n *   - 0xe0: identifier\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n *   - 0x140: recipient\\n */\\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for OfferItem\\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\\n *   - 0xa0:  itemType\\n *   - 0xc0:  token\\n *   - 0xe0:  identifier (reused for offeredItemsHash)\\n *   - 0x100: startAmount\\n *   - 0x120: endAmount\\n */\\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\\n\\n/*\\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\\n *  EIP712 data for Order\\n *   - 0x80:   Order EIP-712 typehash (constant)\\n *   - 0xa0:   orderParameters.offerer\\n *   - 0xc0:   orderParameters.zone\\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\\n *   - 0x120:  orderType\\n *   - 0x140:  startTime\\n *   - 0x160:  endTime\\n *   - 0x180:  zoneHash\\n *   - 0x1a0:  salt\\n *   - 0x1c0:  conduit\\n *   - 0x1e0:  _counters[orderParameters.offerer] (from storage)\\n */\\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\\nuint256 constant BasicOrder_order_counter_ptr = 0x1e0;\\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\\nuint256 constant BasicOrder_signature_ptr = 0x260;\\n\\n// Signature-related\\nbytes32 constant EIP2098_allButHighestBitMask = (\\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\n);\\nbytes32 constant ECDSA_twentySeventhAndTwentyEighthBytesSet = (\\n    0x0000000000000000000000000000000000000000000000000000000101000000\\n);\\nuint256 constant ECDSA_MaxLength = 65;\\nuint256 constant ECDSA_signature_s_offset = 0x40;\\nuint256 constant ECDSA_signature_v_offset = 0x60;\\n\\nbytes32 constant EIP1271_isValidSignature_selector = (\\n    0x1626ba7e00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant EIP1271_isValidSignature_signatureHead_negativeOffset = 0x20;\\nuint256 constant EIP1271_isValidSignature_digest_negativeOffset = 0x40;\\nuint256 constant EIP1271_isValidSignature_selector_negativeOffset = 0x44;\\nuint256 constant EIP1271_isValidSignature_calldata_baseLength = 0x64;\\n\\nuint256 constant EIP1271_isValidSignature_signature_head_offset = 0x40;\\n\\n// abi.encodeWithSignature(\\\"NoContract(address)\\\")\\nuint256 constant NoContract_error_signature = (\\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant NoContract_error_sig_ptr = 0x0;\\nuint256 constant NoContract_error_token_ptr = 0x4;\\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\\n\\nuint256 constant EIP_712_PREFIX = (\\n    0x1901000000000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant ExtraGasBuffer = 0x20;\\nuint256 constant CostPerWord = 3;\\nuint256 constant MemoryExpansionCoefficient = 0x200; // 512\\n\\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\\nuint256 constant Create2AddressDerivation_length = 0x55;\\n\\nuint256 constant MaskOverByteTwelve = (\\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaskOverLastTwentyBytes = (\\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\\n);\\n\\nuint256 constant MaskOverFirstFourBytes = (\\n    0xffffffff00000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant Conduit_execute_signature = (\\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\\n);\\n\\nuint256 constant MaxUint8 = 0xff;\\nuint256 constant MaxUint120 = 0xffffffffffffffffffffffffffffff;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\\n\\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\\n\\nuint256 constant OneConduitExecute_size = 0x104;\\n\\n// Sentinel value to indicate that the conduit accumulator is not armed.\\nuint256 constant AccumulatorDisarmed = 0x20;\\nuint256 constant AccumulatorArmed = 0x40;\\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\\nuint256 constant Accumulator_selector_ptr = 0x40;\\nuint256 constant Accumulator_array_offset_ptr = 0x44;\\nuint256 constant Accumulator_array_length_ptr = 0x64;\\n\\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\\n\\nuint256 constant Accumulator_array_offset = 0x20;\\nuint256 constant Conduit_transferItem_size = 0xc0;\\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\\n\\n// Declare constant for errors related to amount derivation.\\n// error InexactFraction() @ AmountDerivationErrors.sol\\nuint256 constant InexactFraction_error_signature = (\\n    0xc63cf08900000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InexactFraction_error_len = 0x04;\\n\\n// Declare constant for errors related to signature verification.\\nuint256 constant Ecrecover_precompile = 1;\\nuint256 constant Ecrecover_args_size = 0x80;\\nuint256 constant Signature_lower_v = 27;\\n\\n// error BadSignatureV(uint8) @ SignatureVerificationErrors.sol\\nuint256 constant BadSignatureV_error_signature = (\\n    0x1f003d0a00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadSignatureV_error_offset = 0x04;\\nuint256 constant BadSignatureV_error_length = 0x24;\\n\\n// error InvalidSigner() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSigner_error_signature = (\\n    0x815e1d6400000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSigner_error_length = 0x04;\\n\\n// error InvalidSignature() @ SignatureVerificationErrors.sol\\nuint256 constant InvalidSignature_error_signature = (\\n    0x8baa579f00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant InvalidSignature_error_length = 0x04;\\n\\n// error BadContractSignature() @ SignatureVerificationErrors.sol\\nuint256 constant BadContractSignature_error_signature = (\\n    0x4f7fb80d00000000000000000000000000000000000000000000000000000000\\n);\\nuint256 constant BadContractSignature_error_length = 0x04;\\n\\nuint256 constant NumBitsAfterSelector = 0xe0;\\n\\n// 69 is the lowest modulus for which the remainder\\n// of every selector other than the two match functions\\n// is greater than those of the match functions.\\nuint256 constant NonMatchSelector_MagicModulus = 69;\\n// Of the two match function selectors, the highest\\n// remainder modulo 69 is 29.\\nuint256 constant NonMatchSelector_MagicRemainder = 0x1d;\\n\",\"keccak256\":\"0xfbca8f942848c1ccbdfd92f61489474277e1013b2830a9d34068b63e1c68fca2\",\"license\":\"MIT\"},\"contracts/lib/ConsiderationStructs.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\nstruct OrderComponents {\\n    address offerer;\\n    address token;\\n    uint256 identifier;\\n    address currency;\\n    address artist;\\n    address platform;\\n    uint256 startTime;\\n    uint256 endTime;\\n    uint256 duration;\\n    uint256 periods;\\n    uint256 amount;\\n    uint256 ratio;\\n    uint256 royalty;\\n    uint256 fee;\\n    uint256 withdrawFee;\\n    uint256 salt;\\n    bytes32 conduitKey;\\n    uint256 counter;\\n}\\n\\nstruct OrderParameters {\\n    address offerer;    // 0x00\\n    address token;      // 0x20\\n    uint256 identifier; // 0x40\\n    address currency;   // 0x60\\n    address artist;     // 0x80\\n    address platform;   // 0xa0\\n    uint256 startTime;  // 0xc0\\n    uint256 endTime;    // 0xe0\\n    uint256 duration;   // 0x100\\n    uint256 periods;    // 0x120\\n    uint256 amount;     // 0x140\\n    uint256 ratio;      // 0x160\\n    uint256 royalty;    // 0x180\\n    uint256 fee;        // 0x1a0\\n    uint256 withdrawFee;// 0x1c0\\n    uint256 salt;       // 0x1e0\\n    bytes32 conduitKey; // 0x200\\n}\\n\\nstruct Order {\\n    OrderParameters parameters;\\n    bytes signature;\\n}\\n\\nstruct OrderStatus {\\n    bool isValidated;\\n    bool isCancelled;\\n    bool isFinalized;\\n    bool isBroken;\\n    address fulfiller;\\n    uint256 startedAt;\\n    uint256 shadowId;\\n    uint256 paidTimes;\\n}\",\"keccak256\":\"0xe0a311247127b5bbaf92415e092bec717f990ed8cfe6dec710046d755db38048\",\"license\":\"MIT\"},\"contracts/lib/CounterManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport {\\n    ConsiderationEventsAndErrors\\n} from \\\"../interfaces/ConsiderationEventsAndErrors.sol\\\";\\n\\nimport { ReentrancyGuard } from \\\"./ReentrancyGuard.sol\\\";\\n\\ncontract CounterManager is ConsiderationEventsAndErrors, ReentrancyGuard {\\n\\n    mapping(address => uint256) private _counters;\\n\\n    function _incrementCounter() internal returns (uint256 newCounter) {\\n        _assertNonReentrant();\\n\\n        unchecked {\\n            newCounter = ++_counters[msg.sender];\\n        }\\n\\n        emit CounterIncremented(newCounter, msg.sender);\\n    }\\n\\n    function _getCounter(address offerer)\\n        internal\\n        view\\n        returns (uint256 currentCounter)\\n    {\\n        currentCounter = _counters[offerer];\\n    }\\n}\\n\",\"keccak256\":\"0xf07f27dab21fe6607342bc513064c81f10729cf4b9f41e6173ae66d6a4b7a25a\",\"license\":\"MIT\"},\"contracts/lib/GettersAndDerivers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderParameters } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { ConsiderationBase } from \\\"./ConsiderationBase.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\ncontract GettersAndDerivers is ConsiderationBase {\\n\\n    constructor(address conduitController)\\n        ConsiderationBase(conduitController)\\n    {}\\n\\n    function _deriveOrderHash(\\n        OrderParameters memory orderParameters,\\n        uint256 counter\\n    ) internal view returns (bytes32 orderHash) {\\n        bytes32 typeHash = _ORDER_TYPEHASH;\\n\\n        assembly {\\n            let typeHashPtr := sub(orderParameters, OneWord)\\n\\n            let previousValue := mload(typeHashPtr)\\n\\n            mstore(typeHashPtr, typeHash)\\n\\n            let counterPtr := add(\\n                orderParameters,\\n                OrderParameters_counter_offset\\n            )\\n\\n            let counterDataPtr := mload(counterPtr)\\n\\n            mstore(counterPtr, counter)\\n\\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\\n\\n            mstore(typeHashPtr, previousValue)\\n\\n            mstore(counterPtr, counterDataPtr)\\n        }\\n    }\\n\\n    function _deriveConduit(bytes32 conduitKey)\\n        internal\\n        view\\n        returns (address conduit)\\n    {\\n        // Read conduit controller address from runtime and place on the stack.\\n        address conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Read conduit creation code hash from runtime and place on the stack.\\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\\n\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Retrieve the free memory pointer; it will be replaced afterwards.\\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\\n\\n            // Place the control character and the conduit controller in scratch\\n            // space; note that eleven bytes at the beginning are left unused.\\n            mstore(0, or(MaskOverByteTwelve, conduitController))\\n\\n            // Place the conduit key in the next region of scratch space.\\n            mstore(OneWord, conduitKey)\\n\\n            // Place conduit creation code hash in free memory pointer location.\\n            mstore(TwoWords, conduitCreationCodeHash)\\n\\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\\n            conduit := and(\\n                // Hash the relevant region.\\n                keccak256(\\n                    // The region starts at memory pointer 11.\\n                    Create2AddressDerivation_ptr,\\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\\n                    Create2AddressDerivation_length\\n                ),\\n                // The address equals the last twenty bytes of the hash.\\n                MaskOverLastTwentyBytes\\n            )\\n\\n            // Restore the free memory pointer.\\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to get the EIP-712 domain separator. If the\\n     *      chainId matches the chainId set on deployment, the cached domain\\n     *      separator will be returned; otherwise, it will be derived from\\n     *      scratch.\\n     *\\n     * @return The domain separator.\\n     */\\n    function _domainSeparator() internal view returns (bytes32) {\\n        // prettier-ignore\\n        return block.chainid == _CHAIN_ID\\n            ? _DOMAIN_SEPARATOR\\n            : _deriveDomainSeparator();\\n    }\\n\\n    /**\\n     * @dev Internal view function to retrieve configuration information for\\n     *      this contract.\\n     *\\n     * @return version           The contract version.\\n     * @return domainSeparator   The domain separator for this contract.\\n     * @return conduitController The conduit Controller set for this contract.\\n     */\\n    function _information()\\n        internal\\n        view\\n        returns (\\n            string memory version,\\n            bytes32 domainSeparator,\\n            address conduitController\\n        )\\n    {\\n        // Derive the domain separator.\\n        domainSeparator = _domainSeparator();\\n\\n        // Declare variable as immutables cannot be accessed within assembly.\\n        conduitController = address(_CONDUIT_CONTROLLER);\\n\\n        // Allocate a string with the intended length.\\n        version = new string(Version_length);\\n\\n        // Set the version as data on the newly allocated string.\\n        assembly {\\n            mstore(add(version, OneWord), shl(Version_shift, Version))\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to efficiently derive an digest to sign for\\n     *      an order in accordance with EIP-712.\\n     *\\n     * @param domainSeparator The domain separator.\\n     * @param orderHash       The order hash.\\n     *\\n     * @return value The hash.\\n     */\\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\\n        internal\\n        pure\\n        returns (bytes32 value)\\n    {\\n        // Leverage scratch space to perform an efficient hash.\\n        assembly {\\n            // Place the EIP-712 prefix at the start of scratch space.\\n            mstore(0, EIP_712_PREFIX)\\n\\n            // Place the domain separator in the next region of scratch space.\\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\\n\\n            // Place the order hash in scratch space, spilling into the first\\n            // two bytes of the free memory pointer \\u2014 this should never be set\\n            // as memory cannot be expanded to that size, and will be zeroed out\\n            // after the hash is performed.\\n            mstore(EIP712_OrderHash_offset, orderHash)\\n\\n            // Hash the relevant region (65 bytes).\\n            value := keccak256(0, EIP712_DigestPayload_size)\\n\\n            // Clear out the dirtied bits in the memory pointer.\\n            mstore(EIP712_OrderHash_offset, 0)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5c0866572e7dfe34edad443a82e35851c4d3631cc9c5957994d68e41516dd6c4\",\"license\":\"MIT\"},\"contracts/lib/LowLevelHelpers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title LowLevelHelpers\\n * @author 0age\\n * @notice LowLevelHelpers contains logic for performing various low-level\\n *         operations.\\n */\\ncontract LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to staticcall an arbitrary target with given\\n     *      calldata. Note that no data is written to memory and no contract\\n     *      size check is performed.\\n     *\\n     * @param target   The account to staticcall.\\n     * @param callData The calldata to supply when staticcalling the target.\\n     *\\n     * @return success The status of the staticcall to the target.\\n     */\\n    function _staticcall(address target, bytes memory callData)\\n        internal\\n        view\\n        returns (bool success)\\n    {\\n        assembly {\\n            // Perform the staticcall.\\n            success := staticcall(\\n                gas(),\\n                target,\\n                add(callData, OneWord),\\n                mload(callData),\\n                0,\\n                0\\n            )\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal view function to revert and pass along the revert reason if\\n     *      data was returned by the last call and that the size of that data\\n     *      does not exceed the currently allocated memory size.\\n     */\\n    function _revertWithReasonIfOneIsReturned() internal view {\\n        assembly {\\n            // If it returned a message, bubble it up as long as sufficient gas\\n            // remains to do so:\\n            if returndatasize() {\\n                // Ensure that sufficient gas is available to copy returndata\\n                // while expanding memory where necessary. Start by computing\\n                // the word size of returndata and allocated memory.\\n                let returnDataWords := div(\\n                    add(returndatasize(), AlmostOneWord),\\n                    OneWord\\n                )\\n\\n                // Note: use the free memory pointer in place of msize() to work\\n                // around a Yul warning that prevents accessing msize directly\\n                // when the IR pipeline is activated.\\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\\n\\n                // Next, compute the cost of the returndatacopy.\\n                let cost := mul(CostPerWord, returnDataWords)\\n\\n                // Then, compute cost of new memory allocation.\\n                if gt(returnDataWords, msizeWords) {\\n                    cost := add(\\n                        cost,\\n                        add(\\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\\n                            div(\\n                                sub(\\n                                    mul(returnDataWords, returnDataWords),\\n                                    mul(msizeWords, msizeWords)\\n                                ),\\n                                MemoryExpansionCoefficient\\n                            )\\n                        )\\n                    )\\n                }\\n\\n                // Finally, add a small constant and compare to gas remaining;\\n                // bubble up the revert data if enough gas is still available.\\n                if lt(add(cost, ExtraGasBuffer), gas()) {\\n                    // Copy returndata to memory; overwrite existing memory.\\n                    returndatacopy(0, 0, returndatasize())\\n\\n                    // Revert, specifying memory region with copied returndata.\\n                    revert(0, returndatasize())\\n                }\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal pure function to determine if the first word of returndata\\n     *      matches an expected magic value.\\n     *\\n     * @param expected The expected magic value.\\n     *\\n     * @return A boolean indicating whether the expected value matches the one\\n     *         located in the first word of returndata.\\n     */\\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\\n        // Declare a variable for the value held by the return data buffer.\\n        bytes4 result;\\n\\n        // Utilize assembly in order to read directly from returndata buffer.\\n        assembly {\\n            // Only put result on stack if return data is exactly one word.\\n            if eq(returndatasize(), OneWord) {\\n                // Copy the word directly from return data into scratch space.\\n                returndatacopy(0, 0, OneWord)\\n\\n                // Take value from scratch space and place it on the stack.\\n                result := mload(0)\\n            }\\n        }\\n\\n        // Return a boolean indicating whether expected and located value match.\\n        return result != expected;\\n    }\\n}\\n\",\"keccak256\":\"0x57700a6f8f18d1cdfc8492724ef3b9f89aa143382f13794489df70c1f3fc027c\",\"license\":\"MIT\"},\"contracts/lib/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { ReentrancyErrors } from \\\"../interfaces/ReentrancyErrors.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title ReentrancyGuard\\n * @author 0age\\n * @notice ReentrancyGuard contains a storage variable and related functionality\\n *         for protecting against reentrancy.\\n */\\ncontract ReentrancyGuard is ReentrancyErrors {\\n    // Prevent reentrant calls on protected functions.\\n    uint256 private _reentrancyGuard;\\n\\n    /**\\n     * @dev Initialize the reentrancy guard during deployment.\\n     */\\n    constructor() {\\n        // Initialize the reentrancy guard in a cleared state.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to ensure that the sentinel value for the\\n     *      reentrancy guard is not currently set and, if not, to set the\\n     *      sentinel value for the reentrancy guard.\\n     */\\n    function _setReentrancyGuard() internal {\\n        // Ensure that the reentrancy guard is not already set.\\n        _assertNonReentrant();\\n\\n        // Set the reentrancy guard.\\n        _reentrancyGuard = _ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal function to unset the reentrancy guard sentinel value.\\n     */\\n    function _clearReentrancyGuard() internal {\\n        // Clear the reentrancy guard.\\n        _reentrancyGuard = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Internal view function to ensure that the sentinel value for the\\n            reentrancy guard is not currently set.\\n     */\\n    function _assertNonReentrant() internal view {\\n        // Ensure that the reentrancy guard is not currently set.\\n        if (_reentrancyGuard != _NOT_ENTERED) {\\n            revert NoReentrantCalls();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa52711c788a24071f8a872ea5ee3030f0f8f592abf8f0d5577707e585a7628d5\",\"license\":\"MIT\"},\"contracts/lib/SignatureVerification.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { EIP1271Interface } from \\\"../interfaces/EIP1271Interface.sol\\\";\\n\\nimport {\\n    SignatureVerificationErrors\\n} from \\\"../interfaces/SignatureVerificationErrors.sol\\\";\\n\\nimport { LowLevelHelpers } from \\\"./LowLevelHelpers.sol\\\";\\n\\nimport \\\"./ConsiderationConstants.sol\\\";\\n\\n/**\\n * @title SignatureVerification\\n * @author 0age\\n * @notice SignatureVerification contains logic for verifying signatures.\\n */\\ncontract SignatureVerification is SignatureVerificationErrors, LowLevelHelpers {\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied signer.\\n     *\\n     * @param signer    The signer for the order.\\n     * @param digest    The digest to verify the signature against.\\n     * @param signature A signature from the signer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _assertValidSignature(\\n        address signer,\\n        bytes32 digest,\\n        bytes memory signature\\n    ) internal view {\\n        // Declare value for ecrecover equality or 1271 call success status.\\n        bool success;\\n\\n        // Utilize assembly to perform optimized signature verification check.\\n        assembly {\\n            // Ensure that first word of scratch space is empty.\\n            mstore(0, 0)\\n\\n            // Declare value for v signature parameter.\\n            let v\\n\\n            // Get the length of the signature.\\n            let signatureLength := mload(signature)\\n\\n            // Get the pointer to the value preceding the signature length.\\n            // This will be used for temporary memory overrides - either the\\n            // signature head for isValidSignature or the digest for ecrecover.\\n            let wordBeforeSignaturePtr := sub(signature, OneWord)\\n\\n            // Cache the current value behind the signature to restore it later.\\n            let cachedWordBeforeSignature := mload(wordBeforeSignaturePtr)\\n\\n            // Declare lenDiff + recoveredSigner scope to manage stack pressure.\\n            {\\n                // Take the difference between the max ECDSA signature length\\n                // and the actual signature length. Overflow desired for any\\n                // values > 65. If the diff is not 0 or 1, it is not a valid\\n                // ECDSA signature - move on to EIP1271 check.\\n                let lenDiff := sub(ECDSA_MaxLength, signatureLength)\\n\\n                // Declare variable for recovered signer.\\n                let recoveredSigner\\n\\n                // If diff is 0 or 1, it may be an ECDSA signature.\\n                // Try to recover signer.\\n                if iszero(gt(lenDiff, 1)) {\\n                    // Read the signature `s` value.\\n                    let originalSignatureS := mload(\\n                        add(signature, ECDSA_signature_s_offset)\\n                    )\\n\\n                    // Read the first byte of the word after `s`. If the\\n                    // signature is 65 bytes, this will be the real `v` value.\\n                    // If not, it will need to be modified - doing it this way\\n                    // saves an extra condition.\\n                    v := byte(\\n                        0,\\n                        mload(add(signature, ECDSA_signature_v_offset))\\n                    )\\n\\n                    // If lenDiff is 1, parse 64-byte signature as ECDSA.\\n                    if lenDiff {\\n                        // Extract yParity from highest bit of vs and add 27 to\\n                        // get v.\\n                        v := add(\\n                            shr(MaxUint8, originalSignatureS),\\n                            Signature_lower_v\\n                        )\\n\\n                        // Extract canonical s from vs, all but the highest bit.\\n                        // Temporarily overwrite the original `s` value in the\\n                        // signature.\\n                        mstore(\\n                            add(signature, ECDSA_signature_s_offset),\\n                            and(\\n                                originalSignatureS,\\n                                EIP2098_allButHighestBitMask\\n                            )\\n                        )\\n                    }\\n                    // Temporarily overwrite the signature length with `v` to\\n                    // conform to the expected input for ecrecover.\\n                    mstore(signature, v)\\n\\n                    // Temporarily overwrite the word before the length with\\n                    // `digest` to conform to the expected input for ecrecover.\\n                    mstore(wordBeforeSignaturePtr, digest)\\n\\n                    // Attempt to recover the signer for the given signature. Do\\n                    // not check the call status as ecrecover will return a null\\n                    // address if the signature is invalid.\\n                    pop(\\n                        staticcall(\\n                            gas(),\\n                            Ecrecover_precompile, // Call ecrecover precompile.\\n                            wordBeforeSignaturePtr, // Use data memory location.\\n                            Ecrecover_args_size, // Size of digest, v, r, and s.\\n                            0, // Write result to scratch space.\\n                            OneWord // Provide size of returned result.\\n                        )\\n                    )\\n\\n                    // Restore cached word before signature.\\n                    mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n\\n                    // Restore cached signature length.\\n                    mstore(signature, signatureLength)\\n\\n                    // Restore cached signature `s` value.\\n                    mstore(\\n                        add(signature, ECDSA_signature_s_offset),\\n                        originalSignatureS\\n                    )\\n\\n                    // Read the recovered signer from the buffer given as return\\n                    // space for ecrecover.\\n                    recoveredSigner := mload(0)\\n                }\\n\\n                // Set success to true if the signature provided was a valid\\n                // ECDSA signature and the signer is not the null address. Use\\n                // gt instead of direct as success is used outside of assembly.\\n                success := and(eq(signer, recoveredSigner), gt(signer, 0))\\n            }\\n\\n            // If the signature was not verified with ecrecover, try EIP1271.\\n            if iszero(success) {\\n                // Temporarily overwrite the word before the signature length\\n                // and use it as the head of the signature input to\\n                // `isValidSignature`, which has a value of 64.\\n                mstore(\\n                    wordBeforeSignaturePtr,\\n                    EIP1271_isValidSignature_signature_head_offset\\n                )\\n\\n                // Get pointer to use for the selector of `isValidSignature`.\\n                let selectorPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_selector_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the selector pointer.\\n                let cachedWordOverwrittenBySelector := mload(selectorPtr)\\n\\n                // Get pointer to use for `digest` input to `isValidSignature`.\\n                let digestPtr := sub(\\n                    signature,\\n                    EIP1271_isValidSignature_digest_negativeOffset\\n                )\\n\\n                // Cache the value currently stored at the digest pointer.\\n                let cachedWordOverwrittenByDigest := mload(digestPtr)\\n\\n                // Write the selector first, since it overlaps the digest.\\n                mstore(selectorPtr, EIP1271_isValidSignature_selector)\\n\\n                // Next, write the digest.\\n                mstore(digestPtr, digest)\\n\\n                // Call signer with `isValidSignature` to validate signature.\\n                success := staticcall(\\n                    gas(),\\n                    signer,\\n                    selectorPtr,\\n                    add(\\n                        signatureLength,\\n                        EIP1271_isValidSignature_calldata_baseLength\\n                    ),\\n                    0,\\n                    OneWord\\n                )\\n\\n                // Determine if the signature is valid on successful calls.\\n                if success {\\n                    // If first word of scratch space does not contain EIP-1271\\n                    // signature selector, revert.\\n                    if iszero(eq(mload(0), EIP1271_isValidSignature_selector)) {\\n                        // Revert with bad 1271 signature if signer has code.\\n                        if extcodesize(signer) {\\n                            // Bad contract signature.\\n                            mstore(0, BadContractSignature_error_signature)\\n                            revert(0, BadContractSignature_error_length)\\n                        }\\n\\n                        // Check if signature length was invalid.\\n                        if gt(sub(ECDSA_MaxLength, signatureLength), 1) {\\n                            // Revert with generic invalid signature error.\\n                            mstore(0, InvalidSignature_error_signature)\\n                            revert(0, InvalidSignature_error_length)\\n                        }\\n\\n                        // Check if v was invalid.\\n                        if iszero(\\n                            byte(v, ECDSA_twentySeventhAndTwentyEighthBytesSet)\\n                        ) {\\n                            // Revert with invalid v value.\\n                            mstore(0, BadSignatureV_error_signature)\\n                            mstore(BadSignatureV_error_offset, v)\\n                            revert(0, BadSignatureV_error_length)\\n                        }\\n\\n                        // Revert with generic invalid signer error message.\\n                        mstore(0, InvalidSigner_error_signature)\\n                        revert(0, InvalidSigner_error_length)\\n                    }\\n                }\\n\\n                // Restore the cached values overwritten by selector, digest and\\n                // signature head.\\n                mstore(wordBeforeSignaturePtr, cachedWordBeforeSignature)\\n                mstore(selectorPtr, cachedWordOverwrittenBySelector)\\n                mstore(digestPtr, cachedWordOverwrittenByDigest)\\n            }\\n        }\\n\\n        // If the call failed...\\n        if (!success) {\\n            // Revert and pass reason along if one was returned.\\n            _revertWithReasonIfOneIsReturned();\\n\\n            // Otherwise, revert with error indicating bad contract signature.\\n            assembly {\\n                mstore(0, BadContractSignature_error_signature)\\n                revert(0, BadContractSignature_error_length)\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9af8a720f3f6aac730d7896484f407ecea62105c1c9dc45666273d51555a0f42\",\"license\":\"MIT\"},\"contracts/lib/Verifiers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport { OrderStatus } from \\\"./ConsiderationStructs.sol\\\";\\n\\nimport { Assertions } from \\\"./Assertions.sol\\\";\\n\\nimport { SignatureVerification } from \\\"./SignatureVerification.sol\\\";\\n\\n/**\\n * @title Verifiers\\n * @author 0age\\n * @notice Verifiers contains functions for performing verifications.\\n */\\ncontract Verifiers is Assertions, SignatureVerification {\\n    /**\\n     * @dev Derive and set hashes, reference chainId, and associated domain\\n     *      separator during deployment.\\n     *\\n     * @param conduitController A contract that deploys conduits, or proxies\\n     *                          that may optionally be used to transfer approved\\n     *                          ERC20/721/1155 tokens.\\n     */\\n    constructor(address conduitController) Assertions(conduitController) {}\\n\\n    /**\\n     * @dev Internal view function to ensure that the current time falls within\\n     *      an order's valid timespan.\\n     *\\n     * @param startTime       The time at which the order becomes active.\\n     * @param endTime         The time at which the order becomes inactive.\\n     * @param revertOnInvalid A boolean indicating whether to revert if the\\n     *                        order is not active.\\n     *\\n     * @return valid A boolean indicating whether the order is active.\\n     */\\n    function _verifyTime(\\n        uint256 startTime,\\n        uint256 endTime,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        // Revert if order's timespan hasn't started yet or has already ended.\\n        if (startTime > block.timestamp || endTime <= block.timestamp) {\\n            // Only revert if revertOnInvalid has been supplied as true.\\n            if (revertOnInvalid) {\\n                revert InvalidTime();\\n            }\\n\\n            // Return false as the order is invalid.\\n            return false;\\n        }\\n\\n        // Return true as the order time is valid.\\n        valid = true;\\n    }\\n\\n    /**\\n     * @dev Internal view function to verify the signature of an order. An\\n     *      ERC-1271 fallback will be attempted if either the signature length\\n     *      is not 64 or 65 bytes or if the recovered signer does not match the\\n     *      supplied offerer. Note that in cases where a 64 or 65 byte signature\\n     *      is supplied, only standard ECDSA signatures that recover to a\\n     *      non-zero address are supported.\\n     *\\n     * @param offerer   The offerer for the order.\\n     * @param orderHash The order hash.\\n     * @param signature A signature from the offerer indicating that the order\\n     *                  has been approved.\\n     */\\n    function _verifySignature(\\n        address offerer,\\n        bytes32 orderHash,\\n        bytes memory signature\\n    ) internal view {\\n        // Skip signature verification if the offerer is the caller.\\n        if (offerer == msg.sender) {\\n            return;\\n        }\\n\\n        // Derive EIP-712 digest using the domain separator and the order hash.\\n        bytes32 digest = _deriveEIP712Digest(_domainSeparator(), orderHash);\\n\\n        // Ensure that the signature for the digest is valid for the offerer.\\n        _assertValidSignature(offerer, digest, signature);\\n    }\\n\\n    function _verifyOrderStatus(\\n        bytes32 orderHash,\\n        OrderStatus storage orderStatus,\\n        bool firstPay,\\n        bool revertOnInvalid\\n    ) internal view returns (bool valid) {\\n        if (orderStatus.isCancelled) {\\n            if (revertOnInvalid) {\\n                revert OrderIsCancelled(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (orderStatus.isFinalized) {\\n            if (revertOnInvalid) {\\n                revert OrderAlreadyFinalized(orderHash);\\n            }\\n\\n            return false;\\n        }\\n\\n        if (firstPay) {\\n            if (orderStatus.paidTimes > 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderAlreadyStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        } else {\\n            if (orderStatus.paidTimes == 0) {\\n                if (revertOnInvalid) {\\n                    revert OrderNotStarted(orderHash);\\n                }\\n                return false;\\n            }\\n        }\\n\\n        valid = true;\\n    }\\n}\\n\",\"keccak256\":\"0x4166159d504ffb5810fbad9c64445fd23659f5b19e84a61dde67f8760bcd1255\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7723,"contract":"contracts/lib/Verifiers.sol:Verifiers","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":5403,"contract":"contracts/lib/Verifiers.sol:Verifiers","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"notice":"Verifiers contains functions for performing verifications.","version":1}}},"contracts/test/TestERC20.sol":{"TestERC20":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_157":{"entryPoint":null,"id":157,"parameterSlots":2,"returnSlots":0},"@_8451":{"entryPoint":null,"id":8451,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":283,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:396:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"69:325:54","statements":[{"nodeType":"YulAssignment","src":"79:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"93:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"96:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"89:3:54"},"nodeType":"YulFunctionCall","src":"89:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"79:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"110:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"140:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"146:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"136:3:54"},"nodeType":"YulFunctionCall","src":"136:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"114:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"187:31:54","statements":[{"nodeType":"YulAssignment","src":"189:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"203:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"211:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"199:3:54"},"nodeType":"YulFunctionCall","src":"199:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"189:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"167:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"160:6:54"},"nodeType":"YulFunctionCall","src":"160:26:54"},"nodeType":"YulIf","src":"157:61:54"},{"body":{"nodeType":"YulBlock","src":"277:111:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"298:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"305:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"310:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"301:3:54"},"nodeType":"YulFunctionCall","src":"301:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"291:6:54"},"nodeType":"YulFunctionCall","src":"291:31:54"},"nodeType":"YulExpressionStatement","src":"291:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"342:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"345:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"335:6:54"},"nodeType":"YulFunctionCall","src":"335:15:54"},"nodeType":"YulExpressionStatement","src":"335:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"370:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"373:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"363:6:54"},"nodeType":"YulFunctionCall","src":"363:15:54"},"nodeType":"YulExpressionStatement","src":"363:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"233:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"256:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"264:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"253:2:54"},"nodeType":"YulFunctionCall","src":"253:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"230:2:54"},"nodeType":"YulFunctionCall","src":"230:38:54"},"nodeType":"YulIf","src":"227:161:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"49:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"58:6:54","type":""}],"src":"14:380:54"}]},"contents":"{\n    { }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060408051808201825260098082526805465737445524332360bc1b602080840182815285518087019096529285528401528151919291620000569160039162000075565b5080516200006c90600490602084019062000075565b50505062000157565b82805462000083906200011b565b90600052602060002090601f016020900481019282620000a75760008555620000f2565b82601f10620000c257805160ff1916838001178555620000f2565b82800160010185558215620000f2579182015b82811115620000f2578251825591602001919060010190620000d5565b506200010092915062000104565b5090565b5b8082111562000100576000815560010162000105565b600181811c908216806200013057607f821691505b6020821081036200015157634e487b7160e01b600052602260045260246000fd5b50919050565b610f6a80620001676000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806340c10f191161008c57806395d89b411161006657806395d89b41146101ca578063a457c2d7146101d2578063a9059cbb146101e5578063dd62ed3e146101f857600080fd5b806340c10f191461016c57806342966c681461018157806370a082311461019457600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a578063395093511461015957600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec61023e565b6040516100f99190610d13565b60405180910390f35b610115610110366004610daf565b6102d0565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610dd9565b6102e8565b604051601281526020016100f9565b610115610167366004610daf565b61030c565b61017f61017a366004610daf565b610358565b005b61017f61018f366004610e15565b6103d5565b6101296101a2366004610e2e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100ec6103e2565b6101156101e0366004610daf565b6103f1565b6101156101f3366004610daf565b6104c2565b610129610206366004610e50565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461024d90610e83565b80601f016020809104026020016040519081016040528092919081815260200182805461027990610e83565b80156102c65780601f1061029b576101008083540402835291602001916102c6565b820191906000526020600020905b8154815290600101906020018083116102a957829003601f168201915b5050505050905090565b6000336102de8185856104d0565b5060019392505050565b6000336102f6858285610684565b61030185858561075b565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102de9082908690610353908790610f05565b6104d0565b806000036103c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f616d6f756e74203d3d203000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6103d18282610a0e565b5050565b6103df3382610b2e565b50565b60606004805461024d90610e83565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103be565b61030182868684036104d0565b6000336102de81858561075b565b73ffffffffffffffffffffffffffffffffffffffff8316610572576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff8216610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107555781811015610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103be565b61075584848484036104d0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166107fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff82166108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822085850390559185168152908120805484929061099b908490610f05565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a0191815260200190565b60405180910390a3610755565b73ffffffffffffffffffffffffffffffffffffffff8216610a8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103be565b8060026000828254610a9d9190610f05565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610ad7908490610f05565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610bd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610cc3908490610f1d565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610677565b600060208083528351808285015260005b81811015610d4057858101830151858201604001528201610d24565b81811115610d52576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610daa57600080fd5b919050565b60008060408385031215610dc257600080fd5b610dcb83610d86565b946020939093013593505050565b600080600060608486031215610dee57600080fd5b610df784610d86565b9250610e0560208501610d86565b9150604084013590509250925092565b600060208284031215610e2757600080fd5b5035919050565b600060208284031215610e4057600080fd5b610e4982610d86565b9392505050565b60008060408385031215610e6357600080fd5b610e6c83610d86565b9150610e7a60208401610d86565b90509250929050565b600181811c90821680610e9757607f821691505b602082108103610ed0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f1857610f18610ed6565b500190565b600082821015610f2f57610f2f610ed6565b50039056fea2646970667358221220e52c1b7f358ebcbed5f37de0245efb332c7cd24c025c46958809fdcd189fdc1a64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x9 DUP1 DUP3 MSTORE PUSH9 0x54657374455243323 PUSH1 0xBC SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH3 0x56 SWAP2 PUSH1 0x3 SWAP2 PUSH3 0x75 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x6C SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x75 JUMP JUMPDEST POP POP POP PUSH3 0x157 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x83 SWAP1 PUSH3 0x11B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0xA7 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xF2 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xC2 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xF2 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xF2 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xF2 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xD5 JUMP JUMPDEST POP PUSH3 0x100 SWAP3 SWAP2 POP PUSH3 0x104 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x105 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x130 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x151 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF6A DUP1 PUSH3 0x167 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x125 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xD13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0xDD9 JUMP JUMPDEST PUSH2 0x2E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x167 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH2 0x17F PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x358 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17F PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0xE15 JUMP JUMPDEST PUSH2 0x3D5 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0xE2E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x3F1 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x4C2 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0xE50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x24D SWAP1 PUSH2 0xE83 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x279 SWAP1 PUSH2 0xE83 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x29B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2C6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2A9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2DE DUP2 DUP6 DUP6 PUSH2 0x4D0 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F6 DUP6 DUP3 DUP6 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x301 DUP6 DUP6 DUP6 PUSH2 0x75B JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2DE SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x353 SWAP1 DUP8 SWAP1 PUSH2 0xF05 JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x3C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E74203D3D2030000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3D1 DUP3 DUP3 PUSH2 0xA0E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3DF CALLER DUP3 PUSH2 0xB2E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x24D SWAP1 PUSH2 0xE83 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH2 0x301 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x4D0 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2DE DUP2 DUP6 DUP6 PUSH2 0x75B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x615 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x755 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x748 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH2 0x755 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x4D0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x7FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x957 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x99B SWAP1 DUP5 SWAP1 PUSH2 0xF05 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xA01 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x755 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xA8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3BE JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xA9D SWAP2 SWAP1 PUSH2 0xF05 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xAD7 SWAP1 DUP5 SWAP1 PUSH2 0xF05 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xBD1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP4 DUP4 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xCC3 SWAP1 DUP5 SWAP1 PUSH2 0xF1D JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x677 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD40 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD24 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xD52 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDCB DUP4 PUSH2 0xD86 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDF7 DUP5 PUSH2 0xD86 JUMP JUMPDEST SWAP3 POP PUSH2 0xE05 PUSH1 0x20 DUP6 ADD PUSH2 0xD86 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE49 DUP3 PUSH2 0xD86 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE6C DUP4 PUSH2 0xD86 JUMP JUMPDEST SWAP2 POP PUSH2 0xE7A PUSH1 0x20 DUP5 ADD PUSH2 0xD86 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xE97 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xED0 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xF18 JUMPI PUSH2 0xF18 PUSH2 0xED6 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xF2F JUMPI PUSH2 0xF2F PUSH2 0xED6 JUMP JUMPDEST POP SUB SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 0x2C SHL PUSH32 0x358EBCBED5F37DE0245EFB332C7CD24C025C46958809FDCD189FDC1A64736F6C PUSH4 0x4300080E STOP CALLER ","sourceMap":"115:324:48:-:0;;;150:48;;;;;;;;;-1:-1:-1;1978:113:1;;;;;;;;;;;;-1:-1:-1;;;1978:113:1;;;;;;;;;;;;;;;;;;;;;2044:13;;1978:113;;;2044:13;;:5;;:13;:::i;:::-;-1:-1:-1;2067:17:1;;;;:7;;:17;;;;;:::i;:::-;;1978:113;;115:324:48;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;115:324:48;;;-1:-1:-1;115:324:48;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:380:54;93:1;89:12;;;;136;;;157:61;;211:4;203:6;199:17;189:27;;157:61;264:2;256:6;253:14;233:18;230:38;227:161;;310:10;305:3;301:20;298:1;291:31;345:4;342:1;335:15;373:4;370:1;363:15;227:161;;14:380;;;:::o;:::-;115:324:48;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_697":{"entryPoint":null,"id":697,"parameterSlots":3,"returnSlots":0},"@_approve_632":{"entryPoint":1232,"id":632,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_686":{"entryPoint":null,"id":686,"parameterSlots":3,"returnSlots":0},"@_burn_587":{"entryPoint":2862,"id":587,"parameterSlots":2,"returnSlots":0},"@_mint_515":{"entryPoint":2574,"id":515,"parameterSlots":2,"returnSlots":0},"@_msgSender_2136":{"entryPoint":null,"id":2136,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_675":{"entryPoint":1668,"id":675,"parameterSlots":3,"returnSlots":0},"@_transfer_459":{"entryPoint":1883,"id":459,"parameterSlots":3,"returnSlots":0},"@allowance_254":{"entryPoint":null,"id":254,"parameterSlots":2,"returnSlots":1},"@approve_279":{"entryPoint":720,"id":279,"parameterSlots":2,"returnSlots":1},"@balanceOf_211":{"entryPoint":null,"id":211,"parameterSlots":1,"returnSlots":1},"@burn_8483":{"entryPoint":981,"id":8483,"parameterSlots":1,"returnSlots":0},"@decimals_187":{"entryPoint":null,"id":187,"parameterSlots":0,"returnSlots":1},"@decreaseAllowance_382":{"entryPoint":1009,"id":382,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_341":{"entryPoint":780,"id":341,"parameterSlots":2,"returnSlots":1},"@mint_8471":{"entryPoint":856,"id":8471,"parameterSlots":2,"returnSlots":0},"@name_167":{"entryPoint":574,"id":167,"parameterSlots":0,"returnSlots":1},"@symbol_177":{"entryPoint":994,"id":177,"parameterSlots":0,"returnSlots":1},"@totalSupply_197":{"entryPoint":null,"id":197,"parameterSlots":0,"returnSlots":1},"@transferFrom_312":{"entryPoint":744,"id":312,"parameterSlots":3,"returnSlots":1},"@transfer_236":{"entryPoint":1218,"id":236,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":3462,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3630,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3664,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3545,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3503,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":3605,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__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":3347,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":3845,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3869,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":3715,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3798,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7857:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"135:535:54","statements":[{"nodeType":"YulVariableDeclaration","src":"145:12:54","value":{"kind":"number","nodeType":"YulLiteral","src":"155:2:54","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"149:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"173:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"184:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"166:6:54"},"nodeType":"YulFunctionCall","src":"166:21:54"},"nodeType":"YulExpressionStatement","src":"166:21:54"},{"nodeType":"YulVariableDeclaration","src":"196:27:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"216:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"210:5:54"},"nodeType":"YulFunctionCall","src":"210:13:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"200:6:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"243:9:54"},{"name":"_1","nodeType":"YulIdentifier","src":"254:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"239:3:54"},"nodeType":"YulFunctionCall","src":"239:18:54"},{"name":"length","nodeType":"YulIdentifier","src":"259:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"232:6:54"},"nodeType":"YulFunctionCall","src":"232:34:54"},"nodeType":"YulExpressionStatement","src":"232:34:54"},{"nodeType":"YulVariableDeclaration","src":"275:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"284:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"279:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"344:90:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"373:9:54"},{"name":"i","nodeType":"YulIdentifier","src":"384:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"369:3:54"},"nodeType":"YulFunctionCall","src":"369:17:54"},{"kind":"number","nodeType":"YulLiteral","src":"388:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:54"},"nodeType":"YulFunctionCall","src":"365:26:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"407:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"415:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:54"},"nodeType":"YulFunctionCall","src":"403:14:54"},{"name":"_1","nodeType":"YulIdentifier","src":"419:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"399:3:54"},"nodeType":"YulFunctionCall","src":"399:23:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"393:5:54"},"nodeType":"YulFunctionCall","src":"393:30:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"358:6:54"},"nodeType":"YulFunctionCall","src":"358:66:54"},"nodeType":"YulExpressionStatement","src":"358:66:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"305:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"308:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"302:2:54"},"nodeType":"YulFunctionCall","src":"302:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"316:19:54","statements":[{"nodeType":"YulAssignment","src":"318:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"327:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"330:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"323:3:54"},"nodeType":"YulFunctionCall","src":"323:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"318:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"298:3:54","statements":[]},"src":"294:140:54"},{"body":{"nodeType":"YulBlock","src":"468:66:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"497:9:54"},{"name":"length","nodeType":"YulIdentifier","src":"508:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"493:3:54"},"nodeType":"YulFunctionCall","src":"493:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"517:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"489:3:54"},"nodeType":"YulFunctionCall","src":"489:31:54"},{"kind":"number","nodeType":"YulLiteral","src":"522:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"482:6:54"},"nodeType":"YulFunctionCall","src":"482:42:54"},"nodeType":"YulExpressionStatement","src":"482:42:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"449:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"452:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"446:2:54"},"nodeType":"YulFunctionCall","src":"446:13:54"},"nodeType":"YulIf","src":"443:91:54"},{"nodeType":"YulAssignment","src":"543:121:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"559:9:54"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"578:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"586:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"574:3:54"},"nodeType":"YulFunctionCall","src":"574:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"591:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"570:3:54"},"nodeType":"YulFunctionCall","src":"570:88:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"555:3:54"},"nodeType":"YulFunctionCall","src":"555:104:54"},{"kind":"number","nodeType":"YulLiteral","src":"661:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"551:3:54"},"nodeType":"YulFunctionCall","src":"551:113:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"543:4:54"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"104:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"115:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"126:4:54","type":""}],"src":"14:656:54"},{"body":{"nodeType":"YulBlock","src":"724:147:54","statements":[{"nodeType":"YulAssignment","src":"734:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"756:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"743:12:54"},"nodeType":"YulFunctionCall","src":"743:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"734:5:54"}]},{"body":{"nodeType":"YulBlock","src":"849:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"858:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"861:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"851:6:54"},"nodeType":"YulFunctionCall","src":"851:12:54"},"nodeType":"YulExpressionStatement","src":"851:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"785:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"796:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"803:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"792:3:54"},"nodeType":"YulFunctionCall","src":"792:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"782:2:54"},"nodeType":"YulFunctionCall","src":"782:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"775:6:54"},"nodeType":"YulFunctionCall","src":"775:73:54"},"nodeType":"YulIf","src":"772:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"703:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"714:5:54","type":""}],"src":"675:196:54"},{"body":{"nodeType":"YulBlock","src":"963:167:54","statements":[{"body":{"nodeType":"YulBlock","src":"1009:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1018:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1021:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1011:6:54"},"nodeType":"YulFunctionCall","src":"1011:12:54"},"nodeType":"YulExpressionStatement","src":"1011:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"984:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"993:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"980:3:54"},"nodeType":"YulFunctionCall","src":"980:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1005:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"976:3:54"},"nodeType":"YulFunctionCall","src":"976:32:54"},"nodeType":"YulIf","src":"973:52:54"},{"nodeType":"YulAssignment","src":"1034:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1063:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1044:18:54"},"nodeType":"YulFunctionCall","src":"1044:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1034:6:54"}]},{"nodeType":"YulAssignment","src":"1082:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1109:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1105:3:54"},"nodeType":"YulFunctionCall","src":"1105:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1092:12:54"},"nodeType":"YulFunctionCall","src":"1092:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1082:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"921:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"932:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"944:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"952:6:54","type":""}],"src":"876:254:54"},{"body":{"nodeType":"YulBlock","src":"1230:92:54","statements":[{"nodeType":"YulAssignment","src":"1240:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1252:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1263:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1248:3:54"},"nodeType":"YulFunctionCall","src":"1248:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1240:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1282:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1307:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1300:6:54"},"nodeType":"YulFunctionCall","src":"1300:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1293:6:54"},"nodeType":"YulFunctionCall","src":"1293:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1275:6:54"},"nodeType":"YulFunctionCall","src":"1275:41:54"},"nodeType":"YulExpressionStatement","src":"1275:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1199:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1210:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1221:4:54","type":""}],"src":"1135:187:54"},{"body":{"nodeType":"YulBlock","src":"1428:76:54","statements":[{"nodeType":"YulAssignment","src":"1438:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1450:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1461:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1446:3:54"},"nodeType":"YulFunctionCall","src":"1446:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1438:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1480:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"1491:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1473:6:54"},"nodeType":"YulFunctionCall","src":"1473:25:54"},"nodeType":"YulExpressionStatement","src":"1473:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1397:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1408:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1419:4:54","type":""}],"src":"1327:177:54"},{"body":{"nodeType":"YulBlock","src":"1613:224:54","statements":[{"body":{"nodeType":"YulBlock","src":"1659:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1668:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1671:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1661:6:54"},"nodeType":"YulFunctionCall","src":"1661:12:54"},"nodeType":"YulExpressionStatement","src":"1661:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1634:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1643:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1630:3:54"},"nodeType":"YulFunctionCall","src":"1630:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1655:2:54","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1626:3:54"},"nodeType":"YulFunctionCall","src":"1626:32:54"},"nodeType":"YulIf","src":"1623:52:54"},{"nodeType":"YulAssignment","src":"1684:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1713:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1694:18:54"},"nodeType":"YulFunctionCall","src":"1694:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1684:6:54"}]},{"nodeType":"YulAssignment","src":"1732:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1765:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1776:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1761:3:54"},"nodeType":"YulFunctionCall","src":"1761:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1742:18:54"},"nodeType":"YulFunctionCall","src":"1742:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1732:6:54"}]},{"nodeType":"YulAssignment","src":"1789:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1816:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1827:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1812:3:54"},"nodeType":"YulFunctionCall","src":"1812:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1799:12:54"},"nodeType":"YulFunctionCall","src":"1799:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1789:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1563:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1574:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1586:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1594:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1602:6:54","type":""}],"src":"1509:328:54"},{"body":{"nodeType":"YulBlock","src":"1939:87:54","statements":[{"nodeType":"YulAssignment","src":"1949:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1961:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1972:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1957:3:54"},"nodeType":"YulFunctionCall","src":"1957:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1949:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1991:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2006:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2014:4:54","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2002:3:54"},"nodeType":"YulFunctionCall","src":"2002:17:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1984:6:54"},"nodeType":"YulFunctionCall","src":"1984:36:54"},"nodeType":"YulExpressionStatement","src":"1984:36:54"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1908:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1919:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1930:4:54","type":""}],"src":"1842:184:54"},{"body":{"nodeType":"YulBlock","src":"2101:110:54","statements":[{"body":{"nodeType":"YulBlock","src":"2147:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2156:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2159:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2149:6:54"},"nodeType":"YulFunctionCall","src":"2149:12:54"},"nodeType":"YulExpressionStatement","src":"2149:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2122:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2131:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2118:3:54"},"nodeType":"YulFunctionCall","src":"2118:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2143:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2114:3:54"},"nodeType":"YulFunctionCall","src":"2114:32:54"},"nodeType":"YulIf","src":"2111:52:54"},{"nodeType":"YulAssignment","src":"2172:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2195:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2182:12:54"},"nodeType":"YulFunctionCall","src":"2182:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2172:6:54"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2067:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2078:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2090:6:54","type":""}],"src":"2031:180:54"},{"body":{"nodeType":"YulBlock","src":"2286:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"2332:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2341:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2344:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2334:6:54"},"nodeType":"YulFunctionCall","src":"2334:12:54"},"nodeType":"YulExpressionStatement","src":"2334:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2307:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2316:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2303:3:54"},"nodeType":"YulFunctionCall","src":"2303:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2328:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2299:3:54"},"nodeType":"YulFunctionCall","src":"2299:32:54"},"nodeType":"YulIf","src":"2296:52:54"},{"nodeType":"YulAssignment","src":"2357:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2386:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2367:18:54"},"nodeType":"YulFunctionCall","src":"2367:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2357:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2252:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2263:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2275:6:54","type":""}],"src":"2216:186:54"},{"body":{"nodeType":"YulBlock","src":"2494:173:54","statements":[{"body":{"nodeType":"YulBlock","src":"2540:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2549:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2552:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2542:6:54"},"nodeType":"YulFunctionCall","src":"2542:12:54"},"nodeType":"YulExpressionStatement","src":"2542:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2515:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2524:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2511:3:54"},"nodeType":"YulFunctionCall","src":"2511:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2536:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2507:3:54"},"nodeType":"YulFunctionCall","src":"2507:32:54"},"nodeType":"YulIf","src":"2504:52:54"},{"nodeType":"YulAssignment","src":"2565:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2594:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2575:18:54"},"nodeType":"YulFunctionCall","src":"2575:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2565:6:54"}]},{"nodeType":"YulAssignment","src":"2613:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2646:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2657:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2642:3:54"},"nodeType":"YulFunctionCall","src":"2642:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2623:18:54"},"nodeType":"YulFunctionCall","src":"2623:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2613:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2452:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2463:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2475:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2483:6:54","type":""}],"src":"2407:260:54"},{"body":{"nodeType":"YulBlock","src":"2727:382:54","statements":[{"nodeType":"YulAssignment","src":"2737:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2751:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"2754:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2747:3:54"},"nodeType":"YulFunctionCall","src":"2747:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2737:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"2768:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2798:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"2804:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2794:3:54"},"nodeType":"YulFunctionCall","src":"2794:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"2772:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"2845:31:54","statements":[{"nodeType":"YulAssignment","src":"2847:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2861:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2869:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2857:3:54"},"nodeType":"YulFunctionCall","src":"2857:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2847:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2825:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2818:6:54"},"nodeType":"YulFunctionCall","src":"2818:26:54"},"nodeType":"YulIf","src":"2815:61:54"},{"body":{"nodeType":"YulBlock","src":"2935:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2956:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2959:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2949:6:54"},"nodeType":"YulFunctionCall","src":"2949:88:54"},"nodeType":"YulExpressionStatement","src":"2949:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3057:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3060:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3050:6:54"},"nodeType":"YulFunctionCall","src":"3050:15:54"},"nodeType":"YulExpressionStatement","src":"3050:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3085:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3088:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3078:6:54"},"nodeType":"YulFunctionCall","src":"3078:15:54"},"nodeType":"YulExpressionStatement","src":"3078:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2891:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2914:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"2922:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2911:2:54"},"nodeType":"YulFunctionCall","src":"2911:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2888:2:54"},"nodeType":"YulFunctionCall","src":"2888:38:54"},"nodeType":"YulIf","src":"2885:218:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2707:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2716:6:54","type":""}],"src":"2672:437:54"},{"body":{"nodeType":"YulBlock","src":"3146:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3163:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3166:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3156:6:54"},"nodeType":"YulFunctionCall","src":"3156:88:54"},"nodeType":"YulExpressionStatement","src":"3156:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3260:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3263:4:54","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3253:6:54"},"nodeType":"YulFunctionCall","src":"3253:15:54"},"nodeType":"YulExpressionStatement","src":"3253:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3284:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3287:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3277:6:54"},"nodeType":"YulFunctionCall","src":"3277:15:54"},"nodeType":"YulExpressionStatement","src":"3277:15:54"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"3114:184:54"},{"body":{"nodeType":"YulBlock","src":"3351:80:54","statements":[{"body":{"nodeType":"YulBlock","src":"3378:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3380:16:54"},"nodeType":"YulFunctionCall","src":"3380:18:54"},"nodeType":"YulExpressionStatement","src":"3380:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3367:1:54"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"3374:1:54"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3370:3:54"},"nodeType":"YulFunctionCall","src":"3370:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3364:2:54"},"nodeType":"YulFunctionCall","src":"3364:13:54"},"nodeType":"YulIf","src":"3361:39:54"},{"nodeType":"YulAssignment","src":"3409:16:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3420:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"3423:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3416:3:54"},"nodeType":"YulFunctionCall","src":"3416:9:54"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3409:3:54"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3334:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"3337:1:54","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"3343:3:54","type":""}],"src":"3303:128:54"},{"body":{"nodeType":"YulBlock","src":"3610:161:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3627:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3638:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3620:6:54"},"nodeType":"YulFunctionCall","src":"3620:21:54"},"nodeType":"YulExpressionStatement","src":"3620:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3661:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3672:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3657:3:54"},"nodeType":"YulFunctionCall","src":"3657:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"3677:2:54","type":"","value":"11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3650:6:54"},"nodeType":"YulFunctionCall","src":"3650:30:54"},"nodeType":"YulExpressionStatement","src":"3650:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3700:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3711:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3696:3:54"},"nodeType":"YulFunctionCall","src":"3696:18:54"},{"hexValue":"616d6f756e74203d3d2030","kind":"string","nodeType":"YulLiteral","src":"3716:13:54","type":"","value":"amount == 0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3689:6:54"},"nodeType":"YulFunctionCall","src":"3689:41:54"},"nodeType":"YulExpressionStatement","src":"3689:41:54"},{"nodeType":"YulAssignment","src":"3739:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3751:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3762:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3747:3:54"},"nodeType":"YulFunctionCall","src":"3747:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3739:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3587:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3601:4:54","type":""}],"src":"3436:335:54"},{"body":{"nodeType":"YulBlock","src":"3950:227:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3967:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3978:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3960:6:54"},"nodeType":"YulFunctionCall","src":"3960:21:54"},"nodeType":"YulExpressionStatement","src":"3960:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4001:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4012:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3997:3:54"},"nodeType":"YulFunctionCall","src":"3997:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"4017:2:54","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3990:6:54"},"nodeType":"YulFunctionCall","src":"3990:30:54"},"nodeType":"YulExpressionStatement","src":"3990:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:54"},"nodeType":"YulFunctionCall","src":"4036:18:54"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"4056:34:54","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4029:6:54"},"nodeType":"YulFunctionCall","src":"4029:62:54"},"nodeType":"YulExpressionStatement","src":"4029:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4111:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4122:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4107:3:54"},"nodeType":"YulFunctionCall","src":"4107:18:54"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"4127:7:54","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4100:6:54"},"nodeType":"YulFunctionCall","src":"4100:35:54"},"nodeType":"YulExpressionStatement","src":"4100:35:54"},{"nodeType":"YulAssignment","src":"4144:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4156:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4167:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4152:3:54"},"nodeType":"YulFunctionCall","src":"4152:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4144:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3927:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3941:4:54","type":""}],"src":"3776:401:54"},{"body":{"nodeType":"YulBlock","src":"4356:226:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4373:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4384:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4366:6:54"},"nodeType":"YulFunctionCall","src":"4366:21:54"},"nodeType":"YulExpressionStatement","src":"4366:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4407:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4418:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4403:3:54"},"nodeType":"YulFunctionCall","src":"4403:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"4423:2:54","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4396:6:54"},"nodeType":"YulFunctionCall","src":"4396:30:54"},"nodeType":"YulExpressionStatement","src":"4396:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4446:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4457:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4442:3:54"},"nodeType":"YulFunctionCall","src":"4442:18:54"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"4462:34:54","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4435:6:54"},"nodeType":"YulFunctionCall","src":"4435:62:54"},"nodeType":"YulExpressionStatement","src":"4435:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4517:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4528:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4513:3:54"},"nodeType":"YulFunctionCall","src":"4513:18:54"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"4533:6:54","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4506:6:54"},"nodeType":"YulFunctionCall","src":"4506:34:54"},"nodeType":"YulExpressionStatement","src":"4506:34:54"},{"nodeType":"YulAssignment","src":"4549:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4561:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4572:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4557:3:54"},"nodeType":"YulFunctionCall","src":"4557:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4549:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4333:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4347:4:54","type":""}],"src":"4182:400:54"},{"body":{"nodeType":"YulBlock","src":"4761:224:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4778:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4789:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4771:6:54"},"nodeType":"YulFunctionCall","src":"4771:21:54"},"nodeType":"YulExpressionStatement","src":"4771:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4812:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4823:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4808:3:54"},"nodeType":"YulFunctionCall","src":"4808:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"4828:2:54","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:54"},"nodeType":"YulFunctionCall","src":"4801:30:54"},"nodeType":"YulExpressionStatement","src":"4801:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4851:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4862:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4847:3:54"},"nodeType":"YulFunctionCall","src":"4847:18:54"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"4867:34:54","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4840:6:54"},"nodeType":"YulFunctionCall","src":"4840:62:54"},"nodeType":"YulExpressionStatement","src":"4840:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4922:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4933:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4918:3:54"},"nodeType":"YulFunctionCall","src":"4918:18:54"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"4938:4:54","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4911:6:54"},"nodeType":"YulFunctionCall","src":"4911:32:54"},"nodeType":"YulExpressionStatement","src":"4911:32:54"},{"nodeType":"YulAssignment","src":"4952:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4964:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4975:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4960:3:54"},"nodeType":"YulFunctionCall","src":"4960:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4952:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4738:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4752:4:54","type":""}],"src":"4587:398:54"},{"body":{"nodeType":"YulBlock","src":"5164:179:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5181:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5192:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5174:6:54"},"nodeType":"YulFunctionCall","src":"5174:21:54"},"nodeType":"YulExpressionStatement","src":"5174:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5215:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5226:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5211:3:54"},"nodeType":"YulFunctionCall","src":"5211:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5231:2:54","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5204:6:54"},"nodeType":"YulFunctionCall","src":"5204:30:54"},"nodeType":"YulExpressionStatement","src":"5204:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5254:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5265:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5250:3:54"},"nodeType":"YulFunctionCall","src":"5250:18:54"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"5270:31:54","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5243:6:54"},"nodeType":"YulFunctionCall","src":"5243:59:54"},"nodeType":"YulExpressionStatement","src":"5243:59:54"},{"nodeType":"YulAssignment","src":"5311:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5323:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5334:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5319:3:54"},"nodeType":"YulFunctionCall","src":"5319:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5311:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5141:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5155:4:54","type":""}],"src":"4990:353:54"},{"body":{"nodeType":"YulBlock","src":"5522:227:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5539:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5550:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5532:6:54"},"nodeType":"YulFunctionCall","src":"5532:21:54"},"nodeType":"YulExpressionStatement","src":"5532:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5573:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5584:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5569:3:54"},"nodeType":"YulFunctionCall","src":"5569:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5589:2:54","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5562:6:54"},"nodeType":"YulFunctionCall","src":"5562:30:54"},"nodeType":"YulExpressionStatement","src":"5562:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5612:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5623:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5608:3:54"},"nodeType":"YulFunctionCall","src":"5608:18:54"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"5628:34:54","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5601:6:54"},"nodeType":"YulFunctionCall","src":"5601:62:54"},"nodeType":"YulExpressionStatement","src":"5601:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5683:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5694:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5679:3:54"},"nodeType":"YulFunctionCall","src":"5679:18:54"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"5699:7:54","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5672:6:54"},"nodeType":"YulFunctionCall","src":"5672:35:54"},"nodeType":"YulExpressionStatement","src":"5672:35:54"},{"nodeType":"YulAssignment","src":"5716:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5728:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5739:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5724:3:54"},"nodeType":"YulFunctionCall","src":"5724:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5716:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5499:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5513:4:54","type":""}],"src":"5348:401:54"},{"body":{"nodeType":"YulBlock","src":"5928:225:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5945:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5956:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5938:6:54"},"nodeType":"YulFunctionCall","src":"5938:21:54"},"nodeType":"YulExpressionStatement","src":"5938:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5979:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5990:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5975:3:54"},"nodeType":"YulFunctionCall","src":"5975:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5995:2:54","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5968:6:54"},"nodeType":"YulFunctionCall","src":"5968:30:54"},"nodeType":"YulExpressionStatement","src":"5968:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6018:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6029:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6014:3:54"},"nodeType":"YulFunctionCall","src":"6014:18:54"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"6034:34:54","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6007:6:54"},"nodeType":"YulFunctionCall","src":"6007:62:54"},"nodeType":"YulExpressionStatement","src":"6007:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6089:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6100:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6085:3:54"},"nodeType":"YulFunctionCall","src":"6085:18:54"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"6105:5:54","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6078:6:54"},"nodeType":"YulFunctionCall","src":"6078:33:54"},"nodeType":"YulExpressionStatement","src":"6078:33:54"},{"nodeType":"YulAssignment","src":"6120:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6132:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6143:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6128:3:54"},"nodeType":"YulFunctionCall","src":"6128:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6120:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5905:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5919:4:54","type":""}],"src":"5754:399:54"},{"body":{"nodeType":"YulBlock","src":"6332:228:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6349:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6360:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6342:6:54"},"nodeType":"YulFunctionCall","src":"6342:21:54"},"nodeType":"YulExpressionStatement","src":"6342:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6383:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6394:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6379:3:54"},"nodeType":"YulFunctionCall","src":"6379:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6399:2:54","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6372:6:54"},"nodeType":"YulFunctionCall","src":"6372:30:54"},"nodeType":"YulExpressionStatement","src":"6372:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6422:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6433:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6418:3:54"},"nodeType":"YulFunctionCall","src":"6418:18:54"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"6438:34:54","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6411:6:54"},"nodeType":"YulFunctionCall","src":"6411:62:54"},"nodeType":"YulExpressionStatement","src":"6411:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6493:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6504:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6489:3:54"},"nodeType":"YulFunctionCall","src":"6489:18:54"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"6509:8:54","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6482:6:54"},"nodeType":"YulFunctionCall","src":"6482:36:54"},"nodeType":"YulExpressionStatement","src":"6482:36:54"},{"nodeType":"YulAssignment","src":"6527:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6539:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6550:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6535:3:54"},"nodeType":"YulFunctionCall","src":"6535:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6527:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6309:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6323:4:54","type":""}],"src":"6158:402:54"},{"body":{"nodeType":"YulBlock","src":"6739:181:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6756:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6767:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6749:6:54"},"nodeType":"YulFunctionCall","src":"6749:21:54"},"nodeType":"YulExpressionStatement","src":"6749:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6790:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6801:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6786:3:54"},"nodeType":"YulFunctionCall","src":"6786:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6806:2:54","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6779:6:54"},"nodeType":"YulFunctionCall","src":"6779:30:54"},"nodeType":"YulExpressionStatement","src":"6779:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6829:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6840:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6825:3:54"},"nodeType":"YulFunctionCall","src":"6825:18:54"},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"6845:33:54","type":"","value":"ERC20: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6818:6:54"},"nodeType":"YulFunctionCall","src":"6818:61:54"},"nodeType":"YulExpressionStatement","src":"6818:61:54"},{"nodeType":"YulAssignment","src":"6888:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6900:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6911:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6896:3:54"},"nodeType":"YulFunctionCall","src":"6896:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6888:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6716:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6730:4:54","type":""}],"src":"6565:355:54"},{"body":{"nodeType":"YulBlock","src":"7099:223:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7116:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7127:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7109:6:54"},"nodeType":"YulFunctionCall","src":"7109:21:54"},"nodeType":"YulExpressionStatement","src":"7109:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7150:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7161:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7146:3:54"},"nodeType":"YulFunctionCall","src":"7146:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7166:2:54","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7139:6:54"},"nodeType":"YulFunctionCall","src":"7139:30:54"},"nodeType":"YulExpressionStatement","src":"7139:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7189:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7200:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7185:3:54"},"nodeType":"YulFunctionCall","src":"7185:18:54"},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f20616464726573","kind":"string","nodeType":"YulLiteral","src":"7205:34:54","type":"","value":"ERC20: burn from the zero addres"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7178:6:54"},"nodeType":"YulFunctionCall","src":"7178:62:54"},"nodeType":"YulExpressionStatement","src":"7178:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7260:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7271:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7256:3:54"},"nodeType":"YulFunctionCall","src":"7256:18:54"},{"hexValue":"73","kind":"string","nodeType":"YulLiteral","src":"7276:3:54","type":"","value":"s"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7249:6:54"},"nodeType":"YulFunctionCall","src":"7249:31:54"},"nodeType":"YulExpressionStatement","src":"7249:31:54"},{"nodeType":"YulAssignment","src":"7289:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7301:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7312:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7297:3:54"},"nodeType":"YulFunctionCall","src":"7297:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7289:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7076:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7090:4:54","type":""}],"src":"6925:397:54"},{"body":{"nodeType":"YulBlock","src":"7501:224:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7518:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7529:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7511:6:54"},"nodeType":"YulFunctionCall","src":"7511:21:54"},"nodeType":"YulExpressionStatement","src":"7511:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7552:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7563:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7548:3:54"},"nodeType":"YulFunctionCall","src":"7548:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7568:2:54","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7541:6:54"},"nodeType":"YulFunctionCall","src":"7541:30:54"},"nodeType":"YulExpressionStatement","src":"7541:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7591:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7602:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7587:3:54"},"nodeType":"YulFunctionCall","src":"7587:18:54"},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e","kind":"string","nodeType":"YulLiteral","src":"7607:34:54","type":"","value":"ERC20: burn amount exceeds balan"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7580:6:54"},"nodeType":"YulFunctionCall","src":"7580:62:54"},"nodeType":"YulExpressionStatement","src":"7580:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7662:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7673:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7658:3:54"},"nodeType":"YulFunctionCall","src":"7658:18:54"},{"hexValue":"6365","kind":"string","nodeType":"YulLiteral","src":"7678:4:54","type":"","value":"ce"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7651:6:54"},"nodeType":"YulFunctionCall","src":"7651:32:54"},"nodeType":"YulExpressionStatement","src":"7651:32:54"},{"nodeType":"YulAssignment","src":"7692:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7704:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7715:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7700:3:54"},"nodeType":"YulFunctionCall","src":"7700:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7692:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7478:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7492:4:54","type":""}],"src":"7327:398:54"},{"body":{"nodeType":"YulBlock","src":"7779:76:54","statements":[{"body":{"nodeType":"YulBlock","src":"7801:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7803:16:54"},"nodeType":"YulFunctionCall","src":"7803:18:54"},"nodeType":"YulExpressionStatement","src":"7803:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7795:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"7798:1:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7792:2:54"},"nodeType":"YulFunctionCall","src":"7792:8:54"},"nodeType":"YulIf","src":"7789:34:54"},{"nodeType":"YulAssignment","src":"7832:17:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7844:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"7847:1:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7840:3:54"},"nodeType":"YulFunctionCall","src":"7840:9:54"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"7832:4:54"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"7761:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"7764:1:54","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"7770:4:54","type":""}],"src":"7730:125:54"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { 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        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_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_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_55c2b76370d5d427f52c6d12dc9e48fce27eadb826533977b2f868874e0f017c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"amount == 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: burn amount exceeds balan\")\n        mstore(add(headStart, 96), \"ce\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c806340c10f191161008c57806395d89b411161006657806395d89b41146101ca578063a457c2d7146101d2578063a9059cbb146101e5578063dd62ed3e146101f857600080fd5b806340c10f191461016c57806342966c681461018157806370a082311461019457600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a578063395093511461015957600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec61023e565b6040516100f99190610d13565b60405180910390f35b610115610110366004610daf565b6102d0565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610dd9565b6102e8565b604051601281526020016100f9565b610115610167366004610daf565b61030c565b61017f61017a366004610daf565b610358565b005b61017f61018f366004610e15565b6103d5565b6101296101a2366004610e2e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100ec6103e2565b6101156101e0366004610daf565b6103f1565b6101156101f3366004610daf565b6104c2565b610129610206366004610e50565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461024d90610e83565b80601f016020809104026020016040519081016040528092919081815260200182805461027990610e83565b80156102c65780601f1061029b576101008083540402835291602001916102c6565b820191906000526020600020905b8154815290600101906020018083116102a957829003601f168201915b5050505050905090565b6000336102de8185856104d0565b5060019392505050565b6000336102f6858285610684565b61030185858561075b565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102de9082908690610353908790610f05565b6104d0565b806000036103c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f616d6f756e74203d3d203000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6103d18282610a0e565b5050565b6103df3382610b2e565b50565b60606004805461024d90610e83565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103be565b61030182868684036104d0565b6000336102de81858561075b565b73ffffffffffffffffffffffffffffffffffffffff8316610572576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff8216610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107555781811015610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103be565b61075584848484036104d0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166107fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff82166108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822085850390559185168152908120805484929061099b908490610f05565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a0191815260200190565b60405180910390a3610755565b73ffffffffffffffffffffffffffffffffffffffff8216610a8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103be565b8060026000828254610a9d9190610f05565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610ad7908490610f05565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610bd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016103be565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610cc3908490610f1d565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610677565b600060208083528351808285015260005b81811015610d4057858101830151858201604001528201610d24565b81811115610d52576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610daa57600080fd5b919050565b60008060408385031215610dc257600080fd5b610dcb83610d86565b946020939093013593505050565b600080600060608486031215610dee57600080fd5b610df784610d86565b9250610e0560208501610d86565b9150604084013590509250925092565b600060208284031215610e2757600080fd5b5035919050565b600060208284031215610e4057600080fd5b610e4982610d86565b9392505050565b60008060408385031215610e6357600080fd5b610e6c83610d86565b9150610e7a60208401610d86565b90509250929050565b600181811c90821680610e9757607f821691505b602082108103610ed0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f1857610f18610ed6565b500190565b600082821015610f2f57610f2f610ed6565b50039056fea2646970667358221220e52c1b7f358ebcbed5f37de0245efb332c7cd24c025c46958809fdcd189fdc1a64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x125 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xD13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0xDD9 JUMP JUMPDEST PUSH2 0x2E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x167 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH2 0x17F PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x358 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17F PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0xE15 JUMP JUMPDEST PUSH2 0x3D5 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0xE2E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x3F1 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x4C2 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0xE50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x24D SWAP1 PUSH2 0xE83 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x279 SWAP1 PUSH2 0xE83 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x29B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2C6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2A9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2DE DUP2 DUP6 DUP6 PUSH2 0x4D0 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F6 DUP6 DUP3 DUP6 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x301 DUP6 DUP6 DUP6 PUSH2 0x75B JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2DE SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x353 SWAP1 DUP8 SWAP1 PUSH2 0xF05 JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x3C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E74203D3D2030000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3D1 DUP3 DUP3 PUSH2 0xA0E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3DF CALLER DUP3 PUSH2 0xB2E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x24D SWAP1 PUSH2 0xE83 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH2 0x301 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x4D0 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2DE DUP2 DUP6 DUP6 PUSH2 0x75B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x615 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x755 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x748 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH2 0x755 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x4D0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x7FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x957 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x99B SWAP1 DUP5 SWAP1 PUSH2 0xF05 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xA01 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x755 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xA8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3BE JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xA9D SWAP2 SWAP1 PUSH2 0xF05 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xAD7 SWAP1 DUP5 SWAP1 PUSH2 0xF05 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xBD1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP4 DUP4 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xCC3 SWAP1 DUP5 SWAP1 PUSH2 0xF1D JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x677 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD40 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD24 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xD52 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDCB DUP4 PUSH2 0xD86 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDF7 DUP5 PUSH2 0xD86 JUMP JUMPDEST SWAP3 POP PUSH2 0xE05 PUSH1 0x20 DUP6 ADD PUSH2 0xD86 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE49 DUP3 PUSH2 0xD86 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE6C DUP4 PUSH2 0xD86 JUMP JUMPDEST SWAP2 POP PUSH2 0xE7A PUSH1 0x20 DUP5 ADD PUSH2 0xD86 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xE97 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xED0 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xF18 JUMPI PUSH2 0xF18 PUSH2 0xED6 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xF2F JUMPI PUSH2 0xF2F PUSH2 0xED6 JUMP JUMPDEST POP SUB SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 0x2C SHL PUSH32 0x358EBCBED5F37DE0245EFB332C7CD24C025C46958809FDCD189FDC1A64736F6C PUSH4 0x4300080E STOP CALLER ","sourceMap":"115:324:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1300:14:54;;1293:22;1275:41;;1263:2;1248:18;4433:197:1;1135:187:54;3244:106:1;3331:12;;3244:106;;;1473:25:54;;;1461:2;1446:18;3244:106:1;1327:177:54;5192:286:1;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1984:36:54;;1972:2;1957:18;3093:91:1;1842:184:54;5873:234:1;;;;;;:::i;:::-;;:::i;204:144:48:-;;;;;;:::i;:::-;;:::i;:::-;;354:83;;;;;;:::i;:::-;;:::i;3408:125:1:-;;;;;;:::i;:::-;3508:18;;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;4091:18;;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149;2156:98;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:9;4570:32:1;719:10:9;4586:7:1;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:1;;4433:197;-1:-1:-1;;;4433:197:1:o;5192:286::-;5319:4;719:10:9;5375:38:1;5391:4;719:10:9;5406:6:1;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:1;;5192:286;-1:-1:-1;;;;5192:286:1:o;5873:234::-;719:10:9;5961:4:1;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5961:4;;719:10:9;6015:64:1;;719:10:9;;4091:27:1;;6040:38;;6068:10;;6040:38;:::i;:::-;6015:8;:64::i;204:144:48:-;280:6;290:1;280:11;272:35;;;;;;;3638:2:54;272:35:48;;;3620:21:54;3677:2;3657:18;;;3650:30;3716:13;3696:18;;;3689:41;3747:18;;272:35:48;;;;;;;;;317:24;323:9;334:6;317:5;:24::i;:::-;204:144;;:::o;354:83::-;403:27;719:10:9;423:6:48;403:5;:27::i;:::-;354:83;:::o;2367:102:1:-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;719:10:9;6687:4:1;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6687:4;;719:10:9;6831:15:1;6811:16;:35;;6803:85;;;;;;;3978:2:54;6803:85:1;;;3960:21:54;4017:2;3997:18;;;3990:30;4056:34;4036:18;;;4029:62;4127:7;4107:18;;;4100:35;4152:19;;6803:85:1;3776:401:54;6803:85:1;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:9;3862:28:1;719:10:9;3879:2:1;3883:6;3862:9;:28::i;10110:370::-;10241:19;;;10233:68;;;;;;;4384:2:54;10233:68:1;;;4366:21:54;4423:2;4403:18;;;4396:30;4462:34;4442:18;;;4435:62;4533:6;4513:18;;;4506:34;4557:19;;10233:68:1;4182:400:54;10233:68:1;10319:21;;;10311:68;;;;;;;4789:2:54;10311:68:1;;;4771:21:54;4828:2;4808:18;;;4801:30;4867:34;4847:18;;;4840:62;4938:4;4918:18;;;4911:32;4960:19;;10311:68:1;4587:398:54;10311:68:1;10390:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;1473:25:54;;;10441:32:1;;1446:18:54;10441:32:1;;;;;;;;10110:370;;;:::o;10761:441::-;4091:18;;;;10891:24;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10977:17;10957:37;;10953:243;;11038:6;11018:16;:26;;11010:68;;;;;;;5192:2:54;11010:68:1;;;5174:21:54;5231:2;5211:18;;;5204:30;5270:31;5250:18;;;5243:59;5319:18;;11010:68:1;4990:353:54;11010:68:1;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;7601:18;;;7593:68;;;;;;;5550:2:54;7593:68:1;;;5532:21:54;5589:2;5569:18;;;5562:30;5628:34;5608:18;;;5601:62;5699:7;5679:18;;;5672:35;5724:19;;7593:68:1;5348:401:54;7593:68:1;7679:16;;;7671:64;;;;;;;5956:2:54;7671:64:1;;;5938:21:54;5995:2;5975:18;;;5968:30;6034:34;6014:18;;;6007:62;6105:5;6085:18;;;6078:33;6128:19;;7671:64:1;5754:399:54;7671:64:1;7817:15;;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;;;;6360:2:54;7842:72:1;;;6342:21:54;6399:2;6379:18;;;6372:30;6438:34;6418:18;;;6411:62;6509:8;6489:18;;;6482:36;6535:19;;7842:72:1;6158:402:54;7842:72:1;7948:15;;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;8045:26;;8054:4;8045:26;;;8064:6;8045:26;;;;1473:25:54;;1461:2;1446:18;;1327:177;8045:26:1;;;;;;;;8082:37;9111:576;8402:389;8485:21;;;8477:65;;;;;;;6767:2:54;8477:65:1;;;6749:21:54;6806:2;6786:18;;;6779:30;6845:33;6825:18;;;6818:61;6896:18;;8477:65:1;6565:355:54;8477:65:1;8629:6;8613:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;8645:18:1;;;:9;:18;;;;;;;;;;:28;;8667:6;;8645:9;:28;;8667:6;;8645:28;:::i;:::-;;;;-1:-1:-1;;8688:37:1;;1473:25:54;;;8688:37:1;;;;8705:1;;8688:37;;1461:2:54;1446:18;8688:37:1;;;;;;;204:144:48;;:::o;9111:576:1:-;9194:21;;;9186:67;;;;;;;7127:2:54;9186:67:1;;;7109:21:54;7166:2;7146:18;;;7139:30;7205:34;7185:18;;;7178:62;7276:3;7256:18;;;7249:31;7297:19;;9186:67:1;6925:397:54;9186:67:1;9349:18;;;9324:22;9349:18;;;;;;;;;;;9385:24;;;;9377:71;;;;;;;7529:2:54;9377:71:1;;;7511:21:54;7568:2;7548:18;;;7541:30;7607:34;7587:18;;;7580:62;7678:4;7658:18;;;7651:32;7700:19;;9377:71:1;7327:398:54;9377:71:1;9482:18;;;:9;:18;;;;;;;;;;9503:23;;;9482:44;;9546:12;:22;;9520:6;;9482:9;9546:22;;9520:6;;9546:22;:::i;:::-;;;;-1:-1:-1;;9584:37:1;;1473:25:54;;;9610:1:1;;9584:37;;;;;;1461:2:54;1446:18;9584:37:1;1327:177:54;14:656;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:54;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:54:o;675:196::-;743:20;;803:42;792:54;;782:65;;772:93;;861:1;858;851:12;772:93;675:196;;;:::o;876:254::-;944:6;952;1005:2;993:9;984:7;980:23;976:32;973:52;;;1021:1;1018;1011:12;973:52;1044:29;1063:9;1044:29;:::i;:::-;1034:39;1120:2;1105:18;;;;1092:32;;-1:-1:-1;;;876:254:54:o;1509:328::-;1586:6;1594;1602;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;1694:29;1713:9;1694:29;:::i;:::-;1684:39;;1742:38;1776:2;1765:9;1761:18;1742:38;:::i;:::-;1732:48;;1827:2;1816:9;1812:18;1799:32;1789:42;;1509:328;;;;;:::o;2031:180::-;2090:6;2143:2;2131:9;2122:7;2118:23;2114:32;2111:52;;;2159:1;2156;2149:12;2111:52;-1:-1:-1;2182:23:54;;2031:180;-1:-1:-1;2031:180:54:o;2216:186::-;2275:6;2328:2;2316:9;2307:7;2303:23;2299:32;2296:52;;;2344:1;2341;2334:12;2296:52;2367:29;2386:9;2367:29;:::i;:::-;2357:39;2216:186;-1:-1:-1;;;2216:186:54:o;2407:260::-;2475:6;2483;2536:2;2524:9;2515:7;2511:23;2507:32;2504:52;;;2552:1;2549;2542:12;2504:52;2575:29;2594:9;2575:29;:::i;:::-;2565:39;;2623:38;2657:2;2646:9;2642:18;2623:38;:::i;:::-;2613:48;;2407:260;;;;;:::o;2672:437::-;2751:1;2747:12;;;;2794;;;2815:61;;2869:4;2861:6;2857:17;2847:27;;2815:61;2922:2;2914:6;2911:14;2891:18;2888:38;2885:218;;2959:77;2956:1;2949:88;3060:4;3057:1;3050:15;3088:4;3085:1;3078:15;2885:218;;2672:437;;;:::o;3114:184::-;3166:77;3163:1;3156:88;3263:4;3260:1;3253:15;3287:4;3284:1;3277:15;3303:128;3343:3;3374:1;3370:6;3367:1;3364:13;3361:39;;;3380:18;;:::i;:::-;-1:-1:-1;3416:9:54;;3303:128::o;7730:125::-;7770:4;7798:1;7795;7792:8;7789:34;;;7803:18;;:::i;:::-;-1:-1:-1;7840:9:54;;7730:125::o"},"gasEstimates":{"creation":{"codeDepositCost":"789200","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"24600","balanceOf(address)":"2583","burn(uint256)":"50858","decimals()":"222","decreaseAllowance(address,uint256)":"26885","increaseAllowance(address,uint256)":"26953","mint(address,uint256)":"infinite","name()":"infinite","symbol()":"infinite","totalSupply()":"2349","transfer(address,uint256)":"51164","transferFrom(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestERC20.sol\":\"TestERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n    mapping(address => uint256) private _balances;\\n\\n    mapping(address => mapping(address => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * The default value of {decimals} is 18. To select a different value for\\n     * {decimals} you should overload it.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n     * overridden;\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual override returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual override returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `amount`.\\n     */\\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `amount`.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) public virtual override returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, amount);\\n        _transfer(from, to, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, allowance(owner, spender) + addedValue);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `spender` must have allowance for the caller of at least\\n     * `subtractedValue`.\\n     */\\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        uint256 currentAllowance = allowance(owner, spender);\\n        require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n        unchecked {\\n            _approve(owner, spender, currentAllowance - subtractedValue);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves `amount` of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `amount`.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {\\n        require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n        require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, amount);\\n\\n        uint256 fromBalance = _balances[from];\\n        require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n        unchecked {\\n            _balances[from] = fromBalance - amount;\\n        }\\n        _balances[to] += amount;\\n\\n        emit Transfer(from, to, amount);\\n\\n        _afterTokenTransfer(from, to, amount);\\n    }\\n\\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n     * the total supply.\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function _mint(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n        _beforeTokenTransfer(address(0), account, amount);\\n\\n        _totalSupply += amount;\\n        _balances[account] += amount;\\n        emit Transfer(address(0), account, amount);\\n\\n        _afterTokenTransfer(address(0), account, amount);\\n    }\\n\\n    /**\\n     * @dev Destroys `amount` tokens from `account`, reducing the\\n     * total supply.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     * - `account` must have at least `amount` tokens.\\n     */\\n    function _burn(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n        _beforeTokenTransfer(account, address(0), amount);\\n\\n        uint256 accountBalance = _balances[account];\\n        require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n        unchecked {\\n            _balances[account] = accountBalance - amount;\\n        }\\n        _totalSupply -= amount;\\n\\n        emit Transfer(account, address(0), amount);\\n\\n        _afterTokenTransfer(account, address(0), amount);\\n    }\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     */\\n    function _approve(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n        require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n        _allowances[owner][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n     *\\n     * Does not update the allowance amount in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Might emit an {Approval} event.\\n     */\\n    function _spendAllowance(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * will be transferred to `to`.\\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * has been transferred to `to`.\\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/test/TestERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\n\\ncontract TestERC20 is ERC20 {\\n\\n    constructor() ERC20(\\\"TestERC20\\\", \\\"TestERC20\\\") {}\\n\\n    function mint(address recipient, uint256 amount) external {\\n        require(amount != 0, \\\"amount == 0\\\");\\n        _mint(recipient, amount);\\n    }\\n\\n    function burn(uint256 amount) external {\\n        _burn(_msgSender(), amount);\\n    }\\n}\",\"keccak256\":\"0x4057c853d94898f1d476c3a8970610d0f76187bb31e254542d2bc6d0d49c857d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":128,"contract":"contracts/test/TestERC20.sol:TestERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":134,"contract":"contracts/test/TestERC20.sol:TestERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":136,"contract":"contracts/test/TestERC20.sol:TestERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":138,"contract":"contracts/test/TestERC20.sol:TestERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":140,"contract":"contracts/test/TestERC20.sol:TestERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/test/TestERC721.sol":{"TestERC721":{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_864":{"entryPoint":null,"id":864,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":292,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:396:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"69:325:54","statements":[{"nodeType":"YulAssignment","src":"79:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"93:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"96:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"89:3:54"},"nodeType":"YulFunctionCall","src":"89:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"79:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"110:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"140:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"146:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"136:3:54"},"nodeType":"YulFunctionCall","src":"136:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"114:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"187:31:54","statements":[{"nodeType":"YulAssignment","src":"189:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"203:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"211:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"199:3:54"},"nodeType":"YulFunctionCall","src":"199:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"189:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"167:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"160:6:54"},"nodeType":"YulFunctionCall","src":"160:26:54"},"nodeType":"YulIf","src":"157:61:54"},{"body":{"nodeType":"YulBlock","src":"277:111:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"298:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"305:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"310:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"301:3:54"},"nodeType":"YulFunctionCall","src":"301:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"291:6:54"},"nodeType":"YulFunctionCall","src":"291:31:54"},"nodeType":"YulExpressionStatement","src":"291:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"342:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"345:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"335:6:54"},"nodeType":"YulFunctionCall","src":"335:15:54"},"nodeType":"YulExpressionStatement","src":"335:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"370:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"373:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"363:6:54"},"nodeType":"YulFunctionCall","src":"363:15:54"},"nodeType":"YulExpressionStatement","src":"363:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"233:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"256:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"264:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"253:2:54"},"nodeType":"YulFunctionCall","src":"253:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"230:2:54"},"nodeType":"YulFunctionCall","src":"230:38:54"},"nodeType":"YulIf","src":"227:161:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"49:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"58:6:54","type":""}],"src":"14:380:54"}]},"contents":"{\n    { }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060408051808201825260078152665465737437323160c81b60208083019182528351808501909452600684526554535437323160d01b9084015281519192916200005f916000916200007e565b508051620000759060019060208401906200007e565b50505062000160565b8280546200008c9062000124565b90600052602060002090601f016020900481019282620000b05760008555620000fb565b82601f10620000cb57805160ff1916838001178555620000fb565b82800160010185558215620000fb579182015b82811115620000fb578251825591602001919060010190620000de565b50620001099291506200010d565b5090565b5b808211156200010957600081556001016200010e565b600181811c908216806200013957607f821691505b6020821081036200015a57634e487b7160e01b600052602260045260246000fd5b50919050565b6115b680620001706000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101ee578063b88d4fde14610201578063c87b56dd14610214578063e985e9c51461025a57600080fd5b80636352211e146101b257806370a08231146101c557806395d89b41146101e657600080fd5b8063095ea7b3116100c8578063095ea7b31461016457806323b872dd1461017957806340c10f191461018c57806342842e0e1461019f57600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd36600461116c565b6102a3565b60405190151581526020015b60405180910390f35b61011f610388565b60405161010e91906111fb565b61013f61013a36600461120e565b61041a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b610177610172366004611250565b61044e565b005b61017761018736600461127a565b6105ab565b61010261019a366004611250565b610632565b6101776101ad36600461127a565b610647565b61013f6101c036600461120e565b610662565b6101d86101d33660046112b6565b6106d4565b60405190815260200161010e565b61011f610788565b6101776101fc3660046112d1565b610797565b61017761020f36600461133c565b6107a6565b61011f61022236600461120e565b5060408051808201909152600881527f746f6b656e555249000000000000000000000000000000000000000000000000602082015290565b610102610268366004611436565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061033657507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061038257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461039790611469565b80601f01602080910402602001604051908101604052809291908181526020018280546103c390611469565b80156104105780601f106103e557610100808354040283529160200191610410565b820191906000526020600020905b8154815290600101906020018083116103f357829003601f168201915b5050505050905090565b600061042582610834565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061045982610662565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105015760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8216148061052a575061052a8133610268565b61059c5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104f8565b6105a683836108a8565b505050565b6105b53382610948565b6106275760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104f8565b6105a6838383610a08565b600061063e8383610c3b565b50600192915050565b6105a6838383604051806020016040528060008152506107a6565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806103825760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104f8565b600073ffffffffffffffffffffffffffffffffffffffff821661075f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016104f8565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461039790611469565b6107a2338383610dc9565b5050565b6107b03383610948565b6108225760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104f8565b61082e84848484610edc565b50505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff166108a55760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104f8565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061090282610662565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061095483610662565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806109c2575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610a0057508373ffffffffffffffffffffffffffffffffffffffff166109e88461041a565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610a2882610662565b73ffffffffffffffffffffffffffffffffffffffff1614610ab15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104f8565b73ffffffffffffffffffffffffffffffffffffffff8216610b395760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104f8565b610b446000826108a8565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610b7a9084906114eb565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610bb5908490611502565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff8216610c9e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104f8565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615610d105760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016104f8565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610d46908490611502565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e445760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104f8565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610ee7848484610a08565b610ef384848484610f65565b61082e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104f8565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611133576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610fdc90339089908890889060040161151a565b6020604051808303816000875af1925050508015611035575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261103291810190611563565b60015b6110e8573d808015611063576040519150601f19603f3d011682016040523d82523d6000602084013e611068565b606091505b5080516000036110e05760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104f8565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610a00565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146108a557600080fd5b60006020828403121561117e57600080fd5b81356111898161113e565b9392505050565b6000815180845260005b818110156111b65760208185018101518683018201520161119a565b818111156111c8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111896020830184611190565b60006020828403121561122057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461124b57600080fd5b919050565b6000806040838503121561126357600080fd5b61126c83611227565b946020939093013593505050565b60008060006060848603121561128f57600080fd5b61129884611227565b92506112a660208501611227565b9150604084013590509250925092565b6000602082840312156112c857600080fd5b61118982611227565b600080604083850312156112e457600080fd5b6112ed83611227565b91506020830135801515811461130257600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561135257600080fd5b61135b85611227565b935061136960208601611227565b925060408501359150606085013567ffffffffffffffff8082111561138d57600080fd5b818701915087601f8301126113a157600080fd5b8135818111156113b3576113b361130d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156113f9576113f961130d565b816040528281528a602084870101111561141257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561144957600080fd5b61145283611227565b915061146060208401611227565b90509250929050565b600181811c9082168061147d57607f821691505b6020821081036114b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114fd576114fd6114bc565b500390565b60008219821115611515576115156114bc565b500190565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526115596080830184611190565b9695505050505050565b60006020828403121561157557600080fd5b81516111898161113e56fea2646970667358221220ba2f7b2e08f576403bb74551bf3f93d32556fddb64509eff9013d539fbb7c8b964736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x7 DUP2 MSTORE PUSH7 0x54657374373231 PUSH1 0xC8 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH6 0x545354373231 PUSH1 0xD0 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH3 0x5F SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x7E JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x75 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x7E JUMP JUMPDEST POP POP POP PUSH3 0x160 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x8C SWAP1 PUSH3 0x124 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0xB0 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xFB JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xCB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xFB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xFB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xFB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xDE JUMP JUMPDEST POP PUSH3 0x109 SWAP3 SWAP2 POP PUSH3 0x10D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x10E JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x139 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x15A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x15B6 DUP1 PUSH3 0x170 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x18C JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x19F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11F PUSH2 0x388 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x11FB JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x120E JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x177 PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0x1250 JUMP JUMPDEST PUSH2 0x44E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x177 PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x127A JUMP JUMPDEST PUSH2 0x5AB JUMP JUMPDEST PUSH2 0x102 PUSH2 0x19A CALLDATASIZE PUSH1 0x4 PUSH2 0x1250 JUMP JUMPDEST PUSH2 0x632 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x127A JUMP JUMPDEST PUSH2 0x647 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x120E JUMP JUMPDEST PUSH2 0x662 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x6D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x11F PUSH2 0x788 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x12D1 JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x20F CALLDATASIZE PUSH1 0x4 PUSH2 0x133C JUMP JUMPDEST PUSH2 0x7A6 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x120E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP2 MSTORE PUSH32 0x746F6B656E555249000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x268 CALLDATASIZE PUSH1 0x4 PUSH2 0x1436 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x336 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x382 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x397 SWAP1 PUSH2 0x1469 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3C3 SWAP1 PUSH2 0x1469 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x410 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3E5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x410 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3F3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x425 DUP3 PUSH2 0x834 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x459 DUP3 PUSH2 0x662 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ DUP1 PUSH2 0x52A JUMPI POP PUSH2 0x52A DUP2 CALLER PUSH2 0x268 JUMP JUMPDEST PUSH2 0x59C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x5A6 DUP4 DUP4 PUSH2 0x8A8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5B5 CALLER DUP3 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x627 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x5A6 DUP4 DUP4 DUP4 PUSH2 0xA08 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63E DUP4 DUP4 PUSH2 0xC3B JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5A6 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x382 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x75F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x397 SWAP1 PUSH2 0x1469 JUMP JUMPDEST PUSH2 0x7A2 CALLER DUP4 DUP4 PUSH2 0xDC9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7B0 CALLER DUP4 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x822 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x82E DUP5 DUP5 DUP5 DUP5 PUSH2 0xEDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x902 DUP3 PUSH2 0x662 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x954 DUP4 PUSH2 0x662 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x9C2 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0xA00 JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9E8 DUP5 PUSH2 0x41A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA28 DUP3 PUSH2 0x662 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB39 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xB44 PUSH1 0x0 DUP3 PUSH2 0x8A8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xB7A SWAP1 DUP5 SWAP1 PUSH2 0x14EB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xBB5 SWAP1 DUP5 SWAP1 PUSH2 0x1502 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC9E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xD10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xD46 SWAP1 DUP5 SWAP1 PUSH2 0x1502 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xEE7 DUP5 DUP5 DUP5 PUSH2 0xA08 JUMP JUMPDEST PUSH2 0xEF3 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1133 JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xFDC SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x151A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1035 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1032 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1563 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x10E8 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1063 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 0x1068 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x10E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0xA00 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x117E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1189 DUP2 PUSH2 0x113E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11B6 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x119A JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11C8 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1189 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1190 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x124B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x126C DUP4 PUSH2 0x1227 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x128F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1298 DUP5 PUSH2 0x1227 JUMP JUMPDEST SWAP3 POP PUSH2 0x12A6 PUSH1 0x20 DUP6 ADD PUSH2 0x1227 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1189 DUP3 PUSH2 0x1227 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12ED DUP4 PUSH2 0x1227 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x135B DUP6 PUSH2 0x1227 JUMP JUMPDEST SWAP4 POP PUSH2 0x1369 PUSH1 0x20 DUP7 ADD PUSH2 0x1227 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x13B3 JUMPI PUSH2 0x13B3 PUSH2 0x130D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x13F9 JUMPI PUSH2 0x13F9 PUSH2 0x130D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1452 DUP4 PUSH2 0x1227 JUMP JUMPDEST SWAP2 POP PUSH2 0x1460 PUSH1 0x20 DUP5 ADD PUSH2 0x1227 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x147D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x14B6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x14FD JUMPI PUSH2 0x14FD PUSH2 0x14BC JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1515 JUMPI PUSH2 0x1515 PUSH2 0x14BC JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1559 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1190 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1189 DUP2 PUSH2 0x113E JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA 0x2F PUSH28 0x2E08F576403BB74551BF3F93D32556FDDB64509EFF9013D539FBB7C8 0xB9 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"168:292:49:-:0;;;;;;;;;;;;-1:-1:-1;1390:113:4;;;;;;;;;;;-1:-1:-1;;;1390:113:4;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1390:113:4;;;;1456:13;;1390:113;;;1456:13;;-1:-1:-1;;1456:13:4;:::i;:::-;-1:-1:-1;1479:17:4;;;;:7;;:17;;;;;:::i;:::-;;1390:113;;168:292:49;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;168:292:49;;;-1:-1:-1;168:292:49;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:380:54;93:1;89:12;;;;136;;;157:61;;211:4;203:6;199:17;189:27;;157:61;264:2;256:6;253:14;233:18;230:38;227:161;;310:10;305:3;301:20;298:1;291:31;345:4;342:1;335:15;373:4;370:1;363:15;227:161;;14:380;;;:::o;:::-;168:292:49;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_1667":{"entryPoint":null,"id":1667,"parameterSlots":3,"returnSlots":0},"@_approve_1537":{"entryPoint":2216,"id":1537,"parameterSlots":2,"returnSlots":0},"@_beforeTokenTransfer_1656":{"entryPoint":null,"id":1656,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_1645":{"entryPoint":3941,"id":1645,"parameterSlots":4,"returnSlots":1},"@_exists_1234":{"entryPoint":null,"id":1234,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_1268":{"entryPoint":2376,"id":1268,"parameterSlots":2,"returnSlots":1},"@_mint_1378":{"entryPoint":3131,"id":1378,"parameterSlots":2,"returnSlots":0},"@_msgSender_2136":{"entryPoint":null,"id":2136,"parameterSlots":0,"returnSlots":1},"@_requireMinted_1583":{"entryPoint":2100,"id":1583,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_1216":{"entryPoint":3804,"id":1216,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_1569":{"entryPoint":3529,"id":1569,"parameterSlots":3,"returnSlots":0},"@_transfer_1513":{"entryPoint":2568,"id":1513,"parameterSlots":3,"returnSlots":0},"@approve_1058":{"entryPoint":1102,"id":1058,"parameterSlots":2,"returnSlots":0},"@balanceOf_919":{"entryPoint":1748,"id":919,"parameterSlots":1,"returnSlots":1},"@getApproved_1076":{"entryPoint":1050,"id":1076,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_1111":{"entryPoint":null,"id":1111,"parameterSlots":2,"returnSlots":1},"@isContract_1847":{"entryPoint":null,"id":1847,"parameterSlots":1,"returnSlots":1},"@mint_8508":{"entryPoint":1586,"id":8508,"parameterSlots":2,"returnSlots":1},"@name_957":{"entryPoint":904,"id":957,"parameterSlots":0,"returnSlots":1},"@ownerOf_947":{"entryPoint":1634,"id":947,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_1157":{"entryPoint":1607,"id":1157,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_1187":{"entryPoint":1958,"id":1187,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_1093":{"entryPoint":1943,"id":1093,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2395":{"entryPoint":null,"id":2395,"parameterSlots":1,"returnSlots":1},"@supportsInterface_895":{"entryPoint":675,"id":895,"parameterSlots":1,"returnSlots":1},"@symbol_967":{"entryPoint":1928,"id":967,"parameterSlots":0,"returnSlots":1},"@tokenURI_8519":{"entryPoint":null,"id":8519,"parameterSlots":1,"returnSlots":1},"@transferFrom_1138":{"entryPoint":1451,"id":1138,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":4647,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4790,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":5174,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4730,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":4924,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4817,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4688,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":4460,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":5475,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4622,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4496,"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_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5402,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__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":4603,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":5378,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":5355,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":5225,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":5308,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4877,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":4414,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10964:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:133:54","statements":[{"body":{"nodeType":"YulBlock","src":"169:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:54"},"nodeType":"YulFunctionCall","src":"171:12:54"},"nodeType":"YulExpressionStatement","src":"171:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"99:66:54","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:54"},"nodeType":"YulFunctionCall","src":"88:78:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:54"},"nodeType":"YulFunctionCall","src":"78:89:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:54"},"nodeType":"YulFunctionCall","src":"71:97:54"},"nodeType":"YulIf","src":"68:117:54"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:54","type":""}],"src":"14:177:54"},{"body":{"nodeType":"YulBlock","src":"265:176:54","statements":[{"body":{"nodeType":"YulBlock","src":"311:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"320:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"323:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"313:6:54"},"nodeType":"YulFunctionCall","src":"313:12:54"},"nodeType":"YulExpressionStatement","src":"313:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"286:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"295:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"282:3:54"},"nodeType":"YulFunctionCall","src":"282:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"307:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"278:3:54"},"nodeType":"YulFunctionCall","src":"278:32:54"},"nodeType":"YulIf","src":"275:52:54"},{"nodeType":"YulVariableDeclaration","src":"336:36:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"362:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"349:12:54"},"nodeType":"YulFunctionCall","src":"349:23:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"340:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"405:5:54"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"381:23:54"},"nodeType":"YulFunctionCall","src":"381:30:54"},"nodeType":"YulExpressionStatement","src":"381:30:54"},{"nodeType":"YulAssignment","src":"420:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"430:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"420:6:54"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"231:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"242:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"254:6:54","type":""}],"src":"196:245:54"},{"body":{"nodeType":"YulBlock","src":"541:92:54","statements":[{"nodeType":"YulAssignment","src":"551:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"563:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"574:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"559:3:54"},"nodeType":"YulFunctionCall","src":"559:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"551:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"593:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"618:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"611:6:54"},"nodeType":"YulFunctionCall","src":"611:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"604:6:54"},"nodeType":"YulFunctionCall","src":"604:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"586:6:54"},"nodeType":"YulFunctionCall","src":"586:41:54"},"nodeType":"YulExpressionStatement","src":"586:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"510:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"521:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"532:4:54","type":""}],"src":"446:187:54"},{"body":{"nodeType":"YulBlock","src":"688:481:54","statements":[{"nodeType":"YulVariableDeclaration","src":"698:26:54","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"718:5:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"712:5:54"},"nodeType":"YulFunctionCall","src":"712:12:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"702:6:54","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"740:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"745:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"733:6:54"},"nodeType":"YulFunctionCall","src":"733:19:54"},"nodeType":"YulExpressionStatement","src":"733:19:54"},{"nodeType":"YulVariableDeclaration","src":"761:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"770:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"765:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"832:110:54","statements":[{"nodeType":"YulVariableDeclaration","src":"846:14:54","value":{"kind":"number","nodeType":"YulLiteral","src":"856:4:54","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"850:2:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"888:3:54"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"884:3:54"},"nodeType":"YulFunctionCall","src":"884:11:54"},{"name":"_1","nodeType":"YulIdentifier","src":"897:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"880:3:54"},"nodeType":"YulFunctionCall","src":"880:20:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"916:5:54"},{"name":"i","nodeType":"YulIdentifier","src":"923:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"912:3:54"},"nodeType":"YulFunctionCall","src":"912:13:54"},{"name":"_1","nodeType":"YulIdentifier","src":"927:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"908:3:54"},"nodeType":"YulFunctionCall","src":"908:22:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"902:5:54"},"nodeType":"YulFunctionCall","src":"902:29:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"873:6:54"},"nodeType":"YulFunctionCall","src":"873:59:54"},"nodeType":"YulExpressionStatement","src":"873:59:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"791:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"794:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"788:2:54"},"nodeType":"YulFunctionCall","src":"788:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"802:21:54","statements":[{"nodeType":"YulAssignment","src":"804:17:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"813:1:54"},{"kind":"number","nodeType":"YulLiteral","src":"816:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"809:3:54"},"nodeType":"YulFunctionCall","src":"809:12:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"804:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"784:3:54","statements":[]},"src":"780:162:54"},{"body":{"nodeType":"YulBlock","src":"976:62:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1005:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"1010:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1001:3:54"},"nodeType":"YulFunctionCall","src":"1001:16:54"},{"kind":"number","nodeType":"YulLiteral","src":"1019:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"997:3:54"},"nodeType":"YulFunctionCall","src":"997:27:54"},{"kind":"number","nodeType":"YulLiteral","src":"1026:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"990:6:54"},"nodeType":"YulFunctionCall","src":"990:38:54"},"nodeType":"YulExpressionStatement","src":"990:38:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"957:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"960:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"954:2:54"},"nodeType":"YulFunctionCall","src":"954:13:54"},"nodeType":"YulIf","src":"951:87:54"},{"nodeType":"YulAssignment","src":"1047:116:54","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1062:3:54"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1075:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1071:3:54"},"nodeType":"YulFunctionCall","src":"1071:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"1088:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1067:3:54"},"nodeType":"YulFunctionCall","src":"1067:88:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1058:3:54"},"nodeType":"YulFunctionCall","src":"1058:98:54"},{"kind":"number","nodeType":"YulLiteral","src":"1158:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1054:3:54"},"nodeType":"YulFunctionCall","src":"1054:109:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1047:3:54"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"665:5:54","type":""},{"name":"pos","nodeType":"YulTypedName","src":"672:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"680:3:54","type":""}],"src":"638:531:54"},{"body":{"nodeType":"YulBlock","src":"1295:99:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1312:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1323:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1305:6:54"},"nodeType":"YulFunctionCall","src":"1305:21:54"},"nodeType":"YulExpressionStatement","src":"1305:21:54"},{"nodeType":"YulAssignment","src":"1335:53:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1361:6:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1373:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1384:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1369:3:54"},"nodeType":"YulFunctionCall","src":"1369:18:54"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1343:17:54"},"nodeType":"YulFunctionCall","src":"1343:45:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1335:4:54"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1264:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1275:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1286:4:54","type":""}],"src":"1174:220:54"},{"body":{"nodeType":"YulBlock","src":"1469:110:54","statements":[{"body":{"nodeType":"YulBlock","src":"1515:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1524:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1527:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1517:6:54"},"nodeType":"YulFunctionCall","src":"1517:12:54"},"nodeType":"YulExpressionStatement","src":"1517:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1490:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1499:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1486:3:54"},"nodeType":"YulFunctionCall","src":"1486:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1511:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1482:3:54"},"nodeType":"YulFunctionCall","src":"1482:32:54"},"nodeType":"YulIf","src":"1479:52:54"},{"nodeType":"YulAssignment","src":"1540:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1563:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1550:12:54"},"nodeType":"YulFunctionCall","src":"1550:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1540:6:54"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1435:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1446:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1458:6:54","type":""}],"src":"1399:180:54"},{"body":{"nodeType":"YulBlock","src":"1685:125:54","statements":[{"nodeType":"YulAssignment","src":"1695:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1707:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1718:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1703:3:54"},"nodeType":"YulFunctionCall","src":"1703:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1695:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1737:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1752:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1760:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1748:3:54"},"nodeType":"YulFunctionCall","src":"1748:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1730:6:54"},"nodeType":"YulFunctionCall","src":"1730:74:54"},"nodeType":"YulExpressionStatement","src":"1730:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1654:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1665:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1676:4:54","type":""}],"src":"1584:226:54"},{"body":{"nodeType":"YulBlock","src":"1864:147:54","statements":[{"nodeType":"YulAssignment","src":"1874:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1896:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1883:12:54"},"nodeType":"YulFunctionCall","src":"1883:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1874:5:54"}]},{"body":{"nodeType":"YulBlock","src":"1989:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1998:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2001:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1991:6:54"},"nodeType":"YulFunctionCall","src":"1991:12:54"},"nodeType":"YulExpressionStatement","src":"1991:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1925:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1936:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"1943:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1932:3:54"},"nodeType":"YulFunctionCall","src":"1932:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1922:2:54"},"nodeType":"YulFunctionCall","src":"1922:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1915:6:54"},"nodeType":"YulFunctionCall","src":"1915:73:54"},"nodeType":"YulIf","src":"1912:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1854:5:54","type":""}],"src":"1815:196:54"},{"body":{"nodeType":"YulBlock","src":"2103:167:54","statements":[{"body":{"nodeType":"YulBlock","src":"2149:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:54"},"nodeType":"YulFunctionCall","src":"2151:12:54"},"nodeType":"YulExpressionStatement","src":"2151:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2124:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2133:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2120:3:54"},"nodeType":"YulFunctionCall","src":"2120:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2145:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2116:3:54"},"nodeType":"YulFunctionCall","src":"2116:32:54"},"nodeType":"YulIf","src":"2113:52:54"},{"nodeType":"YulAssignment","src":"2174:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2203:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2184:18:54"},"nodeType":"YulFunctionCall","src":"2184:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2174:6:54"}]},{"nodeType":"YulAssignment","src":"2222:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2249:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2260:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2245:3:54"},"nodeType":"YulFunctionCall","src":"2245:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2232:12:54"},"nodeType":"YulFunctionCall","src":"2232:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2222:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2061:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2072:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2084:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2092:6:54","type":""}],"src":"2016:254:54"},{"body":{"nodeType":"YulBlock","src":"2379:224:54","statements":[{"body":{"nodeType":"YulBlock","src":"2425:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2434:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2437:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2427:6:54"},"nodeType":"YulFunctionCall","src":"2427:12:54"},"nodeType":"YulExpressionStatement","src":"2427:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2400:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2409:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2396:3:54"},"nodeType":"YulFunctionCall","src":"2396:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2421:2:54","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2392:3:54"},"nodeType":"YulFunctionCall","src":"2392:32:54"},"nodeType":"YulIf","src":"2389:52:54"},{"nodeType":"YulAssignment","src":"2450:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2479:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2460:18:54"},"nodeType":"YulFunctionCall","src":"2460:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2450:6:54"}]},{"nodeType":"YulAssignment","src":"2498:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2531:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2542:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2527:3:54"},"nodeType":"YulFunctionCall","src":"2527:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2508:18:54"},"nodeType":"YulFunctionCall","src":"2508:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2498:6:54"}]},{"nodeType":"YulAssignment","src":"2555:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2582:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2593:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2578:3:54"},"nodeType":"YulFunctionCall","src":"2578:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2565:12:54"},"nodeType":"YulFunctionCall","src":"2565:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2555:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2329:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2340:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2352:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2360:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2368:6:54","type":""}],"src":"2275:328:54"},{"body":{"nodeType":"YulBlock","src":"2678:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"2724:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2733:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2736:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2726:6:54"},"nodeType":"YulFunctionCall","src":"2726:12:54"},"nodeType":"YulExpressionStatement","src":"2726:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2699:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2708:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2695:3:54"},"nodeType":"YulFunctionCall","src":"2695:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2720:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2691:3:54"},"nodeType":"YulFunctionCall","src":"2691:32:54"},"nodeType":"YulIf","src":"2688:52:54"},{"nodeType":"YulAssignment","src":"2749:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2778:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2759:18:54"},"nodeType":"YulFunctionCall","src":"2759:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2749:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2644:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2655:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2667:6:54","type":""}],"src":"2608:186:54"},{"body":{"nodeType":"YulBlock","src":"2900:76:54","statements":[{"nodeType":"YulAssignment","src":"2910:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2922:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2933:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2918:3:54"},"nodeType":"YulFunctionCall","src":"2918:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2910:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2952:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"2963:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2945:6:54"},"nodeType":"YulFunctionCall","src":"2945:25:54"},"nodeType":"YulExpressionStatement","src":"2945:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2869:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2880:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2891:4:54","type":""}],"src":"2799:177:54"},{"body":{"nodeType":"YulBlock","src":"3065:263:54","statements":[{"body":{"nodeType":"YulBlock","src":"3111:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3120:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3123:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3113:6:54"},"nodeType":"YulFunctionCall","src":"3113:12:54"},"nodeType":"YulExpressionStatement","src":"3113:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3086:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3095:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3082:3:54"},"nodeType":"YulFunctionCall","src":"3082:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3107:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3078:3:54"},"nodeType":"YulFunctionCall","src":"3078:32:54"},"nodeType":"YulIf","src":"3075:52:54"},{"nodeType":"YulAssignment","src":"3136:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3165:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3146:18:54"},"nodeType":"YulFunctionCall","src":"3146:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3136:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"3184:45:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3214:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3225:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3210:3:54"},"nodeType":"YulFunctionCall","src":"3210:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3197:12:54"},"nodeType":"YulFunctionCall","src":"3197:32:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3188:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3282:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3291:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3294:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3284:6:54"},"nodeType":"YulFunctionCall","src":"3284:12:54"},"nodeType":"YulExpressionStatement","src":"3284:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3251:5:54"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3272:5:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3265:6:54"},"nodeType":"YulFunctionCall","src":"3265:13:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3258:6:54"},"nodeType":"YulFunctionCall","src":"3258:21:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3248:2:54"},"nodeType":"YulFunctionCall","src":"3248:32:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3241:6:54"},"nodeType":"YulFunctionCall","src":"3241:40:54"},"nodeType":"YulIf","src":"3238:60:54"},{"nodeType":"YulAssignment","src":"3307:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"3317:5:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3307:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3023:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3034:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3046:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3054:6:54","type":""}],"src":"2981:347:54"},{"body":{"nodeType":"YulBlock","src":"3365:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3382:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3385:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3375:6:54"},"nodeType":"YulFunctionCall","src":"3375:88:54"},"nodeType":"YulExpressionStatement","src":"3375:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3479:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3482:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3472:6:54"},"nodeType":"YulFunctionCall","src":"3472:15:54"},"nodeType":"YulExpressionStatement","src":"3472:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3503:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3506:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3496:6:54"},"nodeType":"YulFunctionCall","src":"3496:15:54"},"nodeType":"YulExpressionStatement","src":"3496:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3333:184:54"},{"body":{"nodeType":"YulBlock","src":"3652:1067:54","statements":[{"body":{"nodeType":"YulBlock","src":"3699:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3708:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3711:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3701:6:54"},"nodeType":"YulFunctionCall","src":"3701:12:54"},"nodeType":"YulExpressionStatement","src":"3701:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3673:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3682:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3669:3:54"},"nodeType":"YulFunctionCall","src":"3669:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3694:3:54","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3665:3:54"},"nodeType":"YulFunctionCall","src":"3665:33:54"},"nodeType":"YulIf","src":"3662:53:54"},{"nodeType":"YulAssignment","src":"3724:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3753:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3734:18:54"},"nodeType":"YulFunctionCall","src":"3734:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3724:6:54"}]},{"nodeType":"YulAssignment","src":"3772:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3805:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3816:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3801:3:54"},"nodeType":"YulFunctionCall","src":"3801:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3782:18:54"},"nodeType":"YulFunctionCall","src":"3782:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3772:6:54"}]},{"nodeType":"YulAssignment","src":"3829:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3856:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3867:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:54"},"nodeType":"YulFunctionCall","src":"3852:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3839:12:54"},"nodeType":"YulFunctionCall","src":"3839:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3829:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"3880:46:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3911:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3922:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3907:3:54"},"nodeType":"YulFunctionCall","src":"3907:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3894:12:54"},"nodeType":"YulFunctionCall","src":"3894:32:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3884:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3935:28:54","value":{"kind":"number","nodeType":"YulLiteral","src":"3945:18:54","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3939:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3990:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3999:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4002:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3992:6:54"},"nodeType":"YulFunctionCall","src":"3992:12:54"},"nodeType":"YulExpressionStatement","src":"3992:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3978:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"3986:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3975:2:54"},"nodeType":"YulFunctionCall","src":"3975:14:54"},"nodeType":"YulIf","src":"3972:34:54"},{"nodeType":"YulVariableDeclaration","src":"4015:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4029:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"4040:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4025:3:54"},"nodeType":"YulFunctionCall","src":"4025:22:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4019:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4095:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4104:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4107:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4097:6:54"},"nodeType":"YulFunctionCall","src":"4097:12:54"},"nodeType":"YulExpressionStatement","src":"4097:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4074:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4078:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4070:3:54"},"nodeType":"YulFunctionCall","src":"4070:13:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4085:7:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4066:3:54"},"nodeType":"YulFunctionCall","src":"4066:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4059:6:54"},"nodeType":"YulFunctionCall","src":"4059:35:54"},"nodeType":"YulIf","src":"4056:55:54"},{"nodeType":"YulVariableDeclaration","src":"4120:26:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4143:2:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4130:12:54"},"nodeType":"YulFunctionCall","src":"4130:16:54"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4124:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4169:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4171:16:54"},"nodeType":"YulFunctionCall","src":"4171:18:54"},"nodeType":"YulExpressionStatement","src":"4171:18:54"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4161:2:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4165:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4158:2:54"},"nodeType":"YulFunctionCall","src":"4158:10:54"},"nodeType":"YulIf","src":"4155:36:54"},{"nodeType":"YulVariableDeclaration","src":"4200:76:54","value":{"kind":"number","nodeType":"YulLiteral","src":"4210:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4204:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4285:23:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4305:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4299:5:54"},"nodeType":"YulFunctionCall","src":"4299:9:54"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4289:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4317:71:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4339:6:54"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4363:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4367:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4359:3:54"},"nodeType":"YulFunctionCall","src":"4359:13:54"},{"name":"_4","nodeType":"YulIdentifier","src":"4374:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4355:3:54"},"nodeType":"YulFunctionCall","src":"4355:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"4379:2:54","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4351:3:54"},"nodeType":"YulFunctionCall","src":"4351:31:54"},{"name":"_4","nodeType":"YulIdentifier","src":"4384:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4347:3:54"},"nodeType":"YulFunctionCall","src":"4347:40:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4335:3:54"},"nodeType":"YulFunctionCall","src":"4335:53:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4321:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4447:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4449:16:54"},"nodeType":"YulFunctionCall","src":"4449:18:54"},"nodeType":"YulExpressionStatement","src":"4449:18:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4406:10:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4418:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4403:2:54"},"nodeType":"YulFunctionCall","src":"4403:18:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4426:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4438:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4423:2:54"},"nodeType":"YulFunctionCall","src":"4423:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4400:2:54"},"nodeType":"YulFunctionCall","src":"4400:46:54"},"nodeType":"YulIf","src":"4397:72:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4485:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4489:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4478:6:54"},"nodeType":"YulFunctionCall","src":"4478:22:54"},"nodeType":"YulExpressionStatement","src":"4478:22:54"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4516:6:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4524:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4509:6:54"},"nodeType":"YulFunctionCall","src":"4509:18:54"},"nodeType":"YulExpressionStatement","src":"4509:18:54"},{"body":{"nodeType":"YulBlock","src":"4573:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4582:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4585:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4575:6:54"},"nodeType":"YulFunctionCall","src":"4575:12:54"},"nodeType":"YulExpressionStatement","src":"4575:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4550:2:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4554:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4546:3:54"},"nodeType":"YulFunctionCall","src":"4546:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"4559:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4542:3:54"},"nodeType":"YulFunctionCall","src":"4542:20:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4564:7:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4539:2:54"},"nodeType":"YulFunctionCall","src":"4539:33:54"},"nodeType":"YulIf","src":"4536:53:54"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4615:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"4623:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4611:3:54"},"nodeType":"YulFunctionCall","src":"4611:15:54"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4632:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4636:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4628:3:54"},"nodeType":"YulFunctionCall","src":"4628:11:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4641:2:54"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4598:12:54"},"nodeType":"YulFunctionCall","src":"4598:46:54"},"nodeType":"YulExpressionStatement","src":"4598:46:54"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4668:6:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4676:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4664:3:54"},"nodeType":"YulFunctionCall","src":"4664:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"4681:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4660:3:54"},"nodeType":"YulFunctionCall","src":"4660:24:54"},{"kind":"number","nodeType":"YulLiteral","src":"4686:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4653:6:54"},"nodeType":"YulFunctionCall","src":"4653:35:54"},"nodeType":"YulExpressionStatement","src":"4653:35:54"},{"nodeType":"YulAssignment","src":"4697:16:54","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4707:6:54"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4697:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3594:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3605:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3617:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3625:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3633:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3641:6:54","type":""}],"src":"3522:1197:54"},{"body":{"nodeType":"YulBlock","src":"4811:173:54","statements":[{"body":{"nodeType":"YulBlock","src":"4857:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4866:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4869:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4859:6:54"},"nodeType":"YulFunctionCall","src":"4859:12:54"},"nodeType":"YulExpressionStatement","src":"4859:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4832:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4841:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4828:3:54"},"nodeType":"YulFunctionCall","src":"4828:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4853:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4824:3:54"},"nodeType":"YulFunctionCall","src":"4824:32:54"},"nodeType":"YulIf","src":"4821:52:54"},{"nodeType":"YulAssignment","src":"4882:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4911:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4892:18:54"},"nodeType":"YulFunctionCall","src":"4892:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4882:6:54"}]},{"nodeType":"YulAssignment","src":"4930:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4963:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"4974:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4959:3:54"},"nodeType":"YulFunctionCall","src":"4959:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4940:18:54"},"nodeType":"YulFunctionCall","src":"4940:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4930:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4769:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4780:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4792:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4800:6:54","type":""}],"src":"4724:260:54"},{"body":{"nodeType":"YulBlock","src":"5044:382:54","statements":[{"nodeType":"YulAssignment","src":"5054:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5068:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"5071:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5064:3:54"},"nodeType":"YulFunctionCall","src":"5064:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5054:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"5085:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5115:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"5121:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5111:3:54"},"nodeType":"YulFunctionCall","src":"5111:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"5089:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"5162:31:54","statements":[{"nodeType":"YulAssignment","src":"5164:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5178:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5186:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5174:3:54"},"nodeType":"YulFunctionCall","src":"5174:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5164:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5142:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5135:6:54"},"nodeType":"YulFunctionCall","src":"5135:26:54"},"nodeType":"YulIf","src":"5132:61:54"},{"body":{"nodeType":"YulBlock","src":"5252:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5273:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5276:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5266:6:54"},"nodeType":"YulFunctionCall","src":"5266:88:54"},"nodeType":"YulExpressionStatement","src":"5266:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5374:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5377:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5367:6:54"},"nodeType":"YulFunctionCall","src":"5367:15:54"},"nodeType":"YulExpressionStatement","src":"5367:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5402:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5405:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5395:6:54"},"nodeType":"YulFunctionCall","src":"5395:15:54"},"nodeType":"YulExpressionStatement","src":"5395:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5208:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5231:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5239:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5228:2:54"},"nodeType":"YulFunctionCall","src":"5228:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5205:2:54"},"nodeType":"YulFunctionCall","src":"5205:38:54"},"nodeType":"YulIf","src":"5202:218:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"5024:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5033:6:54","type":""}],"src":"4989:437:54"},{"body":{"nodeType":"YulBlock","src":"5605:223:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5622:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5633:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5615:6:54"},"nodeType":"YulFunctionCall","src":"5615:21:54"},"nodeType":"YulExpressionStatement","src":"5615:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5656:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5667:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5652:3:54"},"nodeType":"YulFunctionCall","src":"5652:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"5672:2:54","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5645:6:54"},"nodeType":"YulFunctionCall","src":"5645:30:54"},"nodeType":"YulExpressionStatement","src":"5645:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5695:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5706:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5691:3:54"},"nodeType":"YulFunctionCall","src":"5691:18:54"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5711:34:54","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5684:6:54"},"nodeType":"YulFunctionCall","src":"5684:62:54"},"nodeType":"YulExpressionStatement","src":"5684:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5766:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5777:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5762:3:54"},"nodeType":"YulFunctionCall","src":"5762:18:54"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5782:3:54","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5755:6:54"},"nodeType":"YulFunctionCall","src":"5755:31:54"},"nodeType":"YulExpressionStatement","src":"5755:31:54"},{"nodeType":"YulAssignment","src":"5795:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5807:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5818:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5803:3:54"},"nodeType":"YulFunctionCall","src":"5803:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5795:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5582:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5596:4:54","type":""}],"src":"5431:397:54"},{"body":{"nodeType":"YulBlock","src":"6007:252:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6024:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6035:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6017:6:54"},"nodeType":"YulFunctionCall","src":"6017:21:54"},"nodeType":"YulExpressionStatement","src":"6017:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6058:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6069:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6054:3:54"},"nodeType":"YulFunctionCall","src":"6054:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6074:2:54","type":"","value":"62"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6047:6:54"},"nodeType":"YulFunctionCall","src":"6047:30:54"},"nodeType":"YulExpressionStatement","src":"6047:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6097:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6108:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6093:3:54"},"nodeType":"YulFunctionCall","src":"6093:18:54"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"6113:34:54","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6086:6:54"},"nodeType":"YulFunctionCall","src":"6086:62:54"},"nodeType":"YulExpressionStatement","src":"6086:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6168:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6179:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6164:3:54"},"nodeType":"YulFunctionCall","src":"6164:18:54"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"6184:32:54","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6157:6:54"},"nodeType":"YulFunctionCall","src":"6157:60:54"},"nodeType":"YulExpressionStatement","src":"6157:60:54"},{"nodeType":"YulAssignment","src":"6226:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6238:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6249:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6234:3:54"},"nodeType":"YulFunctionCall","src":"6234:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6226:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5984:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5998:4:54","type":""}],"src":"5833:426:54"},{"body":{"nodeType":"YulBlock","src":"6438:236:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6455:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6466:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6448:6:54"},"nodeType":"YulFunctionCall","src":"6448:21:54"},"nodeType":"YulExpressionStatement","src":"6448:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6489:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6500:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6485:3:54"},"nodeType":"YulFunctionCall","src":"6485:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6505:2:54","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6478:6:54"},"nodeType":"YulFunctionCall","src":"6478:30:54"},"nodeType":"YulExpressionStatement","src":"6478:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6528:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6539:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6524:3:54"},"nodeType":"YulFunctionCall","src":"6524:18:54"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6544:34:54","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6517:6:54"},"nodeType":"YulFunctionCall","src":"6517:62:54"},"nodeType":"YulExpressionStatement","src":"6517:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6599:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6610:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6595:3:54"},"nodeType":"YulFunctionCall","src":"6595:18:54"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6615:16:54","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6588:6:54"},"nodeType":"YulFunctionCall","src":"6588:44:54"},"nodeType":"YulExpressionStatement","src":"6588:44:54"},{"nodeType":"YulAssignment","src":"6641:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6653:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6664:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6649:3:54"},"nodeType":"YulFunctionCall","src":"6649:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6641:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6415:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6429:4:54","type":""}],"src":"6264:410:54"},{"body":{"nodeType":"YulBlock","src":"6853:174:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6870:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6881:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6863:6:54"},"nodeType":"YulFunctionCall","src":"6863:21:54"},"nodeType":"YulExpressionStatement","src":"6863:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6904:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6915:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6900:3:54"},"nodeType":"YulFunctionCall","src":"6900:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6920:2:54","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6893:6:54"},"nodeType":"YulFunctionCall","src":"6893:30:54"},"nodeType":"YulExpressionStatement","src":"6893:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6943:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6954:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6939:3:54"},"nodeType":"YulFunctionCall","src":"6939:18:54"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"6959:26:54","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6932:6:54"},"nodeType":"YulFunctionCall","src":"6932:54:54"},"nodeType":"YulExpressionStatement","src":"6932:54:54"},{"nodeType":"YulAssignment","src":"6995:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7007:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7018:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7003:3:54"},"nodeType":"YulFunctionCall","src":"7003:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6995:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6830:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6844:4:54","type":""}],"src":"6679:348:54"},{"body":{"nodeType":"YulBlock","src":"7206:231:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7223:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7234:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7216:6:54"},"nodeType":"YulFunctionCall","src":"7216:21:54"},"nodeType":"YulExpressionStatement","src":"7216:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7257:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7268:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7253:3:54"},"nodeType":"YulFunctionCall","src":"7253:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7273:2:54","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7246:6:54"},"nodeType":"YulFunctionCall","src":"7246:30:54"},"nodeType":"YulExpressionStatement","src":"7246:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7296:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7307:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7292:3:54"},"nodeType":"YulFunctionCall","src":"7292:18:54"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7312:34:54","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7285:6:54"},"nodeType":"YulFunctionCall","src":"7285:62:54"},"nodeType":"YulExpressionStatement","src":"7285:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7367:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7378:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7363:3:54"},"nodeType":"YulFunctionCall","src":"7363:18:54"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7383:11:54","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7356:6:54"},"nodeType":"YulFunctionCall","src":"7356:39:54"},"nodeType":"YulExpressionStatement","src":"7356:39:54"},{"nodeType":"YulAssignment","src":"7404:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7416:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7427:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7412:3:54"},"nodeType":"YulFunctionCall","src":"7412:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7404:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7183:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7197:4:54","type":""}],"src":"7032:405:54"},{"body":{"nodeType":"YulBlock","src":"7616:227:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7633:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7644:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7626:6:54"},"nodeType":"YulFunctionCall","src":"7626:21:54"},"nodeType":"YulExpressionStatement","src":"7626:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7667:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7678:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7663:3:54"},"nodeType":"YulFunctionCall","src":"7663:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"7683:2:54","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7656:6:54"},"nodeType":"YulFunctionCall","src":"7656:30:54"},"nodeType":"YulExpressionStatement","src":"7656:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7706:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7717:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7702:3:54"},"nodeType":"YulFunctionCall","src":"7702:18:54"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"7722:34:54","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7695:6:54"},"nodeType":"YulFunctionCall","src":"7695:62:54"},"nodeType":"YulExpressionStatement","src":"7695:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7777:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7788:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7773:3:54"},"nodeType":"YulFunctionCall","src":"7773:18:54"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"7793:7:54","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7766:6:54"},"nodeType":"YulFunctionCall","src":"7766:35:54"},"nodeType":"YulExpressionStatement","src":"7766:35:54"},{"nodeType":"YulAssignment","src":"7810:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7822:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"7833:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7818:3:54"},"nodeType":"YulFunctionCall","src":"7818:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7810:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7593:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7607:4:54","type":""}],"src":"7442:401:54"},{"body":{"nodeType":"YulBlock","src":"8022:226:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8039:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8050:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8032:6:54"},"nodeType":"YulFunctionCall","src":"8032:21:54"},"nodeType":"YulExpressionStatement","src":"8032:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8073:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8084:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8069:3:54"},"nodeType":"YulFunctionCall","src":"8069:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"8089:2:54","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8062:6:54"},"nodeType":"YulFunctionCall","src":"8062:30:54"},"nodeType":"YulExpressionStatement","src":"8062:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8112:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8123:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8108:3:54"},"nodeType":"YulFunctionCall","src":"8108:18:54"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8128:34:54","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8101:6:54"},"nodeType":"YulFunctionCall","src":"8101:62:54"},"nodeType":"YulExpressionStatement","src":"8101:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8183:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8194:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8179:3:54"},"nodeType":"YulFunctionCall","src":"8179:18:54"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8199:6:54","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8172:6:54"},"nodeType":"YulFunctionCall","src":"8172:34:54"},"nodeType":"YulExpressionStatement","src":"8172:34:54"},{"nodeType":"YulAssignment","src":"8215:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8227:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8238:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8223:3:54"},"nodeType":"YulFunctionCall","src":"8223:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8215:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7999:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8013:4:54","type":""}],"src":"7848:400:54"},{"body":{"nodeType":"YulBlock","src":"8285:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8302:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8305:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8295:6:54"},"nodeType":"YulFunctionCall","src":"8295:88:54"},"nodeType":"YulExpressionStatement","src":"8295:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8399:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8402:4:54","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8392:6:54"},"nodeType":"YulFunctionCall","src":"8392:15:54"},"nodeType":"YulExpressionStatement","src":"8392:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8423:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8426:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8416:6:54"},"nodeType":"YulFunctionCall","src":"8416:15:54"},"nodeType":"YulExpressionStatement","src":"8416:15:54"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8253:184:54"},{"body":{"nodeType":"YulBlock","src":"8491:76:54","statements":[{"body":{"nodeType":"YulBlock","src":"8513:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8515:16:54"},"nodeType":"YulFunctionCall","src":"8515:18:54"},"nodeType":"YulExpressionStatement","src":"8515:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8507:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"8510:1:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8504:2:54"},"nodeType":"YulFunctionCall","src":"8504:8:54"},"nodeType":"YulIf","src":"8501:34:54"},{"nodeType":"YulAssignment","src":"8544:17:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8556:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"8559:1:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8552:3:54"},"nodeType":"YulFunctionCall","src":"8552:9:54"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8544:4:54"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8473:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"8476:1:54","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8482:4:54","type":""}],"src":"8442:125:54"},{"body":{"nodeType":"YulBlock","src":"8620:80:54","statements":[{"body":{"nodeType":"YulBlock","src":"8647:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8649:16:54"},"nodeType":"YulFunctionCall","src":"8649:18:54"},"nodeType":"YulExpressionStatement","src":"8649:18:54"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8636:1:54"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8643:1:54"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8639:3:54"},"nodeType":"YulFunctionCall","src":"8639:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8633:2:54"},"nodeType":"YulFunctionCall","src":"8633:13:54"},"nodeType":"YulIf","src":"8630:39:54"},{"nodeType":"YulAssignment","src":"8678:16:54","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8689:1:54"},{"name":"y","nodeType":"YulIdentifier","src":"8692:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8685:3:54"},"nodeType":"YulFunctionCall","src":"8685:9:54"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"8678:3:54"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8603:1:54","type":""},{"name":"y","nodeType":"YulTypedName","src":"8606:1:54","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"8612:3:54","type":""}],"src":"8572:128:54"},{"body":{"nodeType":"YulBlock","src":"8879:182:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8896:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8907:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8889:6:54"},"nodeType":"YulFunctionCall","src":"8889:21:54"},"nodeType":"YulExpressionStatement","src":"8889:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8930:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8941:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8926:3:54"},"nodeType":"YulFunctionCall","src":"8926:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"8946:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8919:6:54"},"nodeType":"YulFunctionCall","src":"8919:30:54"},"nodeType":"YulExpressionStatement","src":"8919:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8969:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"8980:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8965:3:54"},"nodeType":"YulFunctionCall","src":"8965:18:54"},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"8985:34:54","type":"","value":"ERC721: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8958:6:54"},"nodeType":"YulFunctionCall","src":"8958:62:54"},"nodeType":"YulExpressionStatement","src":"8958:62:54"},{"nodeType":"YulAssignment","src":"9029:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9041:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9052:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9037:3:54"},"nodeType":"YulFunctionCall","src":"9037:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9029:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8856:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8870:4:54","type":""}],"src":"8705:356:54"},{"body":{"nodeType":"YulBlock","src":"9240:178:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9257:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9268:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9250:6:54"},"nodeType":"YulFunctionCall","src":"9250:21:54"},"nodeType":"YulExpressionStatement","src":"9250:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9291:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9302:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9287:3:54"},"nodeType":"YulFunctionCall","src":"9287:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"9307:2:54","type":"","value":"28"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9280:6:54"},"nodeType":"YulFunctionCall","src":"9280:30:54"},"nodeType":"YulExpressionStatement","src":"9280:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9330:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9341:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9326:3:54"},"nodeType":"YulFunctionCall","src":"9326:18:54"},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","kind":"string","nodeType":"YulLiteral","src":"9346:30:54","type":"","value":"ERC721: token already minted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9319:6:54"},"nodeType":"YulFunctionCall","src":"9319:58:54"},"nodeType":"YulExpressionStatement","src":"9319:58:54"},{"nodeType":"YulAssignment","src":"9386:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9398:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9409:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9394:3:54"},"nodeType":"YulFunctionCall","src":"9394:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9386:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9217:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9231:4:54","type":""}],"src":"9066:352:54"},{"body":{"nodeType":"YulBlock","src":"9597:175:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9614:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9625:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9607:6:54"},"nodeType":"YulFunctionCall","src":"9607:21:54"},"nodeType":"YulExpressionStatement","src":"9607:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9648:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9659:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9644:3:54"},"nodeType":"YulFunctionCall","src":"9644:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"9664:2:54","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9637:6:54"},"nodeType":"YulFunctionCall","src":"9637:30:54"},"nodeType":"YulExpressionStatement","src":"9637:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9687:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9698:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9683:3:54"},"nodeType":"YulFunctionCall","src":"9683:18:54"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"9703:27:54","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9676:6:54"},"nodeType":"YulFunctionCall","src":"9676:55:54"},"nodeType":"YulExpressionStatement","src":"9676:55:54"},{"nodeType":"YulAssignment","src":"9740:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9752:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9763:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9748:3:54"},"nodeType":"YulFunctionCall","src":"9748:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9740:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9574:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9588:4:54","type":""}],"src":"9423:349:54"},{"body":{"nodeType":"YulBlock","src":"9951:240:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9968:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"9979:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9961:6:54"},"nodeType":"YulFunctionCall","src":"9961:21:54"},"nodeType":"YulExpressionStatement","src":"9961:21:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10002:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"10013:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9998:3:54"},"nodeType":"YulFunctionCall","src":"9998:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"10018:2:54","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9991:6:54"},"nodeType":"YulFunctionCall","src":"9991:30:54"},"nodeType":"YulExpressionStatement","src":"9991:30:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10041:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"10052:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10037:3:54"},"nodeType":"YulFunctionCall","src":"10037:18:54"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"10057:34:54","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10030:6:54"},"nodeType":"YulFunctionCall","src":"10030:62:54"},"nodeType":"YulExpressionStatement","src":"10030:62:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10112:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"10123:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10108:3:54"},"nodeType":"YulFunctionCall","src":"10108:18:54"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"10128:20:54","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10101:6:54"},"nodeType":"YulFunctionCall","src":"10101:48:54"},"nodeType":"YulExpressionStatement","src":"10101:48:54"},{"nodeType":"YulAssignment","src":"10158:27:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10170:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"10181:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10166:3:54"},"nodeType":"YulFunctionCall","src":"10166:19:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10158:4:54"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9928:9:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9942:4:54","type":""}],"src":"9777:414:54"},{"body":{"nodeType":"YulBlock","src":"10399:309:54","statements":[{"nodeType":"YulVariableDeclaration","src":"10409:52:54","value":{"kind":"number","nodeType":"YulLiteral","src":"10419:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10413:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10477:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10492:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"10500:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10488:3:54"},"nodeType":"YulFunctionCall","src":"10488:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10470:6:54"},"nodeType":"YulFunctionCall","src":"10470:34:54"},"nodeType":"YulExpressionStatement","src":"10470:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10524:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"10535:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10520:3:54"},"nodeType":"YulFunctionCall","src":"10520:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10544:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"10552:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10540:3:54"},"nodeType":"YulFunctionCall","src":"10540:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10513:6:54"},"nodeType":"YulFunctionCall","src":"10513:43:54"},"nodeType":"YulExpressionStatement","src":"10513:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10576:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"10587:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10572:3:54"},"nodeType":"YulFunctionCall","src":"10572:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"10592:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10565:6:54"},"nodeType":"YulFunctionCall","src":"10565:34:54"},"nodeType":"YulExpressionStatement","src":"10565:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10619:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"10630:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10615:3:54"},"nodeType":"YulFunctionCall","src":"10615:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"10635:3:54","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10608:6:54"},"nodeType":"YulFunctionCall","src":"10608:31:54"},"nodeType":"YulExpressionStatement","src":"10608:31:54"},{"nodeType":"YulAssignment","src":"10648:54:54","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"10674:6:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10686:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"10697:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10682:3:54"},"nodeType":"YulFunctionCall","src":"10682:19:54"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"10656:17:54"},"nodeType":"YulFunctionCall","src":"10656:46:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10648:4:54"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10344:9:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10355:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10363:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10371:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10379:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10390:4:54","type":""}],"src":"10196:512:54"},{"body":{"nodeType":"YulBlock","src":"10793:169:54","statements":[{"body":{"nodeType":"YulBlock","src":"10839:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10848:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10851:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10841:6:54"},"nodeType":"YulFunctionCall","src":"10841:12:54"},"nodeType":"YulExpressionStatement","src":"10841:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10814:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"10823:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10810:3:54"},"nodeType":"YulFunctionCall","src":"10810:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"10835:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10806:3:54"},"nodeType":"YulFunctionCall","src":"10806:32:54"},"nodeType":"YulIf","src":"10803:52:54"},{"nodeType":"YulVariableDeclaration","src":"10864:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10883:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10877:5:54"},"nodeType":"YulFunctionCall","src":"10877:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10868:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10926:5:54"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"10902:23:54"},"nodeType":"YulFunctionCall","src":"10902:30:54"},"nodeType":"YulExpressionStatement","src":"10902:30:54"},{"nodeType":"YulAssignment","src":"10941:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"10951:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10941:6:54"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10759:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10770:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10782:6:54","type":""}],"src":"10713:249:54"}]},"contents":"{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_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            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 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_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { 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        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\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_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value3 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 62)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r nor approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101ee578063b88d4fde14610201578063c87b56dd14610214578063e985e9c51461025a57600080fd5b80636352211e146101b257806370a08231146101c557806395d89b41146101e657600080fd5b8063095ea7b3116100c8578063095ea7b31461016457806323b872dd1461017957806340c10f191461018c57806342842e0e1461019f57600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd36600461116c565b6102a3565b60405190151581526020015b60405180910390f35b61011f610388565b60405161010e91906111fb565b61013f61013a36600461120e565b61041a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b610177610172366004611250565b61044e565b005b61017761018736600461127a565b6105ab565b61010261019a366004611250565b610632565b6101776101ad36600461127a565b610647565b61013f6101c036600461120e565b610662565b6101d86101d33660046112b6565b6106d4565b60405190815260200161010e565b61011f610788565b6101776101fc3660046112d1565b610797565b61017761020f36600461133c565b6107a6565b61011f61022236600461120e565b5060408051808201909152600881527f746f6b656e555249000000000000000000000000000000000000000000000000602082015290565b610102610268366004611436565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061033657507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061038257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461039790611469565b80601f01602080910402602001604051908101604052809291908181526020018280546103c390611469565b80156104105780601f106103e557610100808354040283529160200191610410565b820191906000526020600020905b8154815290600101906020018083116103f357829003601f168201915b5050505050905090565b600061042582610834565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061045982610662565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105015760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8216148061052a575061052a8133610268565b61059c5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104f8565b6105a683836108a8565b505050565b6105b53382610948565b6106275760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104f8565b6105a6838383610a08565b600061063e8383610c3b565b50600192915050565b6105a6838383604051806020016040528060008152506107a6565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806103825760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104f8565b600073ffffffffffffffffffffffffffffffffffffffff821661075f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016104f8565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461039790611469565b6107a2338383610dc9565b5050565b6107b03383610948565b6108225760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104f8565b61082e84848484610edc565b50505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff166108a55760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104f8565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061090282610662565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061095483610662565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806109c2575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610a0057508373ffffffffffffffffffffffffffffffffffffffff166109e88461041a565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610a2882610662565b73ffffffffffffffffffffffffffffffffffffffff1614610ab15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104f8565b73ffffffffffffffffffffffffffffffffffffffff8216610b395760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104f8565b610b446000826108a8565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610b7a9084906114eb565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610bb5908490611502565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff8216610c9e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104f8565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615610d105760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016104f8565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610d46908490611502565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e445760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104f8565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610ee7848484610a08565b610ef384848484610f65565b61082e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104f8565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611133576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610fdc90339089908890889060040161151a565b6020604051808303816000875af1925050508015611035575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261103291810190611563565b60015b6110e8573d808015611063576040519150601f19603f3d011682016040523d82523d6000602084013e611068565b606091505b5080516000036110e05760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104f8565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610a00565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146108a557600080fd5b60006020828403121561117e57600080fd5b81356111898161113e565b9392505050565b6000815180845260005b818110156111b65760208185018101518683018201520161119a565b818111156111c8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111896020830184611190565b60006020828403121561122057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461124b57600080fd5b919050565b6000806040838503121561126357600080fd5b61126c83611227565b946020939093013593505050565b60008060006060848603121561128f57600080fd5b61129884611227565b92506112a660208501611227565b9150604084013590509250925092565b6000602082840312156112c857600080fd5b61118982611227565b600080604083850312156112e457600080fd5b6112ed83611227565b91506020830135801515811461130257600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561135257600080fd5b61135b85611227565b935061136960208601611227565b925060408501359150606085013567ffffffffffffffff8082111561138d57600080fd5b818701915087601f8301126113a157600080fd5b8135818111156113b3576113b361130d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156113f9576113f961130d565b816040528281528a602084870101111561141257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561144957600080fd5b61145283611227565b915061146060208401611227565b90509250929050565b600181811c9082168061147d57607f821691505b6020821081036114b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114fd576114fd6114bc565b500390565b60008219821115611515576115156114bc565b500190565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526115596080830184611190565b9695505050505050565b60006020828403121561157557600080fd5b81516111898161113e56fea2646970667358221220ba2f7b2e08f576403bb74551bf3f93d32556fddb64509eff9013d539fbb7c8b964736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x18C JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x19F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11F PUSH2 0x388 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x11FB JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x120E JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x177 PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0x1250 JUMP JUMPDEST PUSH2 0x44E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x177 PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x127A JUMP JUMPDEST PUSH2 0x5AB JUMP JUMPDEST PUSH2 0x102 PUSH2 0x19A CALLDATASIZE PUSH1 0x4 PUSH2 0x1250 JUMP JUMPDEST PUSH2 0x632 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x127A JUMP JUMPDEST PUSH2 0x647 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x120E JUMP JUMPDEST PUSH2 0x662 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x6D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x11F PUSH2 0x788 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x12D1 JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x20F CALLDATASIZE PUSH1 0x4 PUSH2 0x133C JUMP JUMPDEST PUSH2 0x7A6 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x120E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP2 MSTORE PUSH32 0x746F6B656E555249000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x268 CALLDATASIZE PUSH1 0x4 PUSH2 0x1436 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x336 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x382 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x397 SWAP1 PUSH2 0x1469 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3C3 SWAP1 PUSH2 0x1469 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x410 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3E5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x410 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3F3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x425 DUP3 PUSH2 0x834 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x459 DUP3 PUSH2 0x662 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ DUP1 PUSH2 0x52A JUMPI POP PUSH2 0x52A DUP2 CALLER PUSH2 0x268 JUMP JUMPDEST PUSH2 0x59C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x5A6 DUP4 DUP4 PUSH2 0x8A8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5B5 CALLER DUP3 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x627 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x5A6 DUP4 DUP4 DUP4 PUSH2 0xA08 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63E DUP4 DUP4 PUSH2 0xC3B JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5A6 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x382 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x75F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x397 SWAP1 PUSH2 0x1469 JUMP JUMPDEST PUSH2 0x7A2 CALLER DUP4 DUP4 PUSH2 0xDC9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7B0 CALLER DUP4 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x822 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x82E DUP5 DUP5 DUP5 DUP5 PUSH2 0xEDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x902 DUP3 PUSH2 0x662 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x954 DUP4 PUSH2 0x662 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x9C2 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0xA00 JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9E8 DUP5 PUSH2 0x41A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA28 DUP3 PUSH2 0x662 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB39 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xB44 PUSH1 0x0 DUP3 PUSH2 0x8A8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xB7A SWAP1 DUP5 SWAP1 PUSH2 0x14EB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xBB5 SWAP1 DUP5 SWAP1 PUSH2 0x1502 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC9E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xD10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xD46 SWAP1 DUP5 SWAP1 PUSH2 0x1502 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP4 SWAP3 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xEE7 DUP5 DUP5 DUP5 PUSH2 0xA08 JUMP JUMPDEST PUSH2 0xEF3 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1133 JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xFDC SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x151A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1035 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1032 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1563 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x10E8 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1063 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 0x1068 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x10E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x4F8 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0xA00 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x117E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1189 DUP2 PUSH2 0x113E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11B6 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x119A JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11C8 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1189 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1190 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x124B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x126C DUP4 PUSH2 0x1227 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x128F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1298 DUP5 PUSH2 0x1227 JUMP JUMPDEST SWAP3 POP PUSH2 0x12A6 PUSH1 0x20 DUP6 ADD PUSH2 0x1227 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1189 DUP3 PUSH2 0x1227 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12ED DUP4 PUSH2 0x1227 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x135B DUP6 PUSH2 0x1227 JUMP JUMPDEST SWAP4 POP PUSH2 0x1369 PUSH1 0x20 DUP7 ADD PUSH2 0x1227 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x13B3 JUMPI PUSH2 0x13B3 PUSH2 0x130D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x13F9 JUMPI PUSH2 0x13F9 PUSH2 0x130D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1452 DUP4 PUSH2 0x1227 JUMP JUMPDEST SWAP2 POP PUSH2 0x1460 PUSH1 0x20 DUP5 ADD PUSH2 0x1227 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x147D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x14B6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x14FD JUMPI PUSH2 0x14FD PUSH2 0x14BC JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1515 JUMPI PUSH2 0x1515 PUSH2 0x14BC JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1559 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1190 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1189 DUP2 PUSH2 0x113E JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA 0x2F PUSH28 0x2E08F576403BB74551BF3F93D32556FDDB64509EFF9013D539FBB7C8 0xB9 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"168:292:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:4;;;;;;:::i;:::-;;:::i;:::-;;;611:14:54;;604:22;586:41;;574:2;559:18;1570:300:4;;;;;;;;2470:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;1760:42:54;1748:55;;;1730:74;;1718:2;1703:18;3935:167:4;1584:226:54;3467:407:4;;;;;;:::i;:::-;;:::i;:::-;;4612:327;;;;;;:::i;:::-;;:::i;225:121:49:-;;;;;;:::i;:::-;;:::i;5005:179:4:-;;;;;;:::i;:::-;;:::i;2190:218::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2945:25:54;;;2933:2;2918:18;1929:204:4;2799:177:54;2632:102:4;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5250:315::-;;;;;;:::i;:::-;;:::i;352:106:49:-;;;;;;:::i;:::-;-1:-1:-1;434:17:49;;;;;;;;;;;;;;;;;;352:106;4388:162:4;;;;;;:::i;:::-;4508:25;;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;1707:40;;;1722:25;1707:40;;:104;;-1:-1:-1;1763:48:4;;;1778:33;1763:48;1707:104;:156;;;-1:-1:-1;952:25:11;937:40;;;;1827:36:4;1688:175;1570:300;-1:-1:-1;;1570:300:4:o;2470:98::-;2524:13;2556:5;2549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:4;;;;:15;:24;;;;;;;;;3935:167::o;3467:407::-;3547:13;3563:23;3578:7;3563:14;:23::i;:::-;3547:39;;3610:5;3604:11;;:2;:11;;;3596:57;;;;-1:-1:-1;;;3596:57:4;;5633:2:54;3596:57:4;;;5615:21:54;5672:2;5652:18;;;5645:30;5711:34;5691:18;;;5684:62;5782:3;5762:18;;;5755:31;5803:19;;3596:57:4;;;;;;;;;719:10:9;3685:21:4;;;;;:62;;-1:-1:-1;3710:37:4;3727:5;719:10:9;4388:162:4;:::i;3710:37::-;3664:171;;;;-1:-1:-1;;;3664:171:4;;6035:2:54;3664:171:4;;;6017:21:54;6074:2;6054:18;;;6047:30;6113:34;6093:18;;;6086:62;6184:32;6164:18;;;6157:60;6234:19;;3664:171:4;5833:426:54;3664:171:4;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3537:337;3467:407;;:::o;4612:327::-;4801:41;719:10:9;4834:7:4;4801:18;:41::i;:::-;4793:100;;;;-1:-1:-1;;;4793:100:4;;6466:2:54;4793:100:4;;;6448:21:54;6505:2;6485:18;;;6478:30;6544:34;6524:18;;;6517:62;6615:16;6595:18;;;6588:44;6649:19;;4793:100:4;6264:410:54;4793:100:4;4904:28;4914:4;4920:2;4924:7;4904:9;:28::i;225:121:49:-;284:4;300:18;306:2;310:7;300:5;:18::i;:::-;-1:-1:-1;335:4:49;225:121;;;;:::o;5005:179:4:-;5138:39;5155:4;5161:2;5165:7;5138:39;;;;;;;;;;;;:16;:39::i;2190:218::-;2262:7;2297:16;;;:7;:16;;;;;;;;;2323:56;;;;-1:-1:-1;;;2323:56:4;;6881:2:54;2323:56:4;;;6863:21:54;6920:2;6900:18;;;6893:30;6959:26;6939:18;;;6932:54;7003:18;;2323:56:4;6679:348:54;1929:204:4;2001:7;2028:19;;;2020:73;;;;-1:-1:-1;;;2020:73:4;;7234:2:54;2020:73:4;;;7216:21:54;7273:2;7253:18;;;7246:30;7312:34;7292:18;;;7285:62;7383:11;7363:18;;;7356:39;7412:19;;2020:73:4;7032:405:54;2020:73:4;-1:-1:-1;2110:16:4;;;;;;:9;:16;;;;;;;1929:204::o;2632:102::-;2688:13;2720:7;2713:14;;;;;:::i;4169:153::-;4263:52;719:10:9;4296:8:4;4306;4263:18;:52::i;:::-;4169:153;;:::o;5250:315::-;5418:41;719:10:9;5451:7:4;5418:18;:41::i;:::-;5410:100;;;;-1:-1:-1;;;5410:100:4;;6466:2:54;5410:100:4;;;6448:21:54;6505:2;6485:18;;;6478:30;6544:34;6524:18;;;6517:62;6615:16;6595:18;;;6588:44;6649:19;;5410:100:4;6264:410:54;5410:100:4;5520:38;5534:4;5540:2;5544:7;5553:4;5520:13;:38::i;:::-;5250:315;;;;:::o;11657:133::-;7099:4;7122:16;;;:7;:16;;;;;;:30;:16;11730:53;;;;-1:-1:-1;;;11730:53:4;;6881:2:54;11730:53:4;;;6863:21:54;6920:2;6900:18;;;6893:30;6959:26;6939:18;;;6932:54;7003:18;;11730:53:4;6679:348:54;11730:53:4;11657:133;:::o;10959:171::-;11033:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;11086:23;11033:24;11086:14;:23::i;:::-;11077:46;;;;;;;;;;;;10959:171;;:::o;7317:261::-;7410:4;7426:13;7442:23;7457:7;7442:14;:23::i;:::-;7426:39;;7494:5;7483:16;;:7;:16;;;:52;;;-1:-1:-1;4508:25:4;;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7503:32;7483:87;;;;7563:7;7539:31;;:20;7551:7;7539:11;:20::i;:::-;:31;;;7483:87;7475:96;7317:261;-1:-1:-1;;;;7317:261:4:o;10242:605::-;10396:4;10369:31;;:23;10384:7;10369:14;:23::i;:::-;:31;;;10361:81;;;;-1:-1:-1;;;10361:81:4;;7644:2:54;10361:81:4;;;7626:21:54;7683:2;7663:18;;;7656:30;7722:34;7702:18;;;7695:62;7793:7;7773:18;;;7766:35;7818:19;;10361:81:4;7442:401:54;10361:81:4;10460:16;;;10452:65;;;;-1:-1:-1;;;10452:65:4;;8050:2:54;10452:65:4;;;8032:21:54;8089:2;8069:18;;;8062:30;8128:34;8108:18;;;8101:62;8199:6;8179:18;;;8172:34;8223:19;;10452:65:4;7848:400:54;10452:65:4;10629:29;10646:1;10650:7;10629:8;:29::i;:::-;10669:15;;;;;;;:9;:15;;;;;:20;;10688:1;;10669:15;:20;;10688:1;;10669:20;:::i;:::-;;;;-1:-1:-1;;10699:13:4;;;;;;;:9;:13;;;;;:18;;10716:1;;10699:13;:18;;10716:1;;10699:18;:::i;:::-;;;;-1:-1:-1;;10727:16:4;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;;10764:27;;10727:16;;10764:27;;;;;;;3537:337;3467:407;;:::o;8868:427::-;8947:16;;;8939:61;;;;-1:-1:-1;;;8939:61:4;;8907:2:54;8939:61:4;;;8889:21:54;;;8926:18;;;8919:30;8985:34;8965:18;;;8958:62;9037:18;;8939:61:4;8705:356:54;8939:61:4;7099:4;7122:16;;;:7;:16;;;;;;:30;:16;:30;9010:58;;;;-1:-1:-1;;;9010:58:4;;9268:2:54;9010:58:4;;;9250:21:54;9307:2;9287:18;;;9280:30;9346;9326:18;;;9319:58;9394:18;;9010:58:4;9066:352:54;9010:58:4;9135:13;;;;;;;:9;:13;;;;;:18;;9152:1;;9135:13;:18;;9152:1;;9135:18;:::i;:::-;;;;-1:-1:-1;;9163:16:4;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;9200:33;;9163:16;;;9200:33;;9163:16;;9200:33;4169:153;;:::o;11266:307::-;11416:8;11407:17;;:5;:17;;;11399:55;;;;-1:-1:-1;;;11399:55:4;;9625:2:54;11399:55:4;;;9607:21:54;9664:2;9644:18;;;9637:30;9703:27;9683:18;;;9676:55;9748:18;;11399:55:4;9423:349:54;11399:55:4;11464:25;;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;;;;;;;;;;;;11525:41;;586::54;;;11525::4;;559:18:54;11525:41:4;;;;;;;11266:307;;;:::o;6426:305::-;6576:28;6586:4;6592:2;6596:7;6576:9;:28::i;:::-;6622:47;6645:4;6651:2;6655:7;6664:4;6622:22;:47::i;:::-;6614:110;;;;-1:-1:-1;;;6614:110:4;;9979:2:54;6614:110:4;;;9961:21:54;10018:2;9998:18;;;9991:30;10057:34;10037:18;;;10030:62;10128:20;10108:18;;;10101:48;10166:19;;6614:110:4;9777:414:54;12342:831:4;12491:4;12511:13;;;1465:19:8;:23;12507:660:4;;12546:71;;;;;:36;;;;;;:71;;719:10:9;;12597:4:4;;12603:7;;12612:4;;12546:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12546:71:4;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12542:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:6;:13;12801:1;12784:18;12780:321;;12826:60;;-1:-1:-1;;;12826:60:4;;9979:2:54;12826:60:4;;;9961:21:54;10018:2;9998:18;;;9991:30;10057:34;10037:18;;;10030:62;10128:20;10108:18;;;10101:48;10166:19;;12826:60:4;9777:414:54;12780:321:4;13053:6;13047:13;13038:6;13034:2;13030:15;13023:38;12542:573;12667:51;;12677:41;12667:51;;-1:-1:-1;12660:58:4;;12507:660;-1:-1:-1;13152:4:4;12342:831;;;;;;:::o;14:177:54:-;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;:::-;430:5;196:245;-1:-1:-1;;;196:245:54:o;638:531::-;680:3;718:5;712:12;745:6;740:3;733:19;770:1;780:162;794:6;791:1;788:13;780:162;;;856:4;912:13;;;908:22;;902:29;884:11;;;880:20;;873:59;809:12;780:162;;;960:6;957:1;954:13;951:87;;;1026:1;1019:4;1010:6;1005:3;1001:16;997:27;990:38;951:87;-1:-1:-1;1083:2:54;1071:15;1088:66;1067:88;1058:98;;;;1158:4;1054:109;;638:531;-1:-1:-1;;638:531:54:o;1174:220::-;1323:2;1312:9;1305:21;1286:4;1343:45;1384:2;1373:9;1369:18;1361:6;1343:45;:::i;1399:180::-;1458:6;1511:2;1499:9;1490:7;1486:23;1482:32;1479:52;;;1527:1;1524;1517:12;1479:52;-1:-1:-1;1550:23:54;;1399:180;-1:-1:-1;1399:180:54:o;1815:196::-;1883:20;;1943:42;1932:54;;1922:65;;1912:93;;2001:1;1998;1991:12;1912:93;1815:196;;;:::o;2016:254::-;2084:6;2092;2145:2;2133:9;2124:7;2120:23;2116:32;2113:52;;;2161:1;2158;2151:12;2113:52;2184:29;2203:9;2184:29;:::i;:::-;2174:39;2260:2;2245:18;;;;2232:32;;-1:-1:-1;;;2016:254:54:o;2275:328::-;2352:6;2360;2368;2421:2;2409:9;2400:7;2396:23;2392:32;2389:52;;;2437:1;2434;2427:12;2389:52;2460:29;2479:9;2460:29;:::i;:::-;2450:39;;2508:38;2542:2;2531:9;2527:18;2508:38;:::i;:::-;2498:48;;2593:2;2582:9;2578:18;2565:32;2555:42;;2275:328;;;;;:::o;2608:186::-;2667:6;2720:2;2708:9;2699:7;2695:23;2691:32;2688:52;;;2736:1;2733;2726:12;2688:52;2759:29;2778:9;2759:29;:::i;2981:347::-;3046:6;3054;3107:2;3095:9;3086:7;3082:23;3078:32;3075:52;;;3123:1;3120;3113:12;3075:52;3146:29;3165:9;3146:29;:::i;:::-;3136:39;;3225:2;3214:9;3210:18;3197:32;3272:5;3265:13;3258:21;3251:5;3248:32;3238:60;;3294:1;3291;3284:12;3238:60;3317:5;3307:15;;;2981:347;;;;;:::o;3333:184::-;3385:77;3382:1;3375:88;3482:4;3479:1;3472:15;3506:4;3503:1;3496:15;3522:1197;3617:6;3625;3633;3641;3694:3;3682:9;3673:7;3669:23;3665:33;3662:53;;;3711:1;3708;3701:12;3662:53;3734:29;3753:9;3734:29;:::i;:::-;3724:39;;3782:38;3816:2;3805:9;3801:18;3782:38;:::i;:::-;3772:48;;3867:2;3856:9;3852:18;3839:32;3829:42;;3922:2;3911:9;3907:18;3894:32;3945:18;3986:2;3978:6;3975:14;3972:34;;;4002:1;3999;3992:12;3972:34;4040:6;4029:9;4025:22;4015:32;;4085:7;4078:4;4074:2;4070:13;4066:27;4056:55;;4107:1;4104;4097:12;4056:55;4143:2;4130:16;4165:2;4161;4158:10;4155:36;;;4171:18;;:::i;:::-;4305:2;4299:9;4367:4;4359:13;;4210:66;4355:22;;;4379:2;4351:31;4347:40;4335:53;;;4403:18;;;4423:22;;;4400:46;4397:72;;;4449:18;;:::i;:::-;4489:10;4485:2;4478:22;4524:2;4516:6;4509:18;4564:7;4559:2;4554;4550;4546:11;4542:20;4539:33;4536:53;;;4585:1;4582;4575:12;4536:53;4641:2;4636;4632;4628:11;4623:2;4615:6;4611:15;4598:46;4686:1;4681:2;4676;4668:6;4664:15;4660:24;4653:35;4707:6;4697:16;;;;;;;3522:1197;;;;;;;:::o;4724:260::-;4792:6;4800;4853:2;4841:9;4832:7;4828:23;4824:32;4821:52;;;4869:1;4866;4859:12;4821:52;4892:29;4911:9;4892:29;:::i;:::-;4882:39;;4940:38;4974:2;4963:9;4959:18;4940:38;:::i;:::-;4930:48;;4724:260;;;;;:::o;4989:437::-;5068:1;5064:12;;;;5111;;;5132:61;;5186:4;5178:6;5174:17;5164:27;;5132:61;5239:2;5231:6;5228:14;5208:18;5205:38;5202:218;;5276:77;5273:1;5266:88;5377:4;5374:1;5367:15;5405:4;5402:1;5395:15;5202:218;;4989:437;;;:::o;8253:184::-;8305:77;8302:1;8295:88;8402:4;8399:1;8392:15;8426:4;8423:1;8416:15;8442:125;8482:4;8510:1;8507;8504:8;8501:34;;;8515:18;;:::i;:::-;-1:-1:-1;8552:9:54;;8442:125::o;8572:128::-;8612:3;8643:1;8639:6;8636:1;8633:13;8630:39;;;8649:18;;:::i;:::-;-1:-1:-1;8685:9:54;;8572:128::o;10196:512::-;10390:4;10419:42;10500:2;10492:6;10488:15;10477:9;10470:34;10552:2;10544:6;10540:15;10535:2;10524:9;10520:18;10513:43;;10592:6;10587:2;10576:9;10572:18;10565:34;10635:3;10630:2;10619:9;10615:18;10608:31;10656:46;10697:3;10686:9;10682:19;10674:6;10656:46;:::i;:::-;10648:54;10196:512;-1:-1:-1;;;;;;10196:512:54:o;10713:249::-;10782:6;10835:2;10823:9;10814:7;10810:23;10806:32;10803:52;;;10851:1;10848;10841:12;10803:52;10883:9;10877:16;10902:30;10926:5;10902:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"1111600","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2598","getApproved(uint256)":"4756","isApprovedForAll(address,address)":"infinite","mint(address,uint256)":"53277","name()":"infinite","ownerOf(uint256)":"2543","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26654","supportsInterface(bytes4)":"456","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint(address,uint256)":"40c10f19","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"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\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestERC721.sol\":\"TestERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n    using Address for address;\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to owner address\\n    mapping(uint256 => address) private _owners;\\n\\n    // Mapping owner address to token count\\n    mapping(address => uint256) private _balances;\\n\\n    // Mapping from token ID to approved address\\n    mapping(uint256 => address) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n        address owner = _owners[tokenId];\\n        require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n        return owner;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireMinted(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual override {\\n        address owner = ERC721.ownerOf(tokenId);\\n        require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n        require(\\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n            \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n        );\\n\\n        _approve(to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n        _requireMinted(tokenId);\\n\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        //solhint-disable-next-line max-line-length\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n        _transfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public virtual override {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public virtual override {\\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n        _safeTransfer(from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _transfer(from, to, tokenId);\\n        require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted (`_mint`),\\n     * and stop existing when they are burned (`_burn`).\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return _owners[tokenId] != address(0);\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        address owner = ERC721.ownerOf(tokenId);\\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Safely mints `tokenId` and transfers it to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal virtual {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal virtual {\\n        _mint(to, tokenId);\\n        require(\\n            _checkOnERC721Received(address(0), to, tokenId, data),\\n            \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n        );\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal virtual {\\n        require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n        require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n        _beforeTokenTransfer(address(0), to, tokenId);\\n\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(address(0), to, tokenId);\\n\\n        _afterTokenTransfer(address(0), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        address owner = ERC721.ownerOf(tokenId);\\n\\n        _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n        // Clear approvals\\n        _approve(address(0), tokenId);\\n\\n        _balances[owner] -= 1;\\n        delete _owners[tokenId];\\n\\n        emit Transfer(owner, address(0), tokenId);\\n\\n        _afterTokenTransfer(owner, address(0), tokenId);\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {\\n        require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n        require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(from, to, tokenId);\\n\\n        // Clear approvals from the previous owner\\n        _approve(address(0), tokenId);\\n\\n        _balances[from] -= 1;\\n        _balances[to] += 1;\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        _afterTokenTransfer(from, to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function _approve(address to, uint256 tokenId) internal virtual {\\n        _tokenApprovals[tokenId] = to;\\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(\\n        address owner,\\n        address operator,\\n        bool approved\\n    ) internal virtual {\\n        require(owner != operator, \\\"ERC721: approve to caller\\\");\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` has not been minted yet.\\n     */\\n    function _requireMinted(uint256 tokenId) internal view virtual {\\n        require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n    }\\n\\n    /**\\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n     * The call is not executed if the target address is not a contract.\\n     *\\n     * @param from address representing the previous owner of the given token ID\\n     * @param to target address that will receive the tokens\\n     * @param tokenId uint256 ID of the token to be transferred\\n     * @param data bytes optional data to send along with the call\\n     * @return bool whether the call correctly returned the expected magic value\\n     */\\n    function _checkOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) private returns (bool) {\\n        if (to.isContract()) {\\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n                return retval == IERC721Receiver.onERC721Received.selector;\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n                } else {\\n                    /// @solidity memory-safe-assembly\\n                    assembly {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        } else {\\n            return true;\\n        }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any token transfer. This includes minting\\n     * and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC721 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 {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\\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(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) 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 caller.\\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\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n}\\n\",\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/test/TestERC721.sol\":{\"content\":\"// SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.7;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/ERC721.sol\\\";\\n\\n// Used for minting test ERC721s in our tests\\ncontract TestERC721 is ERC721(\\\"Test721\\\", \\\"TST721\\\") {\\n    function mint(address to, uint256 tokenId) public returns (bool) {\\n        _mint(to, tokenId);\\n        return true;\\n    }\\n\\n    function tokenURI(uint256) public pure override returns (string memory) {\\n        return \\\"tokenURI\\\";\\n    }\\n}\\n\",\"keccak256\":\"0x9dda54fdda163a207860aad271ec00471788b5af6805e950cd7440448f0c0f09\",\"license\":\"Unlicense\"}},\"version\":1}","storageLayout":{"storage":[{"astId":827,"contract":"contracts/test/TestERC721.sol:TestERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":829,"contract":"contracts/test/TestERC721.sol:TestERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":833,"contract":"contracts/test/TestERC721.sol:TestERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":837,"contract":"contracts/test/TestERC721.sol:TestERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":841,"contract":"contracts/test/TestERC721.sol:TestERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":847,"contract":"contracts/test/TestERC721.sol:TestERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"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_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"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_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"erc721a/contracts/ERC721A.sol":{"ERC721A":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","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":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":"payable","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":"payable","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721) Non-Fungible Token Standard, including the Metadata extension. Optimized for lower gas during batch mints. Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...) starting from `_startTokenId()`. Assumptions: - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply. - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).","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}."},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Equivalent to `safeTransferFrom(from, to, tokenId, '')`."},"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 caller. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) to learn more about how these ids are created. This function call must use less than 30000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"totalSupply()":{"details":"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` from `from` to `to`. 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."}},"title":"ERC721A","version":1},"evm":{"bytecode":{"functionDebugData":{"@_8658":{"entryPoint":null,"id":8658,"parameterSlots":2,"returnSlots":0},"@_startTokenId_8667":{"entryPoint":null,"id":8667,"parameterSlots":0,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":296,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":479,"id":null,"parameterSlots":2,"returnSlots":2},"extract_byte_array_length":{"entryPoint":585,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x41":{"entryPoint":274,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1985:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:54"},"nodeType":"YulFunctionCall","src":"66:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:54"},"nodeType":"YulFunctionCall","src":"56:31:54"},"nodeType":"YulExpressionStatement","src":"56:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:54"},"nodeType":"YulFunctionCall","src":"96:15:54"},"nodeType":"YulExpressionStatement","src":"96:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:54"},"nodeType":"YulFunctionCall","src":"120:15:54"},"nodeType":"YulExpressionStatement","src":"120:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:54"},{"body":{"nodeType":"YulBlock","src":"210:821:54","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:54"},"nodeType":"YulFunctionCall","src":"261:12:54"},"nodeType":"YulExpressionStatement","src":"261:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:54"},"nodeType":"YulFunctionCall","src":"234:17:54"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:54"},"nodeType":"YulFunctionCall","src":"230:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:54"},"nodeType":"YulFunctionCall","src":"223:35:54"},"nodeType":"YulIf","src":"220:55:54"},{"nodeType":"YulVariableDeclaration","src":"284:23:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:54"},"nodeType":"YulFunctionCall","src":"294:13:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:54","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:54","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:54"},"nodeType":"YulFunctionCall","src":"330:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:54"},"nodeType":"YulFunctionCall","src":"326:18:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:54"},"nodeType":"YulFunctionCall","src":"369:18:54"},"nodeType":"YulExpressionStatement","src":"369:18:54"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:54"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:54"},"nodeType":"YulFunctionCall","src":"356:10:54"},"nodeType":"YulIf","src":"353:36:54"},{"nodeType":"YulVariableDeclaration","src":"398:17:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:54","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:54"},"nodeType":"YulFunctionCall","src":"408:7:54"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:54"},"nodeType":"YulFunctionCall","src":"438:9:54"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:54"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:54"},"nodeType":"YulFunctionCall","src":"498:13:54"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:54"},"nodeType":"YulFunctionCall","src":"494:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:54","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:54"},"nodeType":"YulFunctionCall","src":"490:31:54"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:54"},"nodeType":"YulFunctionCall","src":"486:40:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:54"},"nodeType":"YulFunctionCall","src":"474:53:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:54"},"nodeType":"YulFunctionCall","src":"588:18:54"},"nodeType":"YulExpressionStatement","src":"588:18:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:54"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:54"},"nodeType":"YulFunctionCall","src":"542:18:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:54"},"nodeType":"YulFunctionCall","src":"562:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:54"},"nodeType":"YulFunctionCall","src":"539:46:54"},"nodeType":"YulIf","src":"536:72:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:54"},"nodeType":"YulFunctionCall","src":"617:22:54"},"nodeType":"YulExpressionStatement","src":"617:22:54"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:54"},"nodeType":"YulFunctionCall","src":"648:18:54"},"nodeType":"YulExpressionStatement","src":"648:18:54"},{"nodeType":"YulVariableDeclaration","src":"675:14:54","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:54","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:54"},"nodeType":"YulFunctionCall","src":"737:12:54"},"nodeType":"YulExpressionStatement","src":"737:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:54"},"nodeType":"YulFunctionCall","src":"708:15:54"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:54"},"nodeType":"YulFunctionCall","src":"704:24:54"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:54"},"nodeType":"YulFunctionCall","src":"701:33:54"},"nodeType":"YulIf","src":"698:53:54"},{"nodeType":"YulVariableDeclaration","src":"760:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:54"},"nodeType":"YulFunctionCall","src":"850:14:54"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:54"},"nodeType":"YulFunctionCall","src":"846:23:54"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:54"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:54"},"nodeType":"YulFunctionCall","src":"881:14:54"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:54"},"nodeType":"YulFunctionCall","src":"877:23:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:54"},"nodeType":"YulFunctionCall","src":"871:30:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:54"},"nodeType":"YulFunctionCall","src":"839:63:54"},"nodeType":"YulExpressionStatement","src":"839:63:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:54"},"nodeType":"YulFunctionCall","src":"787:9:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:54","statements":[{"nodeType":"YulAssignment","src":"799:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:54"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:54"},"nodeType":"YulFunctionCall","src":"804:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:54","statements":[]},"src":"779:133:54"},{"body":{"nodeType":"YulBlock","src":"942:59:54","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"971:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:54"},"nodeType":"YulFunctionCall","src":"967:15:54"},{"name":"_4","nodeType":"YulIdentifier","src":"984:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"963:3:54"},"nodeType":"YulFunctionCall","src":"963:24:54"},{"kind":"number","nodeType":"YulLiteral","src":"989:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"956:6:54"},"nodeType":"YulFunctionCall","src":"956:35:54"},"nodeType":"YulExpressionStatement","src":"956:35:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"927:1:54"},{"name":"_1","nodeType":"YulIdentifier","src":"930:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"924:2:54"},"nodeType":"YulFunctionCall","src":"924:9:54"},"nodeType":"YulIf","src":"921:80:54"},{"nodeType":"YulAssignment","src":"1010:15:54","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1019:6:54"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1010:5:54"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:54","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:54","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:54","type":""}],"src":"146:885:54"},{"body":{"nodeType":"YulBlock","src":"1154:444:54","statements":[{"body":{"nodeType":"YulBlock","src":"1200:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1209:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1212:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1202:6:54"},"nodeType":"YulFunctionCall","src":"1202:12:54"},"nodeType":"YulExpressionStatement","src":"1202:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1175:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1184:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1171:3:54"},"nodeType":"YulFunctionCall","src":"1171:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1196:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1167:3:54"},"nodeType":"YulFunctionCall","src":"1167:32:54"},"nodeType":"YulIf","src":"1164:52:54"},{"nodeType":"YulVariableDeclaration","src":"1225:30:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1245:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1239:5:54"},"nodeType":"YulFunctionCall","src":"1239:16:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1229:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1264:28:54","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1282:2:54","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:54","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1278:3:54"},"nodeType":"YulFunctionCall","src":"1278:10:54"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:54","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1274:3:54"},"nodeType":"YulFunctionCall","src":"1274:18:54"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1268:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1319:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1328:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1331:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1321:6:54"},"nodeType":"YulFunctionCall","src":"1321:12:54"},"nodeType":"YulExpressionStatement","src":"1321:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1307:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"1315:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1304:2:54"},"nodeType":"YulFunctionCall","src":"1304:14:54"},"nodeType":"YulIf","src":"1301:34:54"},{"nodeType":"YulAssignment","src":"1344:71:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1387:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"1398:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1383:3:54"},"nodeType":"YulFunctionCall","src":"1383:22:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1407:7:54"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1354:28:54"},"nodeType":"YulFunctionCall","src":"1354:61:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1344:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"1424:41:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1450:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1461:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1446:3:54"},"nodeType":"YulFunctionCall","src":"1446:18:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1440:5:54"},"nodeType":"YulFunctionCall","src":"1440:25:54"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1428:8:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1494:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1503:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1506:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1496:6:54"},"nodeType":"YulFunctionCall","src":"1496:12:54"},"nodeType":"YulExpressionStatement","src":"1496:12:54"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1480:8:54"},{"name":"_1","nodeType":"YulIdentifier","src":"1490:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1477:2:54"},"nodeType":"YulFunctionCall","src":"1477:16:54"},"nodeType":"YulIf","src":"1474:36:54"},{"nodeType":"YulAssignment","src":"1519:73:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1562:9:54"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1573:8:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1558:3:54"},"nodeType":"YulFunctionCall","src":"1558:24:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1584:7:54"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1529:28:54"},"nodeType":"YulFunctionCall","src":"1529:63:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1519:6:54"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1112:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1123:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1135:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1143:6:54","type":""}],"src":"1036:562:54"},{"body":{"nodeType":"YulBlock","src":"1658:325:54","statements":[{"nodeType":"YulAssignment","src":"1668:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1682:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1685:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1678:3:54"},"nodeType":"YulFunctionCall","src":"1678:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1668:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"1699:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1729:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"1735:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1725:3:54"},"nodeType":"YulFunctionCall","src":"1725:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1703:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"1776:31:54","statements":[{"nodeType":"YulAssignment","src":"1778:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1792:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1800:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1788:3:54"},"nodeType":"YulFunctionCall","src":"1788:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1778:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1756:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1749:6:54"},"nodeType":"YulFunctionCall","src":"1749:26:54"},"nodeType":"YulIf","src":"1746:61:54"},{"body":{"nodeType":"YulBlock","src":"1866:111:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1887:1:54","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1894:3:54","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1899:10:54","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1890:3:54"},"nodeType":"YulFunctionCall","src":"1890:20:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1880:6:54"},"nodeType":"YulFunctionCall","src":"1880:31:54"},"nodeType":"YulExpressionStatement","src":"1880:31:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1931:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1934:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1924:6:54"},"nodeType":"YulFunctionCall","src":"1924:15:54"},"nodeType":"YulExpressionStatement","src":"1924:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1959:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1962:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1952:6:54"},"nodeType":"YulFunctionCall","src":"1952:15:54"},"nodeType":"YulExpressionStatement","src":"1952:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1822:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1845:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1853:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1842:2:54"},"nodeType":"YulFunctionCall","src":"1842:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1819:2:54"},"nodeType":"YulFunctionCall","src":"1819:38:54"},"nodeType":"YulIf","src":"1816:161:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1638:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1647:6:54","type":""}],"src":"1603:380:54"}]},"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 abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        if gt(i, _1)\n        {\n            mstore(add(add(memPtr, _1), _4), 0)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162001459380380620014598339810160408190526200003491620001df565b8151620000499060029060208501906200006c565b5080516200005f9060039060208401906200006c565b5050600080555062000285565b8280546200007a9062000249565b90600052602060002090601f0160209004810192826200009e5760008555620000e9565b82601f10620000b957805160ff1916838001178555620000e9565b82800160010185558215620000e9579182015b82811115620000e9578251825591602001919060010190620000cc565b50620000f7929150620000fb565b5090565b5b80821115620000f75760008155600101620000fc565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013a57600080fd5b81516001600160401b038082111562000157576200015762000112565b604051601f8301601f19908116603f0116810190828211818310171562000182576200018262000112565b816040528381526020925086838588010111156200019f57600080fd5b600091505b83821015620001c35785820183015181830184015290820190620001a4565b83821115620001d55760008385830101525b9695505050505050565b60008060408385031215620001f357600080fd5b82516001600160401b03808211156200020b57600080fd5b620002198683870162000128565b935060208501519150808211156200023057600080fd5b506200023f8582860162000128565b9150509250929050565b600181811c908216806200025e57607f821691505b6020821081036200027f57634e487b7160e01b600052602260045260246000fd5b50919050565b6111c480620002956000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610231578063b88d4fde14610251578063c87b56dd14610264578063e985e9c51461028457600080fd5b80636352211e146101dc57806370a08231146101fc57806395d89b411461021c57600080fd5b8063095ea7b3116100bb578063095ea7b31461017e57806318160ddd1461019357806323b872dd146101b657806342842e0e146101c957600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610da5565b6102da565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103bf565b60405161010e9190610e38565b34801561014557600080fd5b50610159610154366004610e4b565b610451565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b61019161018c366004610e8d565b6104bb565b005b34801561019f57600080fd5b50600154600054035b60405190815260200161010e565b6101916101c4366004610eb7565b6105a6565b6101916101d7366004610eb7565b610835565b3480156101e857600080fd5b506101596101f7366004610e4b565b610855565b34801561020857600080fd5b506101a8610217366004610ef3565b610860565b34801561022857600080fd5b5061012c6108e2565b34801561023d57600080fd5b5061019161024c366004610f0e565b6108f1565b61019161025f366004610f79565b610988565b34801561027057600080fd5b5061012c61027f366004610e4b565b6109f8565b34801561029057600080fd5b5061010261029f366004611073565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061036d57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103b957507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600280546103ce906110a6565b80601f01602080910402602001604051908101604052809291908181526020018280546103fa906110a6565b80156104475780601f1061041c57610100808354040283529160200191610447565b820191906000526020600020905b81548152906001019060200180831161042a57829003601f168201915b5050505050905090565b600061045c82610aa2565b610492576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104c682610855565b90503373ffffffffffffffffffffffffffffffffffffffff821614610525576104ef813361029f565b610525576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006105b182610ae2565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610618576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff88169091141761068b57610655863361029f565b61068b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166106d8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156106e357600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000841690036107d2576001840160008181526004602052604081205490036107d05760005481146107d05760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b61085083838360405180602001604052806000815250610988565b505050565b60006103b982610ae2565b600073ffffffffffffffffffffffffffffffffffffffff82166108af576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b6060600380546103ce906110a6565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109938484846105a6565b73ffffffffffffffffffffffffffffffffffffffff83163b156109f2576109bc84848484610b99565b6109f2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060610a0382610aa2565b610a39576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a5060408051602081019091526000815290565b90508051600003610a705760405180602001604052806000815250610a9b565b80610a7a84610d12565b604051602001610a8b9291906110f9565b6040516020818303038152906040525b9392505050565b60008054821080156103b95750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b600081600054811015610b6757600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003610b65575b80600003610a9b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600081815260046020526040902054610b26565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610bf4903390899088908890600401611128565b6020604051808303816000875af1925050508015610c4d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610c4a91810190611171565b60015b610cc4573d808015610c7b576040519150601f19603f3d011682016040523d82523d6000602084013e610c80565b606091505b508051600003610cbc576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480610d2c57508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610da257600080fd5b50565b600060208284031215610db757600080fd5b8135610a9b81610d74565b60005b83811015610ddd578181015183820152602001610dc5565b838111156109f25750506000910152565b60008151808452610e06816020860160208601610dc2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a9b6020830184610dee565b600060208284031215610e5d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e8857600080fd5b919050565b60008060408385031215610ea057600080fd5b610ea983610e64565b946020939093013593505050565b600080600060608486031215610ecc57600080fd5b610ed584610e64565b9250610ee360208501610e64565b9150604084013590509250925092565b600060208284031215610f0557600080fd5b610a9b82610e64565b60008060408385031215610f2157600080fd5b610f2a83610e64565b915060208301358015158114610f3f57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215610f8f57600080fd5b610f9885610e64565b9350610fa660208601610e64565b925060408501359150606085013567ffffffffffffffff80821115610fca57600080fd5b818701915087601f830112610fde57600080fd5b813581811115610ff057610ff0610f4a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561103657611036610f4a565b816040528281528a602084870101111561104f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561108657600080fd5b61108f83610e64565b915061109d60208401610e64565b90509250929050565b600181811c908216806110ba57607f821691505b6020821081036110f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161110b818460208801610dc2565b83519083019061111f818360208801610dc2565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526111676080830184610dee565b9695505050505050565b60006020828403121561118357600080fd5b8151610a9b81610d7456fea26469706673582212202f46705f580e102fffbbd57983a2a2c196a1206e6878546eda52c2657b8b593164736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1459 CODESIZE SUB DUP1 PUSH3 0x1459 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1DF JUMP JUMPDEST DUP2 MLOAD PUSH3 0x49 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x6C JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x5F SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x6C JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 SSTORE POP PUSH3 0x285 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x7A SWAP1 PUSH3 0x249 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x9E JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xE9 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xB9 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xE9 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xE9 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xE9 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xCC JUMP JUMPDEST POP PUSH3 0xF7 SWAP3 SWAP2 POP PUSH3 0xFB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xF7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0xFC JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x157 JUMPI PUSH3 0x157 PUSH3 0x112 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x182 JUMPI PUSH3 0x182 PUSH3 0x112 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x19F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x1C3 JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x1A4 JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x1D5 JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x219 DUP7 DUP4 DUP8 ADD PUSH3 0x128 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x23F DUP6 DUP3 DUP7 ADD PUSH3 0x128 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x25E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x27F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x11C4 DUP1 PUSH3 0x295 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0x2DA 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 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x3BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x154 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4B JUMP JUMPDEST PUSH2 0x451 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x18C CALLDATASIZE PUSH1 0x4 PUSH2 0xE8D JUMP JUMPDEST PUSH2 0x4BB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH1 0x0 SLOAD SUB JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1C4 CALLDATASIZE PUSH1 0x4 PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x835 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4B JUMP JUMPDEST PUSH2 0x855 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A8 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0xEF3 JUMP JUMPDEST PUSH2 0x860 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x8E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0xF0E JUMP JUMPDEST PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0xF79 JUMP JUMPDEST PUSH2 0x988 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0xE4B JUMP JUMPDEST PUSH2 0x9F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x29F CALLDATASIZE PUSH1 0x4 PUSH2 0x1073 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0x36D JUMPI POP PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST DUP1 PUSH2 0x3B9 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x3CE SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3FA SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x447 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x41C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x447 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x42A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45C DUP3 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x492 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCF4700E400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C6 DUP3 PUSH2 0x855 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x525 JUMPI PUSH2 0x4EF DUP2 CALLER PUSH2 0x29F JUMP JUMPDEST PUSH2 0x525 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCFB3B94200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP6 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B1 DUP3 PUSH2 0xAE2 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x618 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA114810000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD CALLER DUP1 DUP3 EQ PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 SWAP2 EQ OR PUSH2 0x68B JUMPI PUSH2 0x655 DUP7 CALLER PUSH2 0x29F JUMP JUMPDEST PUSH2 0x68B JUMPI PUSH1 0x40 MLOAD PUSH32 0x59C896BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x6D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEA553B3400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP3 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE TIMESTAMP PUSH1 0xA0 SHL OR PUSH29 0x200000000000000000000000000000000000000000000000000000000 OR PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH29 0x200000000000000000000000000000000000000000000000000000000 DUP5 AND SWAP1 SUB PUSH2 0x7D2 JUMPI PUSH1 0x1 DUP5 ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SUB PUSH2 0x7D0 JUMPI PUSH1 0x0 SLOAD DUP2 EQ PUSH2 0x7D0 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE JUMPDEST POP JUMPDEST DUP4 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x850 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x988 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B9 DUP3 PUSH2 0xAE2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8F4EB60400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x3CE SWAP1 PUSH2 0x10A6 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x993 DUP5 DUP5 DUP5 PUSH2 0x5A6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0x9F2 JUMPI PUSH2 0x9BC DUP5 DUP5 DUP5 DUP5 PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x9F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD1A57ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA03 DUP3 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0xA39 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA14C4B5000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA50 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xA70 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA9B JUMP JUMPDEST DUP1 PUSH2 0xA7A DUP5 PUSH2 0xD12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA8B SWAP3 SWAP2 SWAP1 PUSH2 0x10F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP3 LT DUP1 ISZERO PUSH2 0x3B9 JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SLOAD DUP2 LT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 SUB PUSH2 0xB65 JUMPI JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0xA9B JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB26 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDF2D9B4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xBF4 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1128 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xC4D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xC4A SWAP2 DUP2 ADD SWAP1 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xCC4 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xC7B 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 0xC80 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xCBC JUMPI PUSH1 0x40 MLOAD PUSH32 0xD1A57ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA0 PUSH1 0x40 MLOAD ADD DUP1 PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 SUB SWAP2 POP POP PUSH1 0x0 DUP2 MSTORE DUP1 DUP3 JUMPDEST PUSH1 0x1 DUP4 SUB SWAP3 POP PUSH1 0xA DUP2 MOD PUSH1 0x30 ADD DUP4 MSTORE8 PUSH1 0xA SWAP1 DIV DUP1 PUSH2 0xD2C JUMPI POP DUP2 SWAP1 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA9B DUP2 PUSH2 0xD74 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDDD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDC5 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x9F2 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xE06 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xDC2 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xA9B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xDEE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEA9 DUP4 PUSH2 0xE64 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xECC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED5 DUP5 PUSH2 0xE64 JUMP JUMPDEST SWAP3 POP PUSH2 0xEE3 PUSH1 0x20 DUP6 ADD PUSH2 0xE64 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA9B DUP3 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF2A DUP4 PUSH2 0xE64 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF98 DUP6 PUSH2 0xE64 JUMP JUMPDEST SWAP4 POP PUSH2 0xFA6 PUSH1 0x20 DUP7 ADD PUSH2 0xE64 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xFF0 JUMPI PUSH2 0xFF0 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1036 JUMPI PUSH2 0x1036 PUSH2 0xF4A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x104F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1086 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x108F DUP4 PUSH2 0xE64 JUMP JUMPDEST SWAP2 POP PUSH2 0x109D PUSH1 0x20 DUP5 ADD PUSH2 0xE64 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x10BA JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x10F3 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x110B DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xDC2 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x111F DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xDC2 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1167 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xDEE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA9B DUP2 PUSH2 0xD74 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F CHAINID PUSH17 0x5F580E102FFFBBD57983A2A2C196A1206E PUSH9 0x78546EDA52C2657B8B MSIZE BALANCE PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"895:40452:50:-:0;;;4946:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5012:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;5035:17:50;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;5482:7:50;5062:31;;-1:-1:-1;895:40452:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;895:40452:50;;;-1:-1:-1;895:40452:50;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:54;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:54;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:54;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:54:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:54;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;895:40452:50;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfers_9528":{"entryPoint":null,"id":9528,"parameterSlots":4,"returnSlots":0},"@_baseURI_8925":{"entryPoint":null,"id":8925,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfers_9515":{"entryPoint":null,"id":9515,"parameterSlots":4,"returnSlots":0},"@_checkContractOnERC721Received_9583":{"entryPoint":2969,"id":9583,"parameterSlots":4,"returnSlots":1},"@_exists_9267":{"entryPoint":2722,"id":9267,"parameterSlots":1,"returnSlots":1},"@_extraData_10089":{"entryPoint":null,"id":10089,"parameterSlots":3,"returnSlots":1},"@_getApprovedSlotAndAddress_9300":{"entryPoint":null,"id":9300,"parameterSlots":1,"returnSlots":2},"@_isSenderApprovedOrOwner_9281":{"entryPoint":null,"id":9281,"parameterSlots":3,"returnSlots":1},"@_msgSenderERC721A_10132":{"entryPoint":null,"id":10132,"parameterSlots":0,"returnSlots":1},"@_nextExtraData_10122":{"entryPoint":null,"id":10122,"parameterSlots":3,"returnSlots":1},"@_packOwnershipData_9119":{"entryPoint":null,"id":9119,"parameterSlots":2,"returnSlots":1},"@_packedOwnershipOf_9053":{"entryPoint":2786,"id":9053,"parameterSlots":1,"returnSlots":1},"@_startTokenId_8667":{"entryPoint":null,"id":8667,"parameterSlots":0,"returnSlots":1},"@_toString_10142":{"entryPoint":3346,"id":10142,"parameterSlots":1,"returnSlots":1},"@approve_9174":{"entryPoint":1211,"id":9174,"parameterSlots":2,"returnSlots":0},"@balanceOf_8740":{"entryPoint":2144,"id":8740,"parameterSlots":1,"returnSlots":1},"@getApproved_9197":{"entryPoint":1105,"id":9197,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_9241":{"entryPoint":null,"id":9241,"parameterSlots":2,"returnSlots":1},"@name_8863":{"entryPoint":959,"id":8863,"parameterSlots":0,"returnSlots":1},"@ownerOf_8945":{"entryPoint":2133,"id":8945,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_9464":{"entryPoint":2101,"id":9464,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_9502":{"entryPoint":2440,"id":9502,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_9223":{"entryPoint":2289,"id":9223,"parameterSlots":2,"returnSlots":0},"@supportsInterface_8853":{"entryPoint":730,"id":8853,"parameterSlots":1,"returnSlots":1},"@symbol_8873":{"entryPoint":2274,"id":8873,"parameterSlots":0,"returnSlots":1},"@tokenURI_8916":{"entryPoint":2552,"id":8916,"parameterSlots":1,"returnSlots":1},"@totalSupply_8692":{"entryPoint":null,"id":8692,"parameterSlots":0,"returnSlots":1},"@transferFrom_9445":{"entryPoint":1446,"id":9445,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":3684,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3827,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4211,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3767,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":3961,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3854,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3725,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":3493,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":4465,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":3659,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":3566,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4345,"id":null,"parameterSlots":3,"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_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4392,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__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":3640,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":3522,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4262,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x41":{"entryPoint":3914,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":3444,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6723:54","statements":[{"nodeType":"YulBlock","src":"6:3:54","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:133:54","statements":[{"body":{"nodeType":"YulBlock","src":"169:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:54"},"nodeType":"YulFunctionCall","src":"171:12:54"},"nodeType":"YulExpressionStatement","src":"171:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"99:66:54","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:54"},"nodeType":"YulFunctionCall","src":"88:78:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:54"},"nodeType":"YulFunctionCall","src":"78:89:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:54"},"nodeType":"YulFunctionCall","src":"71:97:54"},"nodeType":"YulIf","src":"68:117:54"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:54","type":""}],"src":"14:177:54"},{"body":{"nodeType":"YulBlock","src":"265:176:54","statements":[{"body":{"nodeType":"YulBlock","src":"311:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"320:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"323:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"313:6:54"},"nodeType":"YulFunctionCall","src":"313:12:54"},"nodeType":"YulExpressionStatement","src":"313:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"286:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"295:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"282:3:54"},"nodeType":"YulFunctionCall","src":"282:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"307:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"278:3:54"},"nodeType":"YulFunctionCall","src":"278:32:54"},"nodeType":"YulIf","src":"275:52:54"},{"nodeType":"YulVariableDeclaration","src":"336:36:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"362:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"349:12:54"},"nodeType":"YulFunctionCall","src":"349:23:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"340:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"405:5:54"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"381:23:54"},"nodeType":"YulFunctionCall","src":"381:30:54"},"nodeType":"YulExpressionStatement","src":"381:30:54"},{"nodeType":"YulAssignment","src":"420:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"430:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"420:6:54"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"231:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"242:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"254:6:54","type":""}],"src":"196:245:54"},{"body":{"nodeType":"YulBlock","src":"541:92:54","statements":[{"nodeType":"YulAssignment","src":"551:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"563:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"574:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"559:3:54"},"nodeType":"YulFunctionCall","src":"559:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"551:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"593:9:54"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"618:6:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"611:6:54"},"nodeType":"YulFunctionCall","src":"611:14:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"604:6:54"},"nodeType":"YulFunctionCall","src":"604:22:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"586:6:54"},"nodeType":"YulFunctionCall","src":"586:41:54"},"nodeType":"YulExpressionStatement","src":"586:41:54"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"510:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"521:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"532:4:54","type":""}],"src":"446:187:54"},{"body":{"nodeType":"YulBlock","src":"691:205:54","statements":[{"nodeType":"YulVariableDeclaration","src":"701:10:54","value":{"kind":"number","nodeType":"YulLiteral","src":"710:1:54","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"705:1:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"770:63:54","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"795:3:54"},{"name":"i","nodeType":"YulIdentifier","src":"800:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"791:3:54"},"nodeType":"YulFunctionCall","src":"791:11:54"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"814:3:54"},{"name":"i","nodeType":"YulIdentifier","src":"819:1:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"810:3:54"},"nodeType":"YulFunctionCall","src":"810:11:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"804:5:54"},"nodeType":"YulFunctionCall","src":"804:18:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"784:6:54"},"nodeType":"YulFunctionCall","src":"784:39:54"},"nodeType":"YulExpressionStatement","src":"784:39:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"731:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"734:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"728:2:54"},"nodeType":"YulFunctionCall","src":"728:13:54"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"742:19:54","statements":[{"nodeType":"YulAssignment","src":"744:15:54","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"753:1:54"},{"kind":"number","nodeType":"YulLiteral","src":"756:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"749:3:54"},"nodeType":"YulFunctionCall","src":"749:10:54"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"744:1:54"}]}]},"pre":{"nodeType":"YulBlock","src":"724:3:54","statements":[]},"src":"720:113:54"},{"body":{"nodeType":"YulBlock","src":"859:31:54","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"872:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"877:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"868:3:54"},"nodeType":"YulFunctionCall","src":"868:16:54"},{"kind":"number","nodeType":"YulLiteral","src":"886:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"861:6:54"},"nodeType":"YulFunctionCall","src":"861:27:54"},"nodeType":"YulExpressionStatement","src":"861:27:54"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"848:1:54"},{"name":"length","nodeType":"YulIdentifier","src":"851:6:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"845:2:54"},"nodeType":"YulFunctionCall","src":"845:13:54"},"nodeType":"YulIf","src":"842:48:54"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"669:3:54","type":""},{"name":"dst","nodeType":"YulTypedName","src":"674:3:54","type":""},{"name":"length","nodeType":"YulTypedName","src":"679:6:54","type":""}],"src":"638:258:54"},{"body":{"nodeType":"YulBlock","src":"951:267:54","statements":[{"nodeType":"YulVariableDeclaration","src":"961:26:54","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"981:5:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"975:5:54"},"nodeType":"YulFunctionCall","src":"975:12:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"965:6:54","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1003:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"1008:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"996:6:54"},"nodeType":"YulFunctionCall","src":"996:19:54"},"nodeType":"YulExpressionStatement","src":"996:19:54"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1050:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"1057:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1046:3:54"},"nodeType":"YulFunctionCall","src":"1046:16:54"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1068:3:54"},{"kind":"number","nodeType":"YulLiteral","src":"1073:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1064:3:54"},"nodeType":"YulFunctionCall","src":"1064:14:54"},{"name":"length","nodeType":"YulIdentifier","src":"1080:6:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1024:21:54"},"nodeType":"YulFunctionCall","src":"1024:63:54"},"nodeType":"YulExpressionStatement","src":"1024:63:54"},{"nodeType":"YulAssignment","src":"1096:116:54","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1111:3:54"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1124:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1132:2:54","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1120:3:54"},"nodeType":"YulFunctionCall","src":"1120:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"1137:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1116:3:54"},"nodeType":"YulFunctionCall","src":"1116:88:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1107:3:54"},"nodeType":"YulFunctionCall","src":"1107:98:54"},{"kind":"number","nodeType":"YulLiteral","src":"1207:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1103:3:54"},"nodeType":"YulFunctionCall","src":"1103:109:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1096:3:54"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"928:5:54","type":""},{"name":"pos","nodeType":"YulTypedName","src":"935:3:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"943:3:54","type":""}],"src":"901:317:54"},{"body":{"nodeType":"YulBlock","src":"1344:99:54","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1361:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1372:2:54","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1354:6:54"},"nodeType":"YulFunctionCall","src":"1354:21:54"},"nodeType":"YulExpressionStatement","src":"1354:21:54"},{"nodeType":"YulAssignment","src":"1384:53:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1410:6:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1422:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1433:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1418:3:54"},"nodeType":"YulFunctionCall","src":"1418:18:54"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1392:17:54"},"nodeType":"YulFunctionCall","src":"1392:45:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1384:4:54"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1313:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1324:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1335:4:54","type":""}],"src":"1223:220:54"},{"body":{"nodeType":"YulBlock","src":"1518:110:54","statements":[{"body":{"nodeType":"YulBlock","src":"1564:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1573:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1576:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1566:6:54"},"nodeType":"YulFunctionCall","src":"1566:12:54"},"nodeType":"YulExpressionStatement","src":"1566:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"1548:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1535:3:54"},"nodeType":"YulFunctionCall","src":"1535:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"1560:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1531:3:54"},"nodeType":"YulFunctionCall","src":"1531:32:54"},"nodeType":"YulIf","src":"1528:52:54"},{"nodeType":"YulAssignment","src":"1589:33:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1612:9:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1599:12:54"},"nodeType":"YulFunctionCall","src":"1599:23:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1589:6:54"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1484:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1495:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1507:6:54","type":""}],"src":"1448:180:54"},{"body":{"nodeType":"YulBlock","src":"1734:125:54","statements":[{"nodeType":"YulAssignment","src":"1744:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1756:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"1767:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1752:3:54"},"nodeType":"YulFunctionCall","src":"1752:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1744:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1786:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1801:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"1809:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1797:3:54"},"nodeType":"YulFunctionCall","src":"1797:55:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1779:6:54"},"nodeType":"YulFunctionCall","src":"1779:74:54"},"nodeType":"YulExpressionStatement","src":"1779:74:54"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1703:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1714:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1725:4:54","type":""}],"src":"1633:226:54"},{"body":{"nodeType":"YulBlock","src":"1913:147:54","statements":[{"nodeType":"YulAssignment","src":"1923:29:54","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1945:6:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1932:12:54"},"nodeType":"YulFunctionCall","src":"1932:20:54"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1923:5:54"}]},{"body":{"nodeType":"YulBlock","src":"2038:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2047:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2050:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2040:6:54"},"nodeType":"YulFunctionCall","src":"2040:12:54"},"nodeType":"YulExpressionStatement","src":"2040:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1974:5:54"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1985:5:54"},{"kind":"number","nodeType":"YulLiteral","src":"1992:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1981:3:54"},"nodeType":"YulFunctionCall","src":"1981:54:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1971:2:54"},"nodeType":"YulFunctionCall","src":"1971:65:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1964:6:54"},"nodeType":"YulFunctionCall","src":"1964:73:54"},"nodeType":"YulIf","src":"1961:93:54"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1892:6:54","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1903:5:54","type":""}],"src":"1864:196:54"},{"body":{"nodeType":"YulBlock","src":"2152:167:54","statements":[{"body":{"nodeType":"YulBlock","src":"2198:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2207:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2210:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2200:6:54"},"nodeType":"YulFunctionCall","src":"2200:12:54"},"nodeType":"YulExpressionStatement","src":"2200:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2173:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2182:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2169:3:54"},"nodeType":"YulFunctionCall","src":"2169:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2165:3:54"},"nodeType":"YulFunctionCall","src":"2165:32:54"},"nodeType":"YulIf","src":"2162:52:54"},{"nodeType":"YulAssignment","src":"2223:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2252:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2233:18:54"},"nodeType":"YulFunctionCall","src":"2233:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2223:6:54"}]},{"nodeType":"YulAssignment","src":"2271:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2298:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2309:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2294:3:54"},"nodeType":"YulFunctionCall","src":"2294:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2281:12:54"},"nodeType":"YulFunctionCall","src":"2281:32:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2271:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2110:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2121:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2133:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2141:6:54","type":""}],"src":"2065:254:54"},{"body":{"nodeType":"YulBlock","src":"2425:76:54","statements":[{"nodeType":"YulAssignment","src":"2435:26:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2447:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2458:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:54"},"nodeType":"YulFunctionCall","src":"2443:18:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2435:4:54"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2477:9:54"},{"name":"value0","nodeType":"YulIdentifier","src":"2488:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2470:6:54"},"nodeType":"YulFunctionCall","src":"2470:25:54"},"nodeType":"YulExpressionStatement","src":"2470:25:54"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2394:9:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2405:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2416:4:54","type":""}],"src":"2324:177:54"},{"body":{"nodeType":"YulBlock","src":"2610:224:54","statements":[{"body":{"nodeType":"YulBlock","src":"2656:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2665:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2668:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2658:6:54"},"nodeType":"YulFunctionCall","src":"2658:12:54"},"nodeType":"YulExpressionStatement","src":"2658:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2631:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2640:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2627:3:54"},"nodeType":"YulFunctionCall","src":"2627:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2652:2:54","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2623:3:54"},"nodeType":"YulFunctionCall","src":"2623:32:54"},"nodeType":"YulIf","src":"2620:52:54"},{"nodeType":"YulAssignment","src":"2681:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2710:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2691:18:54"},"nodeType":"YulFunctionCall","src":"2691:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2681:6:54"}]},{"nodeType":"YulAssignment","src":"2729:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2762:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2773:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2758:3:54"},"nodeType":"YulFunctionCall","src":"2758:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2739:18:54"},"nodeType":"YulFunctionCall","src":"2739:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2729:6:54"}]},{"nodeType":"YulAssignment","src":"2786:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2813:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"2824:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2809:3:54"},"nodeType":"YulFunctionCall","src":"2809:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2796:12:54"},"nodeType":"YulFunctionCall","src":"2796:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2786:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2560:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2571:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2583:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2591:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2599:6:54","type":""}],"src":"2506:328:54"},{"body":{"nodeType":"YulBlock","src":"2909:116:54","statements":[{"body":{"nodeType":"YulBlock","src":"2955:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2964:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2967:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2957:6:54"},"nodeType":"YulFunctionCall","src":"2957:12:54"},"nodeType":"YulExpressionStatement","src":"2957:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2930:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"2939:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2926:3:54"},"nodeType":"YulFunctionCall","src":"2926:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"2951:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2922:3:54"},"nodeType":"YulFunctionCall","src":"2922:32:54"},"nodeType":"YulIf","src":"2919:52:54"},{"nodeType":"YulAssignment","src":"2980:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3009:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2990:18:54"},"nodeType":"YulFunctionCall","src":"2990:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2980:6:54"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2875:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2886:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2898:6:54","type":""}],"src":"2839:186:54"},{"body":{"nodeType":"YulBlock","src":"3114:263:54","statements":[{"body":{"nodeType":"YulBlock","src":"3160:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3169:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3172:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3162:6:54"},"nodeType":"YulFunctionCall","src":"3162:12:54"},"nodeType":"YulExpressionStatement","src":"3162:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3135:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3144:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3131:3:54"},"nodeType":"YulFunctionCall","src":"3131:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3156:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3127:3:54"},"nodeType":"YulFunctionCall","src":"3127:32:54"},"nodeType":"YulIf","src":"3124:52:54"},{"nodeType":"YulAssignment","src":"3185:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3214:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3195:18:54"},"nodeType":"YulFunctionCall","src":"3195:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3185:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"3233:45:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3263:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3274:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3259:3:54"},"nodeType":"YulFunctionCall","src":"3259:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3246:12:54"},"nodeType":"YulFunctionCall","src":"3246:32:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3237:5:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"3331:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3340:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3343:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3333:6:54"},"nodeType":"YulFunctionCall","src":"3333:12:54"},"nodeType":"YulExpressionStatement","src":"3333:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3300:5:54"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3321:5:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3314:6:54"},"nodeType":"YulFunctionCall","src":"3314:13:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3307:6:54"},"nodeType":"YulFunctionCall","src":"3307:21:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3297:2:54"},"nodeType":"YulFunctionCall","src":"3297:32:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3290:6:54"},"nodeType":"YulFunctionCall","src":"3290:40:54"},"nodeType":"YulIf","src":"3287:60:54"},{"nodeType":"YulAssignment","src":"3356:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"3366:5:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3356:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3072:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3083:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3095:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3103:6:54","type":""}],"src":"3030:347:54"},{"body":{"nodeType":"YulBlock","src":"3414:152:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3431:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3434:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3424:6:54"},"nodeType":"YulFunctionCall","src":"3424:88:54"},"nodeType":"YulExpressionStatement","src":"3424:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3528:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3531:4:54","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3521:6:54"},"nodeType":"YulFunctionCall","src":"3521:15:54"},"nodeType":"YulExpressionStatement","src":"3521:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3552:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3555:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3545:6:54"},"nodeType":"YulFunctionCall","src":"3545:15:54"},"nodeType":"YulExpressionStatement","src":"3545:15:54"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3382:184:54"},{"body":{"nodeType":"YulBlock","src":"3701:1067:54","statements":[{"body":{"nodeType":"YulBlock","src":"3748:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3757:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3760:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3750:6:54"},"nodeType":"YulFunctionCall","src":"3750:12:54"},"nodeType":"YulExpressionStatement","src":"3750:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3722:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"3731:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3718:3:54"},"nodeType":"YulFunctionCall","src":"3718:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"3743:3:54","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3714:3:54"},"nodeType":"YulFunctionCall","src":"3714:33:54"},"nodeType":"YulIf","src":"3711:53:54"},{"nodeType":"YulAssignment","src":"3773:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3802:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3783:18:54"},"nodeType":"YulFunctionCall","src":"3783:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3773:6:54"}]},{"nodeType":"YulAssignment","src":"3821:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3854:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3865:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3850:3:54"},"nodeType":"YulFunctionCall","src":"3850:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:54"},"nodeType":"YulFunctionCall","src":"3831:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3821:6:54"}]},{"nodeType":"YulAssignment","src":"3878:42:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3905:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3916:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3901:3:54"},"nodeType":"YulFunctionCall","src":"3901:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3888:12:54"},"nodeType":"YulFunctionCall","src":"3888:32:54"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3878:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"3929:46:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3960:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"3971:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3956:3:54"},"nodeType":"YulFunctionCall","src":"3956:18:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3943:12:54"},"nodeType":"YulFunctionCall","src":"3943:32:54"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3933:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3984:28:54","value":{"kind":"number","nodeType":"YulLiteral","src":"3994:18:54","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3988:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4039:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4048:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4051:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4041:6:54"},"nodeType":"YulFunctionCall","src":"4041:12:54"},"nodeType":"YulExpressionStatement","src":"4041:12:54"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4027:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4035:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4024:2:54"},"nodeType":"YulFunctionCall","src":"4024:14:54"},"nodeType":"YulIf","src":"4021:34:54"},{"nodeType":"YulVariableDeclaration","src":"4064:32:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4078:9:54"},{"name":"offset","nodeType":"YulIdentifier","src":"4089:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4074:3:54"},"nodeType":"YulFunctionCall","src":"4074:22:54"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4068:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4144:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4153:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4156:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4146:6:54"},"nodeType":"YulFunctionCall","src":"4146:12:54"},"nodeType":"YulExpressionStatement","src":"4146:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4123:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4127:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4119:3:54"},"nodeType":"YulFunctionCall","src":"4119:13:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4134:7:54"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4115:3:54"},"nodeType":"YulFunctionCall","src":"4115:27:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4108:6:54"},"nodeType":"YulFunctionCall","src":"4108:35:54"},"nodeType":"YulIf","src":"4105:55:54"},{"nodeType":"YulVariableDeclaration","src":"4169:26:54","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4192:2:54"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4179:12:54"},"nodeType":"YulFunctionCall","src":"4179:16:54"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4173:2:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4218:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4220:16:54"},"nodeType":"YulFunctionCall","src":"4220:18:54"},"nodeType":"YulExpressionStatement","src":"4220:18:54"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4210:2:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4214:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4207:2:54"},"nodeType":"YulFunctionCall","src":"4207:10:54"},"nodeType":"YulIf","src":"4204:36:54"},{"nodeType":"YulVariableDeclaration","src":"4249:76:54","value":{"kind":"number","nodeType":"YulLiteral","src":"4259:66:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4253:2:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4334:23:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4354:2:54","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4348:5:54"},"nodeType":"YulFunctionCall","src":"4348:9:54"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4338:6:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4366:71:54","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4388:6:54"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4412:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4416:4:54","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4408:3:54"},"nodeType":"YulFunctionCall","src":"4408:13:54"},{"name":"_4","nodeType":"YulIdentifier","src":"4423:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4404:3:54"},"nodeType":"YulFunctionCall","src":"4404:22:54"},{"kind":"number","nodeType":"YulLiteral","src":"4428:2:54","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4400:3:54"},"nodeType":"YulFunctionCall","src":"4400:31:54"},{"name":"_4","nodeType":"YulIdentifier","src":"4433:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4396:3:54"},"nodeType":"YulFunctionCall","src":"4396:40:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4384:3:54"},"nodeType":"YulFunctionCall","src":"4384:53:54"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4370:10:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"4496:22:54","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4498:16:54"},"nodeType":"YulFunctionCall","src":"4498:18:54"},"nodeType":"YulExpressionStatement","src":"4498:18:54"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4455:10:54"},{"name":"_1","nodeType":"YulIdentifier","src":"4467:2:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4452:2:54"},"nodeType":"YulFunctionCall","src":"4452:18:54"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4475:10:54"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4487:6:54"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4472:2:54"},"nodeType":"YulFunctionCall","src":"4472:22:54"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4449:2:54"},"nodeType":"YulFunctionCall","src":"4449:46:54"},"nodeType":"YulIf","src":"4446:72:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4534:2:54","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4538:10:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4527:6:54"},"nodeType":"YulFunctionCall","src":"4527:22:54"},"nodeType":"YulExpressionStatement","src":"4527:22:54"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4565:6:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4573:2:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4558:6:54"},"nodeType":"YulFunctionCall","src":"4558:18:54"},"nodeType":"YulExpressionStatement","src":"4558:18:54"},{"body":{"nodeType":"YulBlock","src":"4622:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4631:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4634:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4624:6:54"},"nodeType":"YulFunctionCall","src":"4624:12:54"},"nodeType":"YulExpressionStatement","src":"4624:12:54"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4599:2:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4603:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4595:3:54"},"nodeType":"YulFunctionCall","src":"4595:11:54"},{"kind":"number","nodeType":"YulLiteral","src":"4608:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4591:3:54"},"nodeType":"YulFunctionCall","src":"4591:20:54"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4613:7:54"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4588:2:54"},"nodeType":"YulFunctionCall","src":"4588:33:54"},"nodeType":"YulIf","src":"4585:53:54"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4664:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"4672:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4660:3:54"},"nodeType":"YulFunctionCall","src":"4660:15:54"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4681:2:54"},{"kind":"number","nodeType":"YulLiteral","src":"4685:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4677:3:54"},"nodeType":"YulFunctionCall","src":"4677:11:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4690:2:54"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4647:12:54"},"nodeType":"YulFunctionCall","src":"4647:46:54"},"nodeType":"YulExpressionStatement","src":"4647:46:54"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4717:6:54"},{"name":"_3","nodeType":"YulIdentifier","src":"4725:2:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4713:3:54"},"nodeType":"YulFunctionCall","src":"4713:15:54"},{"kind":"number","nodeType":"YulLiteral","src":"4730:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4709:3:54"},"nodeType":"YulFunctionCall","src":"4709:24:54"},{"kind":"number","nodeType":"YulLiteral","src":"4735:1:54","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4702:6:54"},"nodeType":"YulFunctionCall","src":"4702:35:54"},"nodeType":"YulExpressionStatement","src":"4702:35:54"},{"nodeType":"YulAssignment","src":"4746:16:54","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4756:6:54"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4746:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3643:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3654:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3666:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3674:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3682:6:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3690:6:54","type":""}],"src":"3571:1197:54"},{"body":{"nodeType":"YulBlock","src":"4860:173:54","statements":[{"body":{"nodeType":"YulBlock","src":"4906:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4915:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4918:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4908:6:54"},"nodeType":"YulFunctionCall","src":"4908:12:54"},"nodeType":"YulExpressionStatement","src":"4908:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4881:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"4890:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4877:3:54"},"nodeType":"YulFunctionCall","src":"4877:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"4902:2:54","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4873:3:54"},"nodeType":"YulFunctionCall","src":"4873:32:54"},"nodeType":"YulIf","src":"4870:52:54"},{"nodeType":"YulAssignment","src":"4931:39:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4960:9:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4941:18:54"},"nodeType":"YulFunctionCall","src":"4941:29:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4931:6:54"}]},{"nodeType":"YulAssignment","src":"4979:48:54","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5012:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"5023:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5008:3:54"},"nodeType":"YulFunctionCall","src":"5008:18:54"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4989:18:54"},"nodeType":"YulFunctionCall","src":"4989:38:54"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4979:6:54"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4818:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4829:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4841:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4849:6:54","type":""}],"src":"4773:260:54"},{"body":{"nodeType":"YulBlock","src":"5093:382:54","statements":[{"nodeType":"YulAssignment","src":"5103:22:54","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5117:1:54","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"5120:4:54"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5113:3:54"},"nodeType":"YulFunctionCall","src":"5113:12:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5103:6:54"}]},{"nodeType":"YulVariableDeclaration","src":"5134:38:54","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5164:4:54"},{"kind":"number","nodeType":"YulLiteral","src":"5170:1:54","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5160:3:54"},"nodeType":"YulFunctionCall","src":"5160:12:54"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"5138:18:54","type":""}]},{"body":{"nodeType":"YulBlock","src":"5211:31:54","statements":[{"nodeType":"YulAssignment","src":"5213:27:54","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5227:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5235:4:54","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5223:3:54"},"nodeType":"YulFunctionCall","src":"5223:17:54"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5213:6:54"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5191:18:54"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5184:6:54"},"nodeType":"YulFunctionCall","src":"5184:26:54"},"nodeType":"YulIf","src":"5181:61:54"},{"body":{"nodeType":"YulBlock","src":"5301:168:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5322:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5325:77:54","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5315:6:54"},"nodeType":"YulFunctionCall","src":"5315:88:54"},"nodeType":"YulExpressionStatement","src":"5315:88:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5423:1:54","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5426:4:54","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5416:6:54"},"nodeType":"YulFunctionCall","src":"5416:15:54"},"nodeType":"YulExpressionStatement","src":"5416:15:54"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5451:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5454:4:54","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5444:6:54"},"nodeType":"YulFunctionCall","src":"5444:15:54"},"nodeType":"YulExpressionStatement","src":"5444:15:54"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5257:18:54"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5280:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5288:2:54","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5277:2:54"},"nodeType":"YulFunctionCall","src":"5277:14:54"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5254:2:54"},"nodeType":"YulFunctionCall","src":"5254:38:54"},"nodeType":"YulIf","src":"5251:218:54"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"5073:4:54","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5082:6:54","type":""}],"src":"5038:437:54"},{"body":{"nodeType":"YulBlock","src":"5667:283:54","statements":[{"nodeType":"YulVariableDeclaration","src":"5677:27:54","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5697:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5691:5:54"},"nodeType":"YulFunctionCall","src":"5691:13:54"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5681:6:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5739:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5747:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5735:3:54"},"nodeType":"YulFunctionCall","src":"5735:17:54"},{"name":"pos","nodeType":"YulIdentifier","src":"5754:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"5759:6:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"5713:21:54"},"nodeType":"YulFunctionCall","src":"5713:53:54"},"nodeType":"YulExpressionStatement","src":"5713:53:54"},{"nodeType":"YulVariableDeclaration","src":"5775:29:54","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5792:3:54"},{"name":"length","nodeType":"YulIdentifier","src":"5797:6:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5788:3:54"},"nodeType":"YulFunctionCall","src":"5788:16:54"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"5779:5:54","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5813:29:54","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5835:6:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5829:5:54"},"nodeType":"YulFunctionCall","src":"5829:13:54"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5817:8:54","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5877:6:54"},{"kind":"number","nodeType":"YulLiteral","src":"5885:4:54","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5873:3:54"},"nodeType":"YulFunctionCall","src":"5873:17:54"},{"name":"end_1","nodeType":"YulIdentifier","src":"5892:5:54"},{"name":"length_1","nodeType":"YulIdentifier","src":"5899:8:54"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"5851:21:54"},"nodeType":"YulFunctionCall","src":"5851:57:54"},"nodeType":"YulExpressionStatement","src":"5851:57:54"},{"nodeType":"YulAssignment","src":"5917:27:54","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"5928:5:54"},{"name":"length_1","nodeType":"YulIdentifier","src":"5935:8:54"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5924:3:54"},"nodeType":"YulFunctionCall","src":"5924:20:54"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5917:3:54"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5635:3:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5640:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5648:6:54","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5659:3:54","type":""}],"src":"5480:470:54"},{"body":{"nodeType":"YulBlock","src":"6158:309:54","statements":[{"nodeType":"YulVariableDeclaration","src":"6168:52:54","value":{"kind":"number","nodeType":"YulLiteral","src":"6178:42:54","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6172:2:54","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6236:9:54"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6251:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"6259:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6247:3:54"},"nodeType":"YulFunctionCall","src":"6247:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6229:6:54"},"nodeType":"YulFunctionCall","src":"6229:34:54"},"nodeType":"YulExpressionStatement","src":"6229:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6283:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6294:2:54","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6279:3:54"},"nodeType":"YulFunctionCall","src":"6279:18:54"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6303:6:54"},{"name":"_1","nodeType":"YulIdentifier","src":"6311:2:54"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6299:3:54"},"nodeType":"YulFunctionCall","src":"6299:15:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6272:6:54"},"nodeType":"YulFunctionCall","src":"6272:43:54"},"nodeType":"YulExpressionStatement","src":"6272:43:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6335:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6346:2:54","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6331:3:54"},"nodeType":"YulFunctionCall","src":"6331:18:54"},{"name":"value2","nodeType":"YulIdentifier","src":"6351:6:54"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6324:6:54"},"nodeType":"YulFunctionCall","src":"6324:34:54"},"nodeType":"YulExpressionStatement","src":"6324:34:54"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6378:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6389:2:54","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6374:3:54"},"nodeType":"YulFunctionCall","src":"6374:18:54"},{"kind":"number","nodeType":"YulLiteral","src":"6394:3:54","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6367:6:54"},"nodeType":"YulFunctionCall","src":"6367:31:54"},"nodeType":"YulExpressionStatement","src":"6367:31:54"},{"nodeType":"YulAssignment","src":"6407:54:54","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"6433:6:54"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6445:9:54"},{"kind":"number","nodeType":"YulLiteral","src":"6456:3:54","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6441:3:54"},"nodeType":"YulFunctionCall","src":"6441:19:54"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"6415:17:54"},"nodeType":"YulFunctionCall","src":"6415:46:54"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6407:4:54"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6103:9:54","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6114:6:54","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6122:6:54","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6130:6:54","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6138:6:54","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6149:4:54","type":""}],"src":"5955:512:54"},{"body":{"nodeType":"YulBlock","src":"6552:169:54","statements":[{"body":{"nodeType":"YulBlock","src":"6598:16:54","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6607:1:54","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6610:1:54","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6600:6:54"},"nodeType":"YulFunctionCall","src":"6600:12:54"},"nodeType":"YulExpressionStatement","src":"6600:12:54"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6573:7:54"},{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:54"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6569:3:54"},"nodeType":"YulFunctionCall","src":"6569:23:54"},{"kind":"number","nodeType":"YulLiteral","src":"6594:2:54","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6565:3:54"},"nodeType":"YulFunctionCall","src":"6565:32:54"},"nodeType":"YulIf","src":"6562:52:54"},{"nodeType":"YulVariableDeclaration","src":"6623:29:54","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6642:9:54"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6636:5:54"},"nodeType":"YulFunctionCall","src":"6636:16:54"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6627:5:54","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6685:5:54"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"6661:23:54"},"nodeType":"YulFunctionCall","src":"6661:30:54"},"nodeType":"YulExpressionStatement","src":"6661:30:54"},{"nodeType":"YulAssignment","src":"6700:15:54","value":{"name":"value","nodeType":"YulIdentifier","src":"6710:5:54"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6700:6:54"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6518:9:54","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6529:7:54","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6541:6:54","type":""}],"src":"6472:249:54"}]},"contents":"{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\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 copy_memory_to_memory(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        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 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_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { 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        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\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_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value3 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n}","id":54,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610231578063b88d4fde14610251578063c87b56dd14610264578063e985e9c51461028457600080fd5b80636352211e146101dc57806370a08231146101fc57806395d89b411461021c57600080fd5b8063095ea7b3116100bb578063095ea7b31461017e57806318160ddd1461019357806323b872dd146101b657806342842e0e146101c957600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610da5565b6102da565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103bf565b60405161010e9190610e38565b34801561014557600080fd5b50610159610154366004610e4b565b610451565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b61019161018c366004610e8d565b6104bb565b005b34801561019f57600080fd5b50600154600054035b60405190815260200161010e565b6101916101c4366004610eb7565b6105a6565b6101916101d7366004610eb7565b610835565b3480156101e857600080fd5b506101596101f7366004610e4b565b610855565b34801561020857600080fd5b506101a8610217366004610ef3565b610860565b34801561022857600080fd5b5061012c6108e2565b34801561023d57600080fd5b5061019161024c366004610f0e565b6108f1565b61019161025f366004610f79565b610988565b34801561027057600080fd5b5061012c61027f366004610e4b565b6109f8565b34801561029057600080fd5b5061010261029f366004611073565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061036d57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103b957507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600280546103ce906110a6565b80601f01602080910402602001604051908101604052809291908181526020018280546103fa906110a6565b80156104475780601f1061041c57610100808354040283529160200191610447565b820191906000526020600020905b81548152906001019060200180831161042a57829003601f168201915b5050505050905090565b600061045c82610aa2565b610492576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104c682610855565b90503373ffffffffffffffffffffffffffffffffffffffff821614610525576104ef813361029f565b610525576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006105b182610ae2565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610618576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff88169091141761068b57610655863361029f565b61068b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166106d8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156106e357600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000841690036107d2576001840160008181526004602052604081205490036107d05760005481146107d05760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b61085083838360405180602001604052806000815250610988565b505050565b60006103b982610ae2565b600073ffffffffffffffffffffffffffffffffffffffff82166108af576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b6060600380546103ce906110a6565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109938484846105a6565b73ffffffffffffffffffffffffffffffffffffffff83163b156109f2576109bc84848484610b99565b6109f2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060610a0382610aa2565b610a39576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a5060408051602081019091526000815290565b90508051600003610a705760405180602001604052806000815250610a9b565b80610a7a84610d12565b604051602001610a8b9291906110f9565b6040516020818303038152906040525b9392505050565b60008054821080156103b95750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b600081600054811015610b6757600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003610b65575b80600003610a9b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600081815260046020526040902054610b26565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610bf4903390899088908890600401611128565b6020604051808303816000875af1925050508015610c4d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610c4a91810190611171565b60015b610cc4573d808015610c7b576040519150601f19603f3d011682016040523d82523d6000602084013e610c80565b606091505b508051600003610cbc576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480610d2c57508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610da257600080fd5b50565b600060208284031215610db757600080fd5b8135610a9b81610d74565b60005b83811015610ddd578181015183820152602001610dc5565b838111156109f25750506000910152565b60008151808452610e06816020860160208601610dc2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a9b6020830184610dee565b600060208284031215610e5d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e8857600080fd5b919050565b60008060408385031215610ea057600080fd5b610ea983610e64565b946020939093013593505050565b600080600060608486031215610ecc57600080fd5b610ed584610e64565b9250610ee360208501610e64565b9150604084013590509250925092565b600060208284031215610f0557600080fd5b610a9b82610e64565b60008060408385031215610f2157600080fd5b610f2a83610e64565b915060208301358015158114610f3f57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215610f8f57600080fd5b610f9885610e64565b9350610fa660208601610e64565b925060408501359150606085013567ffffffffffffffff80821115610fca57600080fd5b818701915087601f830112610fde57600080fd5b813581811115610ff057610ff0610f4a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561103657611036610f4a565b816040528281528a602084870101111561104f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561108657600080fd5b61108f83610e64565b915061109d60208401610e64565b90509250929050565b600181811c908216806110ba57607f821691505b6020821081036110f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161110b818460208801610dc2565b83519083019061111f818360208801610dc2565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526111676080830184610dee565b9695505050505050565b60006020828403121561118357600080fd5b8151610a9b81610d7456fea26469706673582212202f46705f580e102fffbbd57983a2a2c196a1206e6878546eda52c2657b8b593164736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0x2DA 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 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x3BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x154 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4B JUMP JUMPDEST PUSH2 0x451 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x18C CALLDATASIZE PUSH1 0x4 PUSH2 0xE8D JUMP JUMPDEST PUSH2 0x4BB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH1 0x0 SLOAD SUB JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1C4 CALLDATASIZE PUSH1 0x4 PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0xEB7 JUMP JUMPDEST PUSH2 0x835 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4B JUMP JUMPDEST PUSH2 0x855 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A8 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0xEF3 JUMP JUMPDEST PUSH2 0x860 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x8E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0xF0E JUMP JUMPDEST PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0xF79 JUMP JUMPDEST PUSH2 0x988 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0xE4B JUMP JUMPDEST PUSH2 0x9F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x29F CALLDATASIZE PUSH1 0x4 PUSH2 0x1073 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0x36D JUMPI POP PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST DUP1 PUSH2 0x3B9 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x3CE SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3FA SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x447 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x41C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x447 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x42A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45C DUP3 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x492 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCF4700E400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C6 DUP3 PUSH2 0x855 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x525 JUMPI PUSH2 0x4EF DUP2 CALLER PUSH2 0x29F JUMP JUMPDEST PUSH2 0x525 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCFB3B94200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP6 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B1 DUP3 PUSH2 0xAE2 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x618 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA114810000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD CALLER DUP1 DUP3 EQ PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 SWAP2 EQ OR PUSH2 0x68B JUMPI PUSH2 0x655 DUP7 CALLER PUSH2 0x29F JUMP JUMPDEST PUSH2 0x68B JUMPI PUSH1 0x40 MLOAD PUSH32 0x59C896BE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x6D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEA553B3400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP3 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE TIMESTAMP PUSH1 0xA0 SHL OR PUSH29 0x200000000000000000000000000000000000000000000000000000000 OR PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH29 0x200000000000000000000000000000000000000000000000000000000 DUP5 AND SWAP1 SUB PUSH2 0x7D2 JUMPI PUSH1 0x1 DUP5 ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SUB PUSH2 0x7D0 JUMPI PUSH1 0x0 SLOAD DUP2 EQ PUSH2 0x7D0 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE JUMPDEST POP JUMPDEST DUP4 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x850 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x988 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B9 DUP3 PUSH2 0xAE2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8F4EB60400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x3CE SWAP1 PUSH2 0x10A6 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x993 DUP5 DUP5 DUP5 PUSH2 0x5A6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0x9F2 JUMPI PUSH2 0x9BC DUP5 DUP5 DUP5 DUP5 PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x9F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD1A57ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA03 DUP3 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0xA39 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA14C4B5000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA50 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xA70 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA9B JUMP JUMPDEST DUP1 PUSH2 0xA7A DUP5 PUSH2 0xD12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA8B SWAP3 SWAP2 SWAP1 PUSH2 0x10F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP3 LT DUP1 ISZERO PUSH2 0x3B9 JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SLOAD DUP2 LT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 SUB PUSH2 0xB65 JUMPI JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0xA9B JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB26 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDF2D9B4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xBF4 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1128 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xC4D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xC4A SWAP2 DUP2 ADD SWAP1 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xCC4 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xC7B 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 0xC80 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xCBC JUMPI PUSH1 0x40 MLOAD PUSH32 0xD1A57ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA0 PUSH1 0x40 MLOAD ADD DUP1 PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 SUB SWAP2 POP POP PUSH1 0x0 DUP2 MSTORE DUP1 DUP3 JUMPDEST PUSH1 0x1 DUP4 SUB SWAP3 POP PUSH1 0xA DUP2 MOD PUSH1 0x30 ADD DUP4 MSTORE8 PUSH1 0xA SWAP1 DIV DUP1 PUSH2 0xD2C JUMPI POP DUP2 SWAP1 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA9B DUP2 PUSH2 0xD74 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDDD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDC5 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x9F2 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xE06 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xDC2 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xA9B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xDEE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEA9 DUP4 PUSH2 0xE64 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xECC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED5 DUP5 PUSH2 0xE64 JUMP JUMPDEST SWAP3 POP PUSH2 0xEE3 PUSH1 0x20 DUP6 ADD PUSH2 0xE64 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA9B DUP3 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF2A DUP4 PUSH2 0xE64 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF98 DUP6 PUSH2 0xE64 JUMP JUMPDEST SWAP4 POP PUSH2 0xFA6 PUSH1 0x20 DUP7 ADD PUSH2 0xE64 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xFF0 JUMPI PUSH2 0xFF0 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1036 JUMPI PUSH2 0x1036 PUSH2 0xF4A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x104F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1086 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x108F DUP4 PUSH2 0xE64 JUMP JUMPDEST SWAP2 POP PUSH2 0x109D PUSH1 0x20 DUP5 ADD PUSH2 0xE64 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x10BA JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x10F3 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x110B DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xDC2 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x111F DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xDC2 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1167 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xDEE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA9B DUP2 PUSH2 0xD74 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F CHAINID PUSH17 0x5F580E102FFFBBD57983A2A2C196A1206E PUSH9 0x78546EDA52C2657B8B MSIZE BALANCE PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"895:40452:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9155:630;;;;;;;;;;-1:-1:-1;9155:630:50;;;;;:::i;:::-;;:::i;:::-;;;611:14:54;;604:22;586:41;;574:2;559:18;9155:630:50;;;;;;;;10039:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16360:214::-;;;;;;;;;;-1:-1:-1;16360:214:50;;;;;:::i;:::-;;:::i;:::-;;;1809:42:54;1797:55;;;1779:74;;1767:2;1752:18;16360:214:50;1633:226:54;15812:398:50;;;;;;:::i;:::-;;:::i;:::-;;5894:317;;;;;;;;;;-1:-1:-1;6164:12:50;;5955:7;6148:13;:28;5894:317;;;2470:25:54;;;2458:2;2443:18;5894:317:50;2324:177:54;19903:2764:50;;;;;;:::i;:::-;;:::i;22758:187::-;;;;;;:::i;:::-;;:::i;11391:150::-;;;;;;;;;;-1:-1:-1;11391:150:50;;;;;:::i;:::-;;:::i;7045:230::-;;;;;;;;;;-1:-1:-1;7045:230:50;;;;;:::i;:::-;;:::i;10208:102::-;;;;;;;;;;;;;:::i;16901:231::-;;;;;;;;;;-1:-1:-1;16901:231:50;;;;;:::i;:::-;;:::i;23526:396::-;;;;;;:::i;:::-;;:::i;10411:313::-;;;;;;;;;;-1:-1:-1;10411:313:50;;;;;:::i;:::-;;:::i;17282:162::-;;;;;;;;;;-1:-1:-1;17282:162:50;;;;;:::i;:::-;17402:25;;;;17379:4;17402:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;17282:162;9155:630;9240:4;9558:25;;;;;;:101;;-1:-1:-1;9634:25:50;;;;;9558:101;:177;;;-1:-1:-1;9710:25:50;;;;;9558:177;9539:196;9155:630;-1:-1:-1;;9155:630:50:o;10039:98::-;10093:13;10125:5;10118:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10039:98;:::o;16360:214::-;16436:7;16460:16;16468:7;16460;:16::i;:::-;16455:64;;16485:34;;;;;;;;;;;;;;16455:64;-1:-1:-1;16537:24:50;;;;:15;:24;;;;;:30;;;;16360:214::o;15812:398::-;15900:13;15916:16;15924:7;15916;:16::i;:::-;15900:32;-1:-1:-1;39523:10:50;15947:28;;;;15943:172;;15994:44;16011:5;39523:10;17282:162;:::i;15994:44::-;15989:126;;16065:35;;;;;;;;;;;;;;15989:126;16125:24;;;;:15;:24;;;;;;:35;;;;;;;;;;;;;;16175:28;;16125:24;;16175:28;;;;;;;15890:320;15812:398;;:::o;19903:2764::-;20040:27;20070;20089:7;20070:18;:27::i;:::-;20040:57;;20153:4;20112:45;;20128:19;20112:45;;;20108:86;;20166:28;;;;;;;;;;;;;;20108:86;20206:27;19036:24;;;:15;:24;;;;;19260:26;;39523:10;18673:30;;;18381:16;18370:28;;18651:20;;;18648:56;20389:179;;20481:43;20498:4;39523:10;17282:162;:::i;20481:43::-;20476:92;;20533:35;;;;;;;;;;;;;;20476:92;20583:16;;;20579:52;;20608:23;;;;;;;;;;;;;;20579:52;20774:15;20771:157;;;20912:1;20891:19;20884:30;20771:157;21300:24;;;;;;;;:18;:24;;;;;;21298:26;;;;;;21368:22;;;;;;;;;21366:24;;-1:-1:-1;21366:24:50;;;14703:11;14678:23;14674:41;14661:63;2392:8;14661:63;21654:26;;;;:17;:26;;;;;:172;;;;2392:8;21943:47;;:52;;21939:617;;22047:1;22037:11;;22015:19;22168:30;;;:17;:30;;;;;;:35;;22164:378;;22304:13;;22289:11;:28;22285:239;;22449:30;;;;:17;:30;;;;;:52;;;22285:239;21997:559;21939:617;22600:7;22596:2;22581:27;;22590:4;22581:27;;;;;;;;;;;;20030:2637;;;19903:2764;;;:::o;22758:187::-;22899:39;22916:4;22922:2;22926:7;22899:39;;;;;;;;;;;;:16;:39::i;:::-;22758:187;;;:::o;11391:150::-;11463:7;11505:27;11524:7;11505:18;:27::i;7045:230::-;7117:7;7140:19;;;7136:60;;7168:28;;;;;;;;;;;;;;7136:60;-1:-1:-1;7213:25:50;;;;;;:18;:25;;;;;;1360:13;7213:55;;7045:230::o;10208:102::-;10264:13;10296:7;10289:14;;;;;:::i;16901:231::-;39523:10;16995:39;;;;:18;:39;;;;;;;;;:49;;;;;;;;;;;;:60;;;;;;;;;;;;;17070:55;;586:41:54;;;16995:49:50;;39523:10;17070:55;;559:18:54;17070:55:50;;;;;;;16901:231;;:::o;23526:396::-;23695:31;23708:4;23714:2;23718:7;23695:12;:31::i;:::-;23740:14;;;;:19;23736:180;;23778:56;23809:4;23815:2;23819:7;23828:5;23778:30;:56::i;:::-;23773:143;;23861:40;;;;;;;;;;;;;;23773:143;23526:396;;;;:::o;10411:313::-;10484:13;10514:16;10522:7;10514;:16::i;:::-;10509:59;;10539:29;;;;;;;;;;;;;;10509:59;10579:21;10603:10;11045:9;;;;;;;;;-1:-1:-1;11045:9:50;;;10969:92;10603:10;10579:34;;10636:7;10630:21;10655:1;10630:26;:87;;;;;;;;;;;;;;;;;10683:7;10692:18;10702:7;10692:9;:18::i;:::-;10666:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10630:87;10623:94;10411:313;-1:-1:-1;;;10411:313:50:o;17693:277::-;17758:4;17845:13;;17835:7;:23;17793:151;;;;-1:-1:-1;;17895:26:50;;;;:17;:26;;;;;;2118:8;17895:44;:49;;17693:277::o;12515:1249::-;12582:7;12616;12714:13;;12707:4;:20;12703:997;;;12751:14;12768:23;;;:17;:23;;;;;;;2118:8;12855:24;;:29;;12851:831;;13510:111;13517:6;13527:1;13517:11;13510:111;;-1:-1:-1;13587:6:50;;13569:25;;;;:17;:25;;;;;;13510:111;;12851:831;12729:971;12703:997;13726:31;;;;;;;;;;;;;;25948:697;26126:88;;;;;26106:4;;26126:45;;;;;;:88;;39523:10;;26193:4;;26199:7;;26208:5;;26126:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26126:88:50;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26122:517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26404:6;:13;26421:1;26404:18;26400:229;;26449:40;;;;;;;;;;;;;;26400:229;26589:6;26583:13;26574:6;26570:2;26566:15;26559:38;26122:517;26282:64;;26292:54;26282:64;;-1:-1:-1;25948:697:50;;;;;;:::o;39637:1708::-;39702:17;40130:4;40123;40117:11;40113:22;40220:1;40214:4;40207:15;40293:4;40290:1;40286:12;40279:19;;;40373:1;40368:3;40361:14;40474:3;40708:5;40690:419;40755:1;40750:3;40746:11;40739:18;;40923:2;40917:4;40913:13;40909:2;40905:22;40900:3;40892:36;41015:2;41005:13;;41070:25;40690:419;41070:25;-1:-1:-1;41137:13:50;;;41250:14;;;;41310:19;;;41250:14;39637:1708;-1:-1:-1;39637:1708:50:o;14:177:54:-;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;68:117;14:177;:::o;196:245::-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:258::-;710:1;720:113;734:6;731:1;728:13;720:113;;;810:11;;;804:18;791:11;;;784:39;756:2;749:10;720:113;;;851:6;848:1;845:13;842:48;;;-1:-1:-1;;886:1:54;868:16;;861:27;638:258::o;901:317::-;943:3;981:5;975:12;1008:6;1003:3;996:19;1024:63;1080:6;1073:4;1068:3;1064:14;1057:4;1050:5;1046:16;1024:63;:::i;:::-;1132:2;1120:15;1137:66;1116:88;1107:98;;;;1207:4;1103:109;;901:317;-1:-1:-1;;901:317:54:o;1223:220::-;1372:2;1361:9;1354:21;1335:4;1392:45;1433:2;1422:9;1418:18;1410:6;1392:45;:::i;1448:180::-;1507:6;1560:2;1548:9;1539:7;1535:23;1531:32;1528:52;;;1576:1;1573;1566:12;1528:52;-1:-1:-1;1599:23:54;;1448:180;-1:-1:-1;1448:180:54:o;1864:196::-;1932:20;;1992:42;1981:54;;1971:65;;1961:93;;2050:1;2047;2040:12;1961:93;1864:196;;;:::o;2065:254::-;2133:6;2141;2194:2;2182:9;2173:7;2169:23;2165:32;2162:52;;;2210:1;2207;2200:12;2162:52;2233:29;2252:9;2233:29;:::i;:::-;2223:39;2309:2;2294:18;;;;2281:32;;-1:-1:-1;;;2065:254:54:o;2506:328::-;2583:6;2591;2599;2652:2;2640:9;2631:7;2627:23;2623:32;2620:52;;;2668:1;2665;2658:12;2620:52;2691:29;2710:9;2691:29;:::i;:::-;2681:39;;2739:38;2773:2;2762:9;2758:18;2739:38;:::i;:::-;2729:48;;2824:2;2813:9;2809:18;2796:32;2786:42;;2506:328;;;;;:::o;2839:186::-;2898:6;2951:2;2939:9;2930:7;2926:23;2922:32;2919:52;;;2967:1;2964;2957:12;2919:52;2990:29;3009:9;2990:29;:::i;3030:347::-;3095:6;3103;3156:2;3144:9;3135:7;3131:23;3127:32;3124:52;;;3172:1;3169;3162:12;3124:52;3195:29;3214:9;3195:29;:::i;:::-;3185:39;;3274:2;3263:9;3259:18;3246:32;3321:5;3314:13;3307:21;3300:5;3297:32;3287:60;;3343:1;3340;3333:12;3287:60;3366:5;3356:15;;;3030:347;;;;;:::o;3382:184::-;3434:77;3431:1;3424:88;3531:4;3528:1;3521:15;3555:4;3552:1;3545:15;3571:1197;3666:6;3674;3682;3690;3743:3;3731:9;3722:7;3718:23;3714:33;3711:53;;;3760:1;3757;3750:12;3711:53;3783:29;3802:9;3783:29;:::i;:::-;3773:39;;3831:38;3865:2;3854:9;3850:18;3831:38;:::i;:::-;3821:48;;3916:2;3905:9;3901:18;3888:32;3878:42;;3971:2;3960:9;3956:18;3943:32;3994:18;4035:2;4027:6;4024:14;4021:34;;;4051:1;4048;4041:12;4021:34;4089:6;4078:9;4074:22;4064:32;;4134:7;4127:4;4123:2;4119:13;4115:27;4105:55;;4156:1;4153;4146:12;4105:55;4192:2;4179:16;4214:2;4210;4207:10;4204:36;;;4220:18;;:::i;:::-;4354:2;4348:9;4416:4;4408:13;;4259:66;4404:22;;;4428:2;4400:31;4396:40;4384:53;;;4452:18;;;4472:22;;;4449:46;4446:72;;;4498:18;;:::i;:::-;4538:10;4534:2;4527:22;4573:2;4565:6;4558:18;4613:7;4608:2;4603;4599;4595:11;4591:20;4588:33;4585:53;;;4634:1;4631;4624:12;4585:53;4690:2;4685;4681;4677:11;4672:2;4664:6;4660:15;4647:46;4735:1;4730:2;4725;4717:6;4713:15;4709:24;4702:35;4756:6;4746:16;;;;;;;3571:1197;;;;;;;:::o;4773:260::-;4841:6;4849;4902:2;4890:9;4881:7;4877:23;4873:32;4870:52;;;4918:1;4915;4908:12;4870:52;4941:29;4960:9;4941:29;:::i;:::-;4931:39;;4989:38;5023:2;5012:9;5008:18;4989:38;:::i;:::-;4979:48;;4773:260;;;;;:::o;5038:437::-;5117:1;5113:12;;;;5160;;;5181:61;;5235:4;5227:6;5223:17;5213:27;;5181:61;5288:2;5280:6;5277:14;5257:18;5254:38;5251:218;;5325:77;5322:1;5315:88;5426:4;5423:1;5416:15;5454:4;5451:1;5444:15;5251:218;;5038:437;;;:::o;5480:470::-;5659:3;5697:6;5691:13;5713:53;5759:6;5754:3;5747:4;5739:6;5735:17;5713:53;:::i;:::-;5829:13;;5788:16;;;;5851:57;5829:13;5788:16;5885:4;5873:17;;5851:57;:::i;:::-;5924:20;;5480:470;-1:-1:-1;;;;5480:470:54:o;5955:512::-;6149:4;6178:42;6259:2;6251:6;6247:15;6236:9;6229:34;6311:2;6303:6;6299:15;6294:2;6283:9;6279:18;6272:43;;6351:6;6346:2;6335:9;6331:18;6324:34;6394:3;6389:2;6378:9;6374:18;6367:31;6415:46;6456:3;6445:9;6441:19;6433:6;6415:46;:::i;:::-;6407:54;5955:512;-1:-1:-1;;;;;;5955:512:54:o;6472:249::-;6541:6;6594:2;6582:9;6573:7;6569:23;6565:32;6562:52;;;6610:1;6607;6600:12;6562:52;6642:9;6636:16;6661:30;6685:5;6661:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"909600","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2604","getApproved(uint256)":"6895","isApprovedForAll(address,address)":"infinite","name()":"infinite","ownerOf(uint256)":"infinite","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26580","supportsInterface(bytes4)":"456","symbol()":"infinite","tokenURI(uint256)":"infinite","totalSupply()":"4432","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfers(address,address,uint256,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfers(address,address,uint256,uint256)":"infinite","_burn(uint256)":"infinite","_burn(uint256,bool)":"infinite","_checkContractOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"4331","_extraData(address,address,uint24)":"infinite","_getApprovedSlotAndAddress(uint256)":"infinite","_getAux(address)":"infinite","_initializeOwnershipAt(uint256)":"infinite","_isSenderApprovedOrOwner(address,address,address)":"infinite","_mint(address,uint256)":"infinite","_mintERC2309(address,uint256)":"infinite","_msgSenderERC721A()":"infinite","_nextExtraData(address,address,uint256)":"infinite","_nextInitializedFlag(uint256)":"infinite","_nextTokenId()":"infinite","_numberBurned(address)":"infinite","_numberMinted(address)":"infinite","_ownershipAt(uint256)":"infinite","_ownershipOf(uint256)":"infinite","_packOwnershipData(address,uint256)":"infinite","_packedOwnershipOf(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_setAux(address,uint64)":"infinite","_setExtraDataAt(uint256,uint24)":"infinite","_startTokenId()":"infinite","_toString(uint256)":"infinite","_totalBurned()":"infinite","_totalMinted()":"infinite","_unpackedOwnership(uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceQueryForZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintERC2309QuantityExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintZeroQuantity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnerQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipNotInitializedForExtraData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromIncorrectOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToNonERC721ReceiverImplementer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"URIQueryForNonexistentToken\",\"type\":\"error\"},{\"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\":\"uint256\",\"name\":\"fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"ConsecutiveTransfer\",\"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\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":\"payable\",\"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\":\"payable\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721) Non-Fungible Token Standard, including the Metadata extension. Optimized for lower gas during batch mints. Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...) starting from `_startTokenId()`. Assumptions: - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply. - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).\",\"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}.\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\"},\"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 caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) to learn more about how these ids are created. This function call must use less than 30000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"totalSupply()\":{\"details\":\"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` from `from` to `to`. 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.\"}},\"title\":\"ERC721A\",\"version\":1},\"userdoc\":{\"errors\":{\"ApprovalCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"ApprovalQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"BalanceQueryForZeroAddress()\":[{\"notice\":\"Cannot query the balance for the zero address.\"}],\"MintERC2309QuantityExceedsLimit()\":[{\"notice\":\"The `quantity` minted with ERC2309 exceeds the safety limit.\"}],\"MintToZeroAddress()\":[{\"notice\":\"Cannot mint to the zero address.\"}],\"MintZeroQuantity()\":[{\"notice\":\"The quantity of tokens minted must be more than zero.\"}],\"OwnerQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"OwnershipNotInitializedForExtraData()\":[{\"notice\":\"The `extraData` cannot be set on an unintialized ownership slot.\"}],\"TransferCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"TransferFromIncorrectOwner()\":[{\"notice\":\"The token must be owned by `from`.\"}],\"TransferToNonERC721ReceiverImplementer()\":[{\"notice\":\"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface.\"}],\"TransferToZeroAddress()\":[{\"notice\":\"Cannot transfer to the zero address.\"}],\"URIQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"erc721a/contracts/ERC721A.sol\":\"ERC721A\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"erc721a/contracts/ERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport './IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC721 token receiver.\\n */\\ninterface ERC721A__IERC721Receiver {\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\\n/**\\n * @title ERC721A\\n *\\n * @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)\\n * Non-Fungible Token Standard, including the Metadata extension.\\n * Optimized for lower gas during batch mints.\\n *\\n * Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...)\\n * starting from `_startTokenId()`.\\n *\\n * Assumptions:\\n *\\n * - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply.\\n * - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).\\n */\\ncontract ERC721A is IERC721A {\\n    // Bypass for a `--via-ir` bug (https://github.com/chiru-labs/ERC721A/pull/364).\\n    struct TokenApprovalRef {\\n        address value;\\n    }\\n\\n    // =============================================================\\n    //                           CONSTANTS\\n    // =============================================================\\n\\n    // Mask of an entry in packed address data.\\n    uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;\\n\\n    // The bit position of `numberMinted` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_MINTED = 64;\\n\\n    // The bit position of `numberBurned` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_BURNED = 128;\\n\\n    // The bit position of `aux` in packed address data.\\n    uint256 private constant _BITPOS_AUX = 192;\\n\\n    // Mask of all 256 bits in packed address data except the 64 bits for `aux`.\\n    uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;\\n\\n    // The bit position of `startTimestamp` in packed ownership.\\n    uint256 private constant _BITPOS_START_TIMESTAMP = 160;\\n\\n    // The bit mask of the `burned` bit in packed ownership.\\n    uint256 private constant _BITMASK_BURNED = 1 << 224;\\n\\n    // The bit position of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;\\n\\n    // The bit mask of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;\\n\\n    // The bit position of `extraData` in packed ownership.\\n    uint256 private constant _BITPOS_EXTRA_DATA = 232;\\n\\n    // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`.\\n    uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1;\\n\\n    // The mask of the lower 160 bits for addresses.\\n    uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;\\n\\n    // The maximum `quantity` that can be minted with {_mintERC2309}.\\n    // This limit is to prevent overflows on the address data entries.\\n    // For a limit of 5000, a total of 3.689e15 calls to {_mintERC2309}\\n    // is required to cause an overflow, which is unrealistic.\\n    uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000;\\n\\n    // The `Transfer` event signature is given by:\\n    // `keccak256(bytes(\\\"Transfer(address,address,uint256)\\\"))`.\\n    bytes32 private constant _TRANSFER_EVENT_SIGNATURE =\\n        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;\\n\\n    // =============================================================\\n    //                            STORAGE\\n    // =============================================================\\n\\n    // The next token ID to be minted.\\n    uint256 private _currentIndex;\\n\\n    // The number of tokens burned.\\n    uint256 private _burnCounter;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to ownership details\\n    // An empty struct value does not necessarily mean the token is unowned.\\n    // See {_packedOwnershipOf} implementation for details.\\n    //\\n    // Bits Layout:\\n    // - [0..159]   `addr`\\n    // - [160..223] `startTimestamp`\\n    // - [224]      `burned`\\n    // - [225]      `nextInitialized`\\n    // - [232..255] `extraData`\\n    mapping(uint256 => uint256) private _packedOwnerships;\\n\\n    // Mapping owner address to address data.\\n    //\\n    // Bits Layout:\\n    // - [0..63]    `balance`\\n    // - [64..127]  `numberMinted`\\n    // - [128..191] `numberBurned`\\n    // - [192..255] `aux`\\n    mapping(address => uint256) private _packedAddressData;\\n\\n    // Mapping from token ID to approved address.\\n    mapping(uint256 => TokenApprovalRef) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    // =============================================================\\n    //                          CONSTRUCTOR\\n    // =============================================================\\n\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n        _currentIndex = _startTokenId();\\n    }\\n\\n    // =============================================================\\n    //                   TOKEN COUNTING OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the starting token ID.\\n     * To change the starting token ID, please override this function.\\n     */\\n    function _startTokenId() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Returns the next token ID to be minted.\\n     */\\n    function _nextTokenId() internal view virtual returns (uint256) {\\n        return _currentIndex;\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        // Counter underflow is impossible as _burnCounter cannot be incremented\\n        // more than `_currentIndex - _startTokenId()` times.\\n        unchecked {\\n            return _currentIndex - _burnCounter - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total amount of tokens minted in the contract.\\n     */\\n    function _totalMinted() internal view virtual returns (uint256) {\\n        // Counter underflow is impossible as `_currentIndex` does not decrement,\\n        // and it is initialized to `_startTokenId()`.\\n        unchecked {\\n            return _currentIndex - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens burned.\\n     */\\n    function _totalBurned() internal view virtual returns (uint256) {\\n        return _burnCounter;\\n    }\\n\\n    // =============================================================\\n    //                    ADDRESS DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the number of tokens in `owner`'s account.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        if (owner == address(0)) revert BalanceQueryForZeroAddress();\\n        return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens minted by `owner`.\\n     */\\n    function _numberMinted(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens burned by or on behalf of `owner`.\\n     */\\n    function _numberBurned(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     */\\n    function _getAux(address owner) internal view returns (uint64) {\\n        return uint64(_packedAddressData[owner] >> _BITPOS_AUX);\\n    }\\n\\n    /**\\n     * Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     * If there are multiple variables, please pack them into a uint64.\\n     */\\n    function _setAux(address owner, uint64 aux) internal virtual {\\n        uint256 packed = _packedAddressData[owner];\\n        uint256 auxCasted;\\n        // Cast `aux` with assembly to avoid redundant masking.\\n        assembly {\\n            auxCasted := aux\\n        }\\n        packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX);\\n        _packedAddressData[owner] = packed;\\n    }\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        // The interface IDs are constants representing the first 4 bytes\\n        // of the XOR of all function selectors in the interface.\\n        // See: [ERC165](https://eips.ethereum.org/EIPS/eip-165)\\n        // (e.g. `bytes4(i.functionA.selector ^ i.functionB.selector ^ ...)`)\\n        return\\n            interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165.\\n            interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721.\\n            interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata.\\n    }\\n\\n    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, it can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return '';\\n    }\\n\\n    // =============================================================\\n    //                     OWNERSHIPS OPERATIONS\\n    // =============================================================\\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) public view virtual override returns (address) {\\n        return address(uint160(_packedOwnershipOf(tokenId)));\\n    }\\n\\n    /**\\n     * @dev Gas spent here starts off proportional to the maximum mint batch size.\\n     * It gradually moves to O(1) as tokens get transferred around over time.\\n     */\\n    function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnershipOf(tokenId));\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct at `index`.\\n     */\\n    function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnerships[index]);\\n    }\\n\\n    /**\\n     * @dev Initializes the ownership slot minted at `index` for efficiency purposes.\\n     */\\n    function _initializeOwnershipAt(uint256 index) internal virtual {\\n        if (_packedOwnerships[index] == 0) {\\n            _packedOwnerships[index] = _packedOwnershipOf(index);\\n        }\\n    }\\n\\n    /**\\n     * Returns the packed ownership data of `tokenId`.\\n     */\\n    function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {\\n        uint256 curr = tokenId;\\n\\n        unchecked {\\n            if (_startTokenId() <= curr)\\n                if (curr < _currentIndex) {\\n                    uint256 packed = _packedOwnerships[curr];\\n                    // If not burned.\\n                    if (packed & _BITMASK_BURNED == 0) {\\n                        // Invariant:\\n                        // There will always be an initialized ownership slot\\n                        // (i.e. `ownership.addr != address(0) && ownership.burned == false`)\\n                        // before an unintialized ownership slot\\n                        // (i.e. `ownership.addr == address(0) && ownership.burned == false`)\\n                        // Hence, `curr` will not underflow.\\n                        //\\n                        // We can directly compare the packed value.\\n                        // If the address is zero, packed will be zero.\\n                        while (packed == 0) {\\n                            packed = _packedOwnerships[--curr];\\n                        }\\n                        return packed;\\n                    }\\n                }\\n        }\\n        revert OwnerQueryForNonexistentToken();\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct from `packed`.\\n     */\\n    function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {\\n        ownership.addr = address(uint160(packed));\\n        ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP);\\n        ownership.burned = packed & _BITMASK_BURNED != 0;\\n        ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA);\\n    }\\n\\n    /**\\n     * @dev Packs ownership data into a single uint256.\\n     */\\n    function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // `owner | (block.timestamp << _BITPOS_START_TIMESTAMP) | flags`.\\n            result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the `nextInitialized` flag set if `quantity` equals 1.\\n     */\\n    function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) {\\n        // For branchless setting of the `nextInitialized` flag.\\n        assembly {\\n            // `(quantity == 1) << _BITPOS_NEXT_INITIALIZED`.\\n            result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1))\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      APPROVAL OPERATIONS\\n    // =============================================================\\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\\n     * 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) public payable virtual override {\\n        address owner = ownerOf(tokenId);\\n\\n        if (_msgSenderERC721A() != owner)\\n            if (!isApprovedForAll(owner, _msgSenderERC721A())) {\\n                revert ApprovalCallerNotOwnerNorApproved();\\n            }\\n\\n        _tokenApprovals[tokenId].value = to;\\n        emit Approval(owner, to, tokenId);\\n    }\\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) public view virtual override returns (address) {\\n        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();\\n\\n        return _tokenApprovals[tokenId].value;\\n    }\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _operatorApprovals[_msgSenderERC721A()][operator] = approved;\\n        emit ApprovalForAll(_msgSenderERC721A(), operator, approved);\\n    }\\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) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted. See {_mint}.\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return\\n            _startTokenId() <= tokenId &&\\n            tokenId < _currentIndex && // If within bounds,\\n            _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.\\n    }\\n\\n    /**\\n     * @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.\\n     */\\n    function _isSenderApprovedOrOwner(\\n        address approvedAddress,\\n        address owner,\\n        address msgSender\\n    ) private pure returns (bool result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            msgSender := and(msgSender, _BITMASK_ADDRESS)\\n            // `msgSender == owner || msgSender == approvedAddress`.\\n            result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the storage slot and value for the approved address of `tokenId`.\\n     */\\n    function _getApprovedSlotAndAddress(uint256 tokenId)\\n        private\\n        view\\n        returns (uint256 approvedAddressSlot, address approvedAddress)\\n    {\\n        TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId];\\n        // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId].value`.\\n        assembly {\\n            approvedAddressSlot := tokenApproval.slot\\n            approvedAddress := sload(approvedAddressSlot)\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      TRANSFER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Transfers `tokenId` 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 be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner();\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        // The nested ifs save around 20+ gas over a compound boolean condition.\\n        if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n            if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n\\n        if (to == address(0)) revert TransferToZeroAddress();\\n\\n        _beforeTokenTransfers(from, to, tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // We can directly increment and decrement the balances.\\n            --_packedAddressData[from]; // Updates: `balance -= 1`.\\n            ++_packedAddressData[to]; // Updates: `balance += 1`.\\n\\n            // Updates:\\n            // - `address` to the next owner.\\n            // - `startTimestamp` to the timestamp of transfering.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                to,\\n                _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, to, tokenId);\\n        _afterTokenTransfers(from, to, tokenId, 1);\\n    }\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        safeTransferFrom(from, to, tokenId, '');\\n    }\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) public payable virtual override {\\n        transferFrom(from, to, tokenId);\\n        if (to.code.length != 0)\\n            if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before a set of serially-ordered token IDs\\n     * are about to be transferred. This includes minting.\\n     * And also called before burning one token.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _beforeTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after a set of serially-ordered token IDs\\n     * have been transferred. This includes minting.\\n     * And also called after one token has been burned.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` has been minted for `to`.\\n     * - When `to` is zero, `tokenId` has been burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _afterTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract.\\n     *\\n     * `from` - Previous owner of the given token ID.\\n     * `to` - Target address that will receive the token.\\n     * `tokenId` - Token ID to be transferred.\\n     * `_data` - Optional data to send along with the call.\\n     *\\n     * Returns whether the call correctly returned the expected magic value.\\n     */\\n    function _checkContractOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) private returns (bool) {\\n        try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (\\n            bytes4 retval\\n        ) {\\n            return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;\\n        } catch (bytes memory reason) {\\n            if (reason.length == 0) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            } else {\\n                assembly {\\n                    revert(add(32, reason), mload(reason))\\n                }\\n            }\\n        }\\n    }\\n\\n    // =============================================================\\n    //                        MINT OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _mint(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (quantity == 0) revert MintZeroQuantity();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are incredibly unrealistic.\\n        // `balance` and `numberMinted` have a maximum limit of 2**64.\\n        // `tokenId` has a maximum limit of 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            uint256 toMasked;\\n            uint256 end = startTokenId + quantity;\\n\\n            // Use assembly to loop and emit the `Transfer` event for gas savings.\\n            // The duplicated `log4` removes an extra check and reduces stack juggling.\\n            // The assembly, together with the surrounding Solidity code, have been\\n            // delicately arranged to nudge the compiler into producing optimized opcodes.\\n            assembly {\\n                // Mask `to` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n                toMasked := and(to, _BITMASK_ADDRESS)\\n                // Emit the `Transfer` event.\\n                log4(\\n                    0, // Start of data (0, since no data).\\n                    0, // End of data (0, since no data).\\n                    _TRANSFER_EVENT_SIGNATURE, // Signature.\\n                    0, // `address(0)`.\\n                    toMasked, // `to`.\\n                    startTokenId // `tokenId`.\\n                )\\n\\n                // The `iszero(eq(,))` check ensures that large values of `quantity`\\n                // that overflows uint256 will make the loop run out of gas.\\n                // The compiler will optimize the `iszero` away for performance.\\n                for {\\n                    let tokenId := add(startTokenId, 1)\\n                } iszero(eq(tokenId, end)) {\\n                    tokenId := add(tokenId, 1)\\n                } {\\n                    // Emit the `Transfer` event. Similar to above.\\n                    log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)\\n                }\\n            }\\n            if (toMasked == 0) revert MintToZeroAddress();\\n\\n            _currentIndex = end;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * This function is intended for efficient minting only during contract creation.\\n     *\\n     * It emits only one {ConsecutiveTransfer} as defined in\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309),\\n     * instead of a sequence of {Transfer} event(s).\\n     *\\n     * Calling this function outside of contract creation WILL make your contract\\n     * non-compliant with the ERC721 standard.\\n     * For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309\\n     * {ConsecutiveTransfer} event is only permissible during contract creation.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {ConsecutiveTransfer} event.\\n     */\\n    function _mintERC2309(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (to == address(0)) revert MintToZeroAddress();\\n        if (quantity == 0) revert MintZeroQuantity();\\n        if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are unrealistic due to the above check for `quantity` to be below the limit.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to);\\n\\n            _currentIndex = startTokenId + quantity;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Safely mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called for each safe transfer.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * See {_mint}.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 quantity,\\n        bytes memory _data\\n    ) internal virtual {\\n        _mint(to, quantity);\\n\\n        unchecked {\\n            if (to.code.length != 0) {\\n                uint256 end = _currentIndex;\\n                uint256 index = end - quantity;\\n                do {\\n                    if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {\\n                        revert TransferToNonERC721ReceiverImplementer();\\n                    }\\n                } while (index < end);\\n                // Reentrancy protection.\\n                if (_currentIndex != end) revert();\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Equivalent to `_safeMint(to, quantity, '')`.\\n     */\\n    function _safeMint(address to, uint256 quantity) internal virtual {\\n        _safeMint(to, quantity, '');\\n    }\\n\\n    // =============================================================\\n    //                        BURN OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Equivalent to `_burn(tokenId, false)`.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        _burn(tokenId, false);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId, bool approvalCheck) internal virtual {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        address from = address(uint160(prevOwnershipPacked));\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        if (approvalCheck) {\\n            // The nested ifs save around 20+ gas over a compound boolean condition.\\n            if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n                if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n        }\\n\\n        _beforeTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance -= 1`.\\n            // - `numberBurned += 1`.\\n            //\\n            // We can directly decrement the balance, and increment the number burned.\\n            // This is equivalent to `packed -= 1; packed += 1 << _BITPOS_NUMBER_BURNED;`.\\n            _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1;\\n\\n            // Updates:\\n            // - `address` to the last owner.\\n            // - `startTimestamp` to the timestamp of burning.\\n            // - `burned` to `true`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                from,\\n                (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, address(0), tokenId);\\n        _afterTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times.\\n        unchecked {\\n            _burnCounter++;\\n        }\\n    }\\n\\n    // =============================================================\\n    //                     EXTRA DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Directly sets the extra data for the ownership data `index`.\\n     */\\n    function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual {\\n        uint256 packed = _packedOwnerships[index];\\n        if (packed == 0) revert OwnershipNotInitializedForExtraData();\\n        uint256 extraDataCasted;\\n        // Cast `extraData` with assembly to avoid redundant masking.\\n        assembly {\\n            extraDataCasted := extraData\\n        }\\n        packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA);\\n        _packedOwnerships[index] = packed;\\n    }\\n\\n    /**\\n     * @dev Called during each token transfer to set the 24bit `extraData` field.\\n     * Intended to be overridden by the cosumer contract.\\n     *\\n     * `previousExtraData` - the value of `extraData` before transfer.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _extraData(\\n        address from,\\n        address to,\\n        uint24 previousExtraData\\n    ) internal view virtual returns (uint24) {}\\n\\n    /**\\n     * @dev Returns the next extra data for the packed ownership data.\\n     * The returned result is shifted into position.\\n     */\\n    function _nextExtraData(\\n        address from,\\n        address to,\\n        uint256 prevOwnershipPacked\\n    ) private view returns (uint256) {\\n        uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA);\\n        return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA;\\n    }\\n\\n    // =============================================================\\n    //                       OTHER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the message sender (defaults to `msg.sender`).\\n     *\\n     * If you are writing GSN compatible contracts, you need to override this function.\\n     */\\n    function _msgSenderERC721A() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    /**\\n     * @dev Converts a uint256 to its ASCII string decimal representation.\\n     */\\n    function _toString(uint256 value) internal pure virtual returns (string memory str) {\\n        assembly {\\n            // The maximum value of a uint256 contains 78 digits (1 byte per digit), but\\n            // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.\\n            // We will need 1 word for the trailing zeros padding, 1 word for the length,\\n            // and 3 words for a maximum of 78 digits. Total: 5 * 0x20 = 0xa0.\\n            let m := add(mload(0x40), 0xa0)\\n            // Update the free memory pointer to allocate.\\n            mstore(0x40, m)\\n            // Assign the `str` to the end.\\n            str := sub(m, 0x20)\\n            // Zeroize the slot after the string.\\n            mstore(str, 0)\\n\\n            // Cache the end of the memory to calculate the length later.\\n            let end := str\\n\\n            // We write the string from rightmost digit to leftmost digit.\\n            // The following is essentially a do-while loop that also handles the zero case.\\n            // prettier-ignore\\n            for { let temp := value } 1 {} {\\n                str := sub(str, 1)\\n                // Write the character to the pointer.\\n                // The ASCII index of the '0' character is 48.\\n                mstore8(str, add(48, mod(temp, 10)))\\n                // Keep dividing `temp` until zero.\\n                temp := div(temp, 10)\\n                // prettier-ignore\\n                if iszero(temp) { break }\\n            }\\n\\n            let length := sub(end, str)\\n            // Move the pointer 32 bytes leftwards to make room for the length.\\n            str := sub(str, 0x20)\\n            // Store the length.\\n            mstore(str, length)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x23116c16976b7d8c0c714ba1b38ae6b16c16fc90ec69b568fb1ebf1bc063e01c\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":8612,"contract":"erc721a/contracts/ERC721A.sol:ERC721A","label":"_currentIndex","offset":0,"slot":"0","type":"t_uint256"},{"astId":8614,"contract":"erc721a/contracts/ERC721A.sol:ERC721A","label":"_burnCounter","offset":0,"slot":"1","type":"t_uint256"},{"astId":8616,"contract":"erc721a/contracts/ERC721A.sol:ERC721A","label":"_name","offset":0,"slot":"2","type":"t_string_storage"},{"astId":8618,"contract":"erc721a/contracts/ERC721A.sol:ERC721A","label":"_symbol","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8622,"contract":"erc721a/contracts/ERC721A.sol:ERC721A","label":"_packedOwnerships","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_uint256)"},{"astId":8626,"contract":"erc721a/contracts/ERC721A.sol:ERC721A","label":"_packedAddressData","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint256)"},{"astId":8631,"contract":"erc721a/contracts/ERC721A.sol:ERC721A","label":"_tokenApprovals","offset":0,"slot":"6","type":"t_mapping(t_uint256,t_struct(TokenApprovalRef)8544_storage)"},{"astId":8637,"contract":"erc721a/contracts/ERC721A.sol:ERC721A","label":"_operatorApprovals","offset":0,"slot":"7","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"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_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"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(TokenApprovalRef)8544_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct ERC721A.TokenApprovalRef)","numberOfBytes":"32","value":"t_struct(TokenApprovalRef)8544_storage"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(TokenApprovalRef)8544_storage":{"encoding":"inplace","label":"struct ERC721A.TokenApprovalRef","members":[{"astId":8543,"contract":"erc721a/contracts/ERC721A.sol:ERC721A","label":"value","offset":0,"slot":"0","type":"t_address"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"errors":{"ApprovalCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"ApprovalQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"BalanceQueryForZeroAddress()":[{"notice":"Cannot query the balance for the zero address."}],"MintERC2309QuantityExceedsLimit()":[{"notice":"The `quantity` minted with ERC2309 exceeds the safety limit."}],"MintToZeroAddress()":[{"notice":"Cannot mint to the zero address."}],"MintZeroQuantity()":[{"notice":"The quantity of tokens minted must be more than zero."}],"OwnerQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"OwnershipNotInitializedForExtraData()":[{"notice":"The `extraData` cannot be set on an unintialized ownership slot."}],"TransferCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"TransferFromIncorrectOwner()":[{"notice":"The token must be owned by `from`."}],"TransferToNonERC721ReceiverImplementer()":[{"notice":"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface."}],"TransferToZeroAddress()":[{"notice":"Cannot transfer to the zero address."}],"URIQueryForNonexistentToken()":[{"notice":"The token does not exist."}]},"kind":"user","methods":{},"version":1}},"ERC721A__IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of ERC721 token receiver.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of ERC721 token receiver.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"erc721a/contracts/ERC721A.sol\":\"ERC721A__IERC721Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"erc721a/contracts/ERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport './IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC721 token receiver.\\n */\\ninterface ERC721A__IERC721Receiver {\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\\n/**\\n * @title ERC721A\\n *\\n * @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)\\n * Non-Fungible Token Standard, including the Metadata extension.\\n * Optimized for lower gas during batch mints.\\n *\\n * Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...)\\n * starting from `_startTokenId()`.\\n *\\n * Assumptions:\\n *\\n * - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply.\\n * - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).\\n */\\ncontract ERC721A is IERC721A {\\n    // Bypass for a `--via-ir` bug (https://github.com/chiru-labs/ERC721A/pull/364).\\n    struct TokenApprovalRef {\\n        address value;\\n    }\\n\\n    // =============================================================\\n    //                           CONSTANTS\\n    // =============================================================\\n\\n    // Mask of an entry in packed address data.\\n    uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;\\n\\n    // The bit position of `numberMinted` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_MINTED = 64;\\n\\n    // The bit position of `numberBurned` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_BURNED = 128;\\n\\n    // The bit position of `aux` in packed address data.\\n    uint256 private constant _BITPOS_AUX = 192;\\n\\n    // Mask of all 256 bits in packed address data except the 64 bits for `aux`.\\n    uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;\\n\\n    // The bit position of `startTimestamp` in packed ownership.\\n    uint256 private constant _BITPOS_START_TIMESTAMP = 160;\\n\\n    // The bit mask of the `burned` bit in packed ownership.\\n    uint256 private constant _BITMASK_BURNED = 1 << 224;\\n\\n    // The bit position of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;\\n\\n    // The bit mask of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;\\n\\n    // The bit position of `extraData` in packed ownership.\\n    uint256 private constant _BITPOS_EXTRA_DATA = 232;\\n\\n    // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`.\\n    uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1;\\n\\n    // The mask of the lower 160 bits for addresses.\\n    uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;\\n\\n    // The maximum `quantity` that can be minted with {_mintERC2309}.\\n    // This limit is to prevent overflows on the address data entries.\\n    // For a limit of 5000, a total of 3.689e15 calls to {_mintERC2309}\\n    // is required to cause an overflow, which is unrealistic.\\n    uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000;\\n\\n    // The `Transfer` event signature is given by:\\n    // `keccak256(bytes(\\\"Transfer(address,address,uint256)\\\"))`.\\n    bytes32 private constant _TRANSFER_EVENT_SIGNATURE =\\n        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;\\n\\n    // =============================================================\\n    //                            STORAGE\\n    // =============================================================\\n\\n    // The next token ID to be minted.\\n    uint256 private _currentIndex;\\n\\n    // The number of tokens burned.\\n    uint256 private _burnCounter;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to ownership details\\n    // An empty struct value does not necessarily mean the token is unowned.\\n    // See {_packedOwnershipOf} implementation for details.\\n    //\\n    // Bits Layout:\\n    // - [0..159]   `addr`\\n    // - [160..223] `startTimestamp`\\n    // - [224]      `burned`\\n    // - [225]      `nextInitialized`\\n    // - [232..255] `extraData`\\n    mapping(uint256 => uint256) private _packedOwnerships;\\n\\n    // Mapping owner address to address data.\\n    //\\n    // Bits Layout:\\n    // - [0..63]    `balance`\\n    // - [64..127]  `numberMinted`\\n    // - [128..191] `numberBurned`\\n    // - [192..255] `aux`\\n    mapping(address => uint256) private _packedAddressData;\\n\\n    // Mapping from token ID to approved address.\\n    mapping(uint256 => TokenApprovalRef) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    // =============================================================\\n    //                          CONSTRUCTOR\\n    // =============================================================\\n\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n        _currentIndex = _startTokenId();\\n    }\\n\\n    // =============================================================\\n    //                   TOKEN COUNTING OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the starting token ID.\\n     * To change the starting token ID, please override this function.\\n     */\\n    function _startTokenId() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Returns the next token ID to be minted.\\n     */\\n    function _nextTokenId() internal view virtual returns (uint256) {\\n        return _currentIndex;\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        // Counter underflow is impossible as _burnCounter cannot be incremented\\n        // more than `_currentIndex - _startTokenId()` times.\\n        unchecked {\\n            return _currentIndex - _burnCounter - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total amount of tokens minted in the contract.\\n     */\\n    function _totalMinted() internal view virtual returns (uint256) {\\n        // Counter underflow is impossible as `_currentIndex` does not decrement,\\n        // and it is initialized to `_startTokenId()`.\\n        unchecked {\\n            return _currentIndex - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens burned.\\n     */\\n    function _totalBurned() internal view virtual returns (uint256) {\\n        return _burnCounter;\\n    }\\n\\n    // =============================================================\\n    //                    ADDRESS DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the number of tokens in `owner`'s account.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        if (owner == address(0)) revert BalanceQueryForZeroAddress();\\n        return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens minted by `owner`.\\n     */\\n    function _numberMinted(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens burned by or on behalf of `owner`.\\n     */\\n    function _numberBurned(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     */\\n    function _getAux(address owner) internal view returns (uint64) {\\n        return uint64(_packedAddressData[owner] >> _BITPOS_AUX);\\n    }\\n\\n    /**\\n     * Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     * If there are multiple variables, please pack them into a uint64.\\n     */\\n    function _setAux(address owner, uint64 aux) internal virtual {\\n        uint256 packed = _packedAddressData[owner];\\n        uint256 auxCasted;\\n        // Cast `aux` with assembly to avoid redundant masking.\\n        assembly {\\n            auxCasted := aux\\n        }\\n        packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX);\\n        _packedAddressData[owner] = packed;\\n    }\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        // The interface IDs are constants representing the first 4 bytes\\n        // of the XOR of all function selectors in the interface.\\n        // See: [ERC165](https://eips.ethereum.org/EIPS/eip-165)\\n        // (e.g. `bytes4(i.functionA.selector ^ i.functionB.selector ^ ...)`)\\n        return\\n            interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165.\\n            interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721.\\n            interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata.\\n    }\\n\\n    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, it can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return '';\\n    }\\n\\n    // =============================================================\\n    //                     OWNERSHIPS OPERATIONS\\n    // =============================================================\\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) public view virtual override returns (address) {\\n        return address(uint160(_packedOwnershipOf(tokenId)));\\n    }\\n\\n    /**\\n     * @dev Gas spent here starts off proportional to the maximum mint batch size.\\n     * It gradually moves to O(1) as tokens get transferred around over time.\\n     */\\n    function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnershipOf(tokenId));\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct at `index`.\\n     */\\n    function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnerships[index]);\\n    }\\n\\n    /**\\n     * @dev Initializes the ownership slot minted at `index` for efficiency purposes.\\n     */\\n    function _initializeOwnershipAt(uint256 index) internal virtual {\\n        if (_packedOwnerships[index] == 0) {\\n            _packedOwnerships[index] = _packedOwnershipOf(index);\\n        }\\n    }\\n\\n    /**\\n     * Returns the packed ownership data of `tokenId`.\\n     */\\n    function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {\\n        uint256 curr = tokenId;\\n\\n        unchecked {\\n            if (_startTokenId() <= curr)\\n                if (curr < _currentIndex) {\\n                    uint256 packed = _packedOwnerships[curr];\\n                    // If not burned.\\n                    if (packed & _BITMASK_BURNED == 0) {\\n                        // Invariant:\\n                        // There will always be an initialized ownership slot\\n                        // (i.e. `ownership.addr != address(0) && ownership.burned == false`)\\n                        // before an unintialized ownership slot\\n                        // (i.e. `ownership.addr == address(0) && ownership.burned == false`)\\n                        // Hence, `curr` will not underflow.\\n                        //\\n                        // We can directly compare the packed value.\\n                        // If the address is zero, packed will be zero.\\n                        while (packed == 0) {\\n                            packed = _packedOwnerships[--curr];\\n                        }\\n                        return packed;\\n                    }\\n                }\\n        }\\n        revert OwnerQueryForNonexistentToken();\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct from `packed`.\\n     */\\n    function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {\\n        ownership.addr = address(uint160(packed));\\n        ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP);\\n        ownership.burned = packed & _BITMASK_BURNED != 0;\\n        ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA);\\n    }\\n\\n    /**\\n     * @dev Packs ownership data into a single uint256.\\n     */\\n    function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // `owner | (block.timestamp << _BITPOS_START_TIMESTAMP) | flags`.\\n            result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the `nextInitialized` flag set if `quantity` equals 1.\\n     */\\n    function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) {\\n        // For branchless setting of the `nextInitialized` flag.\\n        assembly {\\n            // `(quantity == 1) << _BITPOS_NEXT_INITIALIZED`.\\n            result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1))\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      APPROVAL OPERATIONS\\n    // =============================================================\\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\\n     * 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) public payable virtual override {\\n        address owner = ownerOf(tokenId);\\n\\n        if (_msgSenderERC721A() != owner)\\n            if (!isApprovedForAll(owner, _msgSenderERC721A())) {\\n                revert ApprovalCallerNotOwnerNorApproved();\\n            }\\n\\n        _tokenApprovals[tokenId].value = to;\\n        emit Approval(owner, to, tokenId);\\n    }\\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) public view virtual override returns (address) {\\n        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();\\n\\n        return _tokenApprovals[tokenId].value;\\n    }\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _operatorApprovals[_msgSenderERC721A()][operator] = approved;\\n        emit ApprovalForAll(_msgSenderERC721A(), operator, approved);\\n    }\\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) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted. See {_mint}.\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return\\n            _startTokenId() <= tokenId &&\\n            tokenId < _currentIndex && // If within bounds,\\n            _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.\\n    }\\n\\n    /**\\n     * @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.\\n     */\\n    function _isSenderApprovedOrOwner(\\n        address approvedAddress,\\n        address owner,\\n        address msgSender\\n    ) private pure returns (bool result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            msgSender := and(msgSender, _BITMASK_ADDRESS)\\n            // `msgSender == owner || msgSender == approvedAddress`.\\n            result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the storage slot and value for the approved address of `tokenId`.\\n     */\\n    function _getApprovedSlotAndAddress(uint256 tokenId)\\n        private\\n        view\\n        returns (uint256 approvedAddressSlot, address approvedAddress)\\n    {\\n        TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId];\\n        // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId].value`.\\n        assembly {\\n            approvedAddressSlot := tokenApproval.slot\\n            approvedAddress := sload(approvedAddressSlot)\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      TRANSFER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Transfers `tokenId` 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 be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner();\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        // The nested ifs save around 20+ gas over a compound boolean condition.\\n        if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n            if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n\\n        if (to == address(0)) revert TransferToZeroAddress();\\n\\n        _beforeTokenTransfers(from, to, tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // We can directly increment and decrement the balances.\\n            --_packedAddressData[from]; // Updates: `balance -= 1`.\\n            ++_packedAddressData[to]; // Updates: `balance += 1`.\\n\\n            // Updates:\\n            // - `address` to the next owner.\\n            // - `startTimestamp` to the timestamp of transfering.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                to,\\n                _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, to, tokenId);\\n        _afterTokenTransfers(from, to, tokenId, 1);\\n    }\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        safeTransferFrom(from, to, tokenId, '');\\n    }\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) public payable virtual override {\\n        transferFrom(from, to, tokenId);\\n        if (to.code.length != 0)\\n            if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before a set of serially-ordered token IDs\\n     * are about to be transferred. This includes minting.\\n     * And also called before burning one token.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _beforeTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after a set of serially-ordered token IDs\\n     * have been transferred. This includes minting.\\n     * And also called after one token has been burned.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` has been minted for `to`.\\n     * - When `to` is zero, `tokenId` has been burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _afterTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract.\\n     *\\n     * `from` - Previous owner of the given token ID.\\n     * `to` - Target address that will receive the token.\\n     * `tokenId` - Token ID to be transferred.\\n     * `_data` - Optional data to send along with the call.\\n     *\\n     * Returns whether the call correctly returned the expected magic value.\\n     */\\n    function _checkContractOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) private returns (bool) {\\n        try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (\\n            bytes4 retval\\n        ) {\\n            return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;\\n        } catch (bytes memory reason) {\\n            if (reason.length == 0) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            } else {\\n                assembly {\\n                    revert(add(32, reason), mload(reason))\\n                }\\n            }\\n        }\\n    }\\n\\n    // =============================================================\\n    //                        MINT OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _mint(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (quantity == 0) revert MintZeroQuantity();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are incredibly unrealistic.\\n        // `balance` and `numberMinted` have a maximum limit of 2**64.\\n        // `tokenId` has a maximum limit of 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            uint256 toMasked;\\n            uint256 end = startTokenId + quantity;\\n\\n            // Use assembly to loop and emit the `Transfer` event for gas savings.\\n            // The duplicated `log4` removes an extra check and reduces stack juggling.\\n            // The assembly, together with the surrounding Solidity code, have been\\n            // delicately arranged to nudge the compiler into producing optimized opcodes.\\n            assembly {\\n                // Mask `to` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n                toMasked := and(to, _BITMASK_ADDRESS)\\n                // Emit the `Transfer` event.\\n                log4(\\n                    0, // Start of data (0, since no data).\\n                    0, // End of data (0, since no data).\\n                    _TRANSFER_EVENT_SIGNATURE, // Signature.\\n                    0, // `address(0)`.\\n                    toMasked, // `to`.\\n                    startTokenId // `tokenId`.\\n                )\\n\\n                // The `iszero(eq(,))` check ensures that large values of `quantity`\\n                // that overflows uint256 will make the loop run out of gas.\\n                // The compiler will optimize the `iszero` away for performance.\\n                for {\\n                    let tokenId := add(startTokenId, 1)\\n                } iszero(eq(tokenId, end)) {\\n                    tokenId := add(tokenId, 1)\\n                } {\\n                    // Emit the `Transfer` event. Similar to above.\\n                    log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)\\n                }\\n            }\\n            if (toMasked == 0) revert MintToZeroAddress();\\n\\n            _currentIndex = end;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * This function is intended for efficient minting only during contract creation.\\n     *\\n     * It emits only one {ConsecutiveTransfer} as defined in\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309),\\n     * instead of a sequence of {Transfer} event(s).\\n     *\\n     * Calling this function outside of contract creation WILL make your contract\\n     * non-compliant with the ERC721 standard.\\n     * For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309\\n     * {ConsecutiveTransfer} event is only permissible during contract creation.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {ConsecutiveTransfer} event.\\n     */\\n    function _mintERC2309(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (to == address(0)) revert MintToZeroAddress();\\n        if (quantity == 0) revert MintZeroQuantity();\\n        if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are unrealistic due to the above check for `quantity` to be below the limit.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to);\\n\\n            _currentIndex = startTokenId + quantity;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Safely mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called for each safe transfer.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * See {_mint}.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 quantity,\\n        bytes memory _data\\n    ) internal virtual {\\n        _mint(to, quantity);\\n\\n        unchecked {\\n            if (to.code.length != 0) {\\n                uint256 end = _currentIndex;\\n                uint256 index = end - quantity;\\n                do {\\n                    if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {\\n                        revert TransferToNonERC721ReceiverImplementer();\\n                    }\\n                } while (index < end);\\n                // Reentrancy protection.\\n                if (_currentIndex != end) revert();\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Equivalent to `_safeMint(to, quantity, '')`.\\n     */\\n    function _safeMint(address to, uint256 quantity) internal virtual {\\n        _safeMint(to, quantity, '');\\n    }\\n\\n    // =============================================================\\n    //                        BURN OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Equivalent to `_burn(tokenId, false)`.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        _burn(tokenId, false);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId, bool approvalCheck) internal virtual {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        address from = address(uint160(prevOwnershipPacked));\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        if (approvalCheck) {\\n            // The nested ifs save around 20+ gas over a compound boolean condition.\\n            if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n                if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n        }\\n\\n        _beforeTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance -= 1`.\\n            // - `numberBurned += 1`.\\n            //\\n            // We can directly decrement the balance, and increment the number burned.\\n            // This is equivalent to `packed -= 1; packed += 1 << _BITPOS_NUMBER_BURNED;`.\\n            _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1;\\n\\n            // Updates:\\n            // - `address` to the last owner.\\n            // - `startTimestamp` to the timestamp of burning.\\n            // - `burned` to `true`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                from,\\n                (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, address(0), tokenId);\\n        _afterTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times.\\n        unchecked {\\n            _burnCounter++;\\n        }\\n    }\\n\\n    // =============================================================\\n    //                     EXTRA DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Directly sets the extra data for the ownership data `index`.\\n     */\\n    function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual {\\n        uint256 packed = _packedOwnerships[index];\\n        if (packed == 0) revert OwnershipNotInitializedForExtraData();\\n        uint256 extraDataCasted;\\n        // Cast `extraData` with assembly to avoid redundant masking.\\n        assembly {\\n            extraDataCasted := extraData\\n        }\\n        packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA);\\n        _packedOwnerships[index] = packed;\\n    }\\n\\n    /**\\n     * @dev Called during each token transfer to set the 24bit `extraData` field.\\n     * Intended to be overridden by the cosumer contract.\\n     *\\n     * `previousExtraData` - the value of `extraData` before transfer.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _extraData(\\n        address from,\\n        address to,\\n        uint24 previousExtraData\\n    ) internal view virtual returns (uint24) {}\\n\\n    /**\\n     * @dev Returns the next extra data for the packed ownership data.\\n     * The returned result is shifted into position.\\n     */\\n    function _nextExtraData(\\n        address from,\\n        address to,\\n        uint256 prevOwnershipPacked\\n    ) private view returns (uint256) {\\n        uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA);\\n        return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA;\\n    }\\n\\n    // =============================================================\\n    //                       OTHER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the message sender (defaults to `msg.sender`).\\n     *\\n     * If you are writing GSN compatible contracts, you need to override this function.\\n     */\\n    function _msgSenderERC721A() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    /**\\n     * @dev Converts a uint256 to its ASCII string decimal representation.\\n     */\\n    function _toString(uint256 value) internal pure virtual returns (string memory str) {\\n        assembly {\\n            // The maximum value of a uint256 contains 78 digits (1 byte per digit), but\\n            // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.\\n            // We will need 1 word for the trailing zeros padding, 1 word for the length,\\n            // and 3 words for a maximum of 78 digits. Total: 5 * 0x20 = 0xa0.\\n            let m := add(mload(0x40), 0xa0)\\n            // Update the free memory pointer to allocate.\\n            mstore(0x40, m)\\n            // Assign the `str` to the end.\\n            str := sub(m, 0x20)\\n            // Zeroize the slot after the string.\\n            mstore(str, 0)\\n\\n            // Cache the end of the memory to calculate the length later.\\n            let end := str\\n\\n            // We write the string from rightmost digit to leftmost digit.\\n            // The following is essentially a do-while loop that also handles the zero case.\\n            // prettier-ignore\\n            for { let temp := value } 1 {} {\\n                str := sub(str, 1)\\n                // Write the character to the pointer.\\n                // The ASCII index of the '0' character is 48.\\n                mstore8(str, add(48, mod(temp, 10)))\\n                // Keep dividing `temp` until zero.\\n                temp := div(temp, 10)\\n                // prettier-ignore\\n                if iszero(temp) { break }\\n            }\\n\\n            let length := sub(end, str)\\n            // Move the pointer 32 bytes leftwards to make room for the length.\\n            str := sub(str, 0x20)\\n            // Store the length.\\n            mstore(str, length)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x23116c16976b7d8c0c714ba1b38ae6b16c16fc90ec69b568fb1ebf1bc063e01c\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"erc721a/contracts/IERC721A.sol":{"IERC721A":{"abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","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":"payable","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"payable","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":"payable","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"Interface of ERC721A.","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."},"ConsecutiveTransfer(uint256,uint256,address,address)":{"details":"Emitted when tokens in `fromTokenId` to `toTokenId` (inclusive) is transferred from `from` to `to`, as defined in the [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard. See {_mintERC2309} for more details."},"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}."},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Equivalent to `safeTransferFrom(from, to, tokenId, '')`."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 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 be 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."},"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 caller. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) to learn more about how these ids are created. This function call must use less than 30000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"totalSupply()":{"details":"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. 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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ApprovalCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceQueryForZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintERC2309QuantityExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintZeroQuantity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnerQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipNotInitializedForExtraData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromIncorrectOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToNonERC721ReceiverImplementer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"URIQueryForNonexistentToken\",\"type\":\"error\"},{\"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\":\"uint256\",\"name\":\"fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"ConsecutiveTransfer\",\"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\":\"payable\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"payable\",\"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\":\"payable\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of ERC721A.\",\"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.\"},\"ConsecutiveTransfer(uint256,uint256,address,address)\":{\"details\":\"Emitted when tokens in `fromTokenId` to `toTokenId` (inclusive) is transferred from `from` to `to`, as defined in the [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard. See {_mintERC2309} for more details.\"},\"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}.\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 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 be 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.\"},\"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 caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) to learn more about how these ids are created. This function call must use less than 30000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"totalSupply()\":{\"details\":\"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. 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\":{\"errors\":{\"ApprovalCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"ApprovalQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"BalanceQueryForZeroAddress()\":[{\"notice\":\"Cannot query the balance for the zero address.\"}],\"MintERC2309QuantityExceedsLimit()\":[{\"notice\":\"The `quantity` minted with ERC2309 exceeds the safety limit.\"}],\"MintToZeroAddress()\":[{\"notice\":\"Cannot mint to the zero address.\"}],\"MintZeroQuantity()\":[{\"notice\":\"The quantity of tokens minted must be more than zero.\"}],\"OwnerQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"OwnershipNotInitializedForExtraData()\":[{\"notice\":\"The `extraData` cannot be set on an unintialized ownership slot.\"}],\"TransferCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"TransferFromIncorrectOwner()\":[{\"notice\":\"The token must be owned by `from`.\"}],\"TransferToNonERC721ReceiverImplementer()\":[{\"notice\":\"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface.\"}],\"TransferToZeroAddress()\":[{\"notice\":\"Cannot transfer to the zero address.\"}],\"URIQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"erc721a/contracts/IERC721A.sol\":\"IERC721A\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"ApprovalCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"ApprovalQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"BalanceQueryForZeroAddress()":[{"notice":"Cannot query the balance for the zero address."}],"MintERC2309QuantityExceedsLimit()":[{"notice":"The `quantity` minted with ERC2309 exceeds the safety limit."}],"MintToZeroAddress()":[{"notice":"Cannot mint to the zero address."}],"MintZeroQuantity()":[{"notice":"The quantity of tokens minted must be more than zero."}],"OwnerQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"OwnershipNotInitializedForExtraData()":[{"notice":"The `extraData` cannot be set on an unintialized ownership slot."}],"TransferCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"TransferFromIncorrectOwner()":[{"notice":"The token must be owned by `from`."}],"TransferToNonERC721ReceiverImplementer()":[{"notice":"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface."}],"TransferToZeroAddress()":[{"notice":"Cannot transfer to the zero address."}],"URIQueryForNonexistentToken()":[{"notice":"The token does not exist."}]},"kind":"user","methods":{},"version":1}}},"erc721a/contracts/extensions/ERC4907A.sol":{"ERC4907A":{"abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"SetUserCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint64","name":"expires","type":"uint64"}],"name":"UpdateUser","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":"payable","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":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint64","name":"expires","type":"uint64"}],"name":"setUser","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"userExpires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"userOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"[ERC4907](https://eips.ethereum.org/EIPS/eip-4907) compliant extension of ERC721A, which allows owners and authorized addresses to add a time-limited role with restricted permissions to ERC721 tokens.","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}."},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Equivalent to `safeTransferFrom(from, to, tokenId, '')`."},"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 caller. Emits an {ApprovalForAll} event."},"setUser(uint256,address,uint64)":{"details":"Sets the `user` and `expires` for `tokenId`. The zero address indicates there is no user. Requirements: - The caller must own `tokenId` or be an approved operator."},"supportsInterface(bytes4)":{"details":"Override of {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"totalSupply()":{"details":"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` from `from` to `to`. 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."},"userExpires(uint256)":{"details":"Returns the user's expires of `tokenId`."},"userOf(uint256)":{"details":"Returns the user address for `tokenId`. The zero address indicates that there is no user or if the user is expired."}},"title":"ERC4907A","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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","setUser(uint256,address,uint64)":"e030565e","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","userExpires(uint256)":"8fc88c48","userOf(uint256)":"c2f1f14a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ApprovalCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceQueryForZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintERC2309QuantityExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintZeroQuantity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnerQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipNotInitializedForExtraData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SetUserCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromIncorrectOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToNonERC721ReceiverImplementer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"URIQueryForNonexistentToken\",\"type\":\"error\"},{\"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\":\"uint256\",\"name\":\"fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"ConsecutiveTransfer\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"UpdateUser\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":\"payable\",\"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\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"setUser\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"userExpires\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"userOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"[ERC4907](https://eips.ethereum.org/EIPS/eip-4907) compliant extension of ERC721A, which allows owners and authorized addresses to add a time-limited role with restricted permissions to ERC721 tokens.\",\"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}.\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\"},\"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 caller. Emits an {ApprovalForAll} event.\"},\"setUser(uint256,address,uint64)\":{\"details\":\"Sets the `user` and `expires` for `tokenId`. The zero address indicates there is no user. Requirements: - The caller must own `tokenId` or be an approved operator.\"},\"supportsInterface(bytes4)\":{\"details\":\"Override of {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"totalSupply()\":{\"details\":\"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` from `from` to `to`. 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.\"},\"userExpires(uint256)\":{\"details\":\"Returns the user's expires of `tokenId`.\"},\"userOf(uint256)\":{\"details\":\"Returns the user address for `tokenId`. The zero address indicates that there is no user or if the user is expired.\"}},\"title\":\"ERC4907A\",\"version\":1},\"userdoc\":{\"errors\":{\"ApprovalCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"ApprovalQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"BalanceQueryForZeroAddress()\":[{\"notice\":\"Cannot query the balance for the zero address.\"}],\"MintERC2309QuantityExceedsLimit()\":[{\"notice\":\"The `quantity` minted with ERC2309 exceeds the safety limit.\"}],\"MintToZeroAddress()\":[{\"notice\":\"Cannot mint to the zero address.\"}],\"MintZeroQuantity()\":[{\"notice\":\"The quantity of tokens minted must be more than zero.\"}],\"OwnerQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"OwnershipNotInitializedForExtraData()\":[{\"notice\":\"The `extraData` cannot be set on an unintialized ownership slot.\"}],\"SetUserCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"TransferCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"TransferFromIncorrectOwner()\":[{\"notice\":\"The token must be owned by `from`.\"}],\"TransferToNonERC721ReceiverImplementer()\":[{\"notice\":\"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface.\"}],\"TransferToZeroAddress()\":[{\"notice\":\"Cannot transfer to the zero address.\"}],\"URIQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"erc721a/contracts/extensions/ERC4907A.sol\":\"ERC4907A\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"erc721a/contracts/ERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport './IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC721 token receiver.\\n */\\ninterface ERC721A__IERC721Receiver {\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\\n/**\\n * @title ERC721A\\n *\\n * @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)\\n * Non-Fungible Token Standard, including the Metadata extension.\\n * Optimized for lower gas during batch mints.\\n *\\n * Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...)\\n * starting from `_startTokenId()`.\\n *\\n * Assumptions:\\n *\\n * - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply.\\n * - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).\\n */\\ncontract ERC721A is IERC721A {\\n    // Bypass for a `--via-ir` bug (https://github.com/chiru-labs/ERC721A/pull/364).\\n    struct TokenApprovalRef {\\n        address value;\\n    }\\n\\n    // =============================================================\\n    //                           CONSTANTS\\n    // =============================================================\\n\\n    // Mask of an entry in packed address data.\\n    uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;\\n\\n    // The bit position of `numberMinted` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_MINTED = 64;\\n\\n    // The bit position of `numberBurned` in packed address data.\\n    uint256 private constant _BITPOS_NUMBER_BURNED = 128;\\n\\n    // The bit position of `aux` in packed address data.\\n    uint256 private constant _BITPOS_AUX = 192;\\n\\n    // Mask of all 256 bits in packed address data except the 64 bits for `aux`.\\n    uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;\\n\\n    // The bit position of `startTimestamp` in packed ownership.\\n    uint256 private constant _BITPOS_START_TIMESTAMP = 160;\\n\\n    // The bit mask of the `burned` bit in packed ownership.\\n    uint256 private constant _BITMASK_BURNED = 1 << 224;\\n\\n    // The bit position of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;\\n\\n    // The bit mask of the `nextInitialized` bit in packed ownership.\\n    uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;\\n\\n    // The bit position of `extraData` in packed ownership.\\n    uint256 private constant _BITPOS_EXTRA_DATA = 232;\\n\\n    // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`.\\n    uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1;\\n\\n    // The mask of the lower 160 bits for addresses.\\n    uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;\\n\\n    // The maximum `quantity` that can be minted with {_mintERC2309}.\\n    // This limit is to prevent overflows on the address data entries.\\n    // For a limit of 5000, a total of 3.689e15 calls to {_mintERC2309}\\n    // is required to cause an overflow, which is unrealistic.\\n    uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000;\\n\\n    // The `Transfer` event signature is given by:\\n    // `keccak256(bytes(\\\"Transfer(address,address,uint256)\\\"))`.\\n    bytes32 private constant _TRANSFER_EVENT_SIGNATURE =\\n        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;\\n\\n    // =============================================================\\n    //                            STORAGE\\n    // =============================================================\\n\\n    // The next token ID to be minted.\\n    uint256 private _currentIndex;\\n\\n    // The number of tokens burned.\\n    uint256 private _burnCounter;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    // Mapping from token ID to ownership details\\n    // An empty struct value does not necessarily mean the token is unowned.\\n    // See {_packedOwnershipOf} implementation for details.\\n    //\\n    // Bits Layout:\\n    // - [0..159]   `addr`\\n    // - [160..223] `startTimestamp`\\n    // - [224]      `burned`\\n    // - [225]      `nextInitialized`\\n    // - [232..255] `extraData`\\n    mapping(uint256 => uint256) private _packedOwnerships;\\n\\n    // Mapping owner address to address data.\\n    //\\n    // Bits Layout:\\n    // - [0..63]    `balance`\\n    // - [64..127]  `numberMinted`\\n    // - [128..191] `numberBurned`\\n    // - [192..255] `aux`\\n    mapping(address => uint256) private _packedAddressData;\\n\\n    // Mapping from token ID to approved address.\\n    mapping(uint256 => TokenApprovalRef) private _tokenApprovals;\\n\\n    // Mapping from owner to operator approvals\\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n    // =============================================================\\n    //                          CONSTRUCTOR\\n    // =============================================================\\n\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n        _currentIndex = _startTokenId();\\n    }\\n\\n    // =============================================================\\n    //                   TOKEN COUNTING OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the starting token ID.\\n     * To change the starting token ID, please override this function.\\n     */\\n    function _startTokenId() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Returns the next token ID to be minted.\\n     */\\n    function _nextTokenId() internal view virtual returns (uint256) {\\n        return _currentIndex;\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        // Counter underflow is impossible as _burnCounter cannot be incremented\\n        // more than `_currentIndex - _startTokenId()` times.\\n        unchecked {\\n            return _currentIndex - _burnCounter - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total amount of tokens minted in the contract.\\n     */\\n    function _totalMinted() internal view virtual returns (uint256) {\\n        // Counter underflow is impossible as `_currentIndex` does not decrement,\\n        // and it is initialized to `_startTokenId()`.\\n        unchecked {\\n            return _currentIndex - _startTokenId();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the total number of tokens burned.\\n     */\\n    function _totalBurned() internal view virtual returns (uint256) {\\n        return _burnCounter;\\n    }\\n\\n    // =============================================================\\n    //                    ADDRESS DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the number of tokens in `owner`'s account.\\n     */\\n    function balanceOf(address owner) public view virtual override returns (uint256) {\\n        if (owner == address(0)) revert BalanceQueryForZeroAddress();\\n        return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens minted by `owner`.\\n     */\\n    function _numberMinted(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the number of tokens burned by or on behalf of `owner`.\\n     */\\n    function _numberBurned(address owner) internal view returns (uint256) {\\n        return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY;\\n    }\\n\\n    /**\\n     * Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     */\\n    function _getAux(address owner) internal view returns (uint64) {\\n        return uint64(_packedAddressData[owner] >> _BITPOS_AUX);\\n    }\\n\\n    /**\\n     * Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\\n     * If there are multiple variables, please pack them into a uint64.\\n     */\\n    function _setAux(address owner, uint64 aux) internal virtual {\\n        uint256 packed = _packedAddressData[owner];\\n        uint256 auxCasted;\\n        // Cast `aux` with assembly to avoid redundant masking.\\n        assembly {\\n            auxCasted := aux\\n        }\\n        packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX);\\n        _packedAddressData[owner] = packed;\\n    }\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        // The interface IDs are constants representing the first 4 bytes\\n        // of the XOR of all function selectors in the interface.\\n        // See: [ERC165](https://eips.ethereum.org/EIPS/eip-165)\\n        // (e.g. `bytes4(i.functionA.selector ^ i.functionB.selector ^ ...)`)\\n        return\\n            interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165.\\n            interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721.\\n            interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata.\\n    }\\n\\n    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, it can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return '';\\n    }\\n\\n    // =============================================================\\n    //                     OWNERSHIPS OPERATIONS\\n    // =============================================================\\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) public view virtual override returns (address) {\\n        return address(uint160(_packedOwnershipOf(tokenId)));\\n    }\\n\\n    /**\\n     * @dev Gas spent here starts off proportional to the maximum mint batch size.\\n     * It gradually moves to O(1) as tokens get transferred around over time.\\n     */\\n    function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnershipOf(tokenId));\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct at `index`.\\n     */\\n    function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) {\\n        return _unpackedOwnership(_packedOwnerships[index]);\\n    }\\n\\n    /**\\n     * @dev Initializes the ownership slot minted at `index` for efficiency purposes.\\n     */\\n    function _initializeOwnershipAt(uint256 index) internal virtual {\\n        if (_packedOwnerships[index] == 0) {\\n            _packedOwnerships[index] = _packedOwnershipOf(index);\\n        }\\n    }\\n\\n    /**\\n     * Returns the packed ownership data of `tokenId`.\\n     */\\n    function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {\\n        uint256 curr = tokenId;\\n\\n        unchecked {\\n            if (_startTokenId() <= curr)\\n                if (curr < _currentIndex) {\\n                    uint256 packed = _packedOwnerships[curr];\\n                    // If not burned.\\n                    if (packed & _BITMASK_BURNED == 0) {\\n                        // Invariant:\\n                        // There will always be an initialized ownership slot\\n                        // (i.e. `ownership.addr != address(0) && ownership.burned == false`)\\n                        // before an unintialized ownership slot\\n                        // (i.e. `ownership.addr == address(0) && ownership.burned == false`)\\n                        // Hence, `curr` will not underflow.\\n                        //\\n                        // We can directly compare the packed value.\\n                        // If the address is zero, packed will be zero.\\n                        while (packed == 0) {\\n                            packed = _packedOwnerships[--curr];\\n                        }\\n                        return packed;\\n                    }\\n                }\\n        }\\n        revert OwnerQueryForNonexistentToken();\\n    }\\n\\n    /**\\n     * @dev Returns the unpacked `TokenOwnership` struct from `packed`.\\n     */\\n    function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {\\n        ownership.addr = address(uint160(packed));\\n        ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP);\\n        ownership.burned = packed & _BITMASK_BURNED != 0;\\n        ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA);\\n    }\\n\\n    /**\\n     * @dev Packs ownership data into a single uint256.\\n     */\\n    function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // `owner | (block.timestamp << _BITPOS_START_TIMESTAMP) | flags`.\\n            result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the `nextInitialized` flag set if `quantity` equals 1.\\n     */\\n    function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) {\\n        // For branchless setting of the `nextInitialized` flag.\\n        assembly {\\n            // `(quantity == 1) << _BITPOS_NEXT_INITIALIZED`.\\n            result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1))\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      APPROVAL OPERATIONS\\n    // =============================================================\\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\\n     * 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) public payable virtual override {\\n        address owner = ownerOf(tokenId);\\n\\n        if (_msgSenderERC721A() != owner)\\n            if (!isApprovedForAll(owner, _msgSenderERC721A())) {\\n                revert ApprovalCallerNotOwnerNorApproved();\\n            }\\n\\n        _tokenApprovals[tokenId].value = to;\\n        emit Approval(owner, to, tokenId);\\n    }\\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) public view virtual override returns (address) {\\n        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();\\n\\n        return _tokenApprovals[tokenId].value;\\n    }\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual override {\\n        _operatorApprovals[_msgSenderERC721A()][operator] = approved;\\n        emit ApprovalForAll(_msgSenderERC721A(), operator, approved);\\n    }\\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) public view virtual override returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev Returns whether `tokenId` exists.\\n     *\\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n     *\\n     * Tokens start existing when they are minted. See {_mint}.\\n     */\\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n        return\\n            _startTokenId() <= tokenId &&\\n            tokenId < _currentIndex && // If within bounds,\\n            _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.\\n    }\\n\\n    /**\\n     * @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.\\n     */\\n    function _isSenderApprovedOrOwner(\\n        address approvedAddress,\\n        address owner,\\n        address msgSender\\n    ) private pure returns (bool result) {\\n        assembly {\\n            // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            owner := and(owner, _BITMASK_ADDRESS)\\n            // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n            msgSender := and(msgSender, _BITMASK_ADDRESS)\\n            // `msgSender == owner || msgSender == approvedAddress`.\\n            result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the storage slot and value for the approved address of `tokenId`.\\n     */\\n    function _getApprovedSlotAndAddress(uint256 tokenId)\\n        private\\n        view\\n        returns (uint256 approvedAddressSlot, address approvedAddress)\\n    {\\n        TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId];\\n        // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId].value`.\\n        assembly {\\n            approvedAddressSlot := tokenApproval.slot\\n            approvedAddress := sload(approvedAddressSlot)\\n        }\\n    }\\n\\n    // =============================================================\\n    //                      TRANSFER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Transfers `tokenId` 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 be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner();\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        // The nested ifs save around 20+ gas over a compound boolean condition.\\n        if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n            if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n\\n        if (to == address(0)) revert TransferToZeroAddress();\\n\\n        _beforeTokenTransfers(from, to, tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // We can directly increment and decrement the balances.\\n            --_packedAddressData[from]; // Updates: `balance -= 1`.\\n            ++_packedAddressData[to]; // Updates: `balance += 1`.\\n\\n            // Updates:\\n            // - `address` to the next owner.\\n            // - `startTimestamp` to the timestamp of transfering.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                to,\\n                _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, to, tokenId);\\n        _afterTokenTransfers(from, to, tokenId, 1);\\n    }\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) public payable virtual override {\\n        safeTransferFrom(from, to, tokenId, '');\\n    }\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) public payable virtual override {\\n        transferFrom(from, to, tokenId);\\n        if (to.code.length != 0)\\n            if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            }\\n    }\\n\\n    /**\\n     * @dev Hook that is called before a set of serially-ordered token IDs\\n     * are about to be transferred. This includes minting.\\n     * And also called before burning one token.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _beforeTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after a set of serially-ordered token IDs\\n     * have been transferred. This includes minting.\\n     * And also called after one token has been burned.\\n     *\\n     * `startTokenId` - the first token ID to be transferred.\\n     * `quantity` - the amount to be transferred.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` has been minted for `to`.\\n     * - When `to` is zero, `tokenId` has been burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _afterTokenTransfers(\\n        address from,\\n        address to,\\n        uint256 startTokenId,\\n        uint256 quantity\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract.\\n     *\\n     * `from` - Previous owner of the given token ID.\\n     * `to` - Target address that will receive the token.\\n     * `tokenId` - Token ID to be transferred.\\n     * `_data` - Optional data to send along with the call.\\n     *\\n     * Returns whether the call correctly returned the expected magic value.\\n     */\\n    function _checkContractOnERC721Received(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory _data\\n    ) private returns (bool) {\\n        try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (\\n            bytes4 retval\\n        ) {\\n            return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;\\n        } catch (bytes memory reason) {\\n            if (reason.length == 0) {\\n                revert TransferToNonERC721ReceiverImplementer();\\n            } else {\\n                assembly {\\n                    revert(add(32, reason), mload(reason))\\n                }\\n            }\\n        }\\n    }\\n\\n    // =============================================================\\n    //                        MINT OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _mint(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (quantity == 0) revert MintZeroQuantity();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are incredibly unrealistic.\\n        // `balance` and `numberMinted` have a maximum limit of 2**64.\\n        // `tokenId` has a maximum limit of 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            uint256 toMasked;\\n            uint256 end = startTokenId + quantity;\\n\\n            // Use assembly to loop and emit the `Transfer` event for gas savings.\\n            // The duplicated `log4` removes an extra check and reduces stack juggling.\\n            // The assembly, together with the surrounding Solidity code, have been\\n            // delicately arranged to nudge the compiler into producing optimized opcodes.\\n            assembly {\\n                // Mask `to` to the lower 160 bits, in case the upper bits somehow aren't clean.\\n                toMasked := and(to, _BITMASK_ADDRESS)\\n                // Emit the `Transfer` event.\\n                log4(\\n                    0, // Start of data (0, since no data).\\n                    0, // End of data (0, since no data).\\n                    _TRANSFER_EVENT_SIGNATURE, // Signature.\\n                    0, // `address(0)`.\\n                    toMasked, // `to`.\\n                    startTokenId // `tokenId`.\\n                )\\n\\n                // The `iszero(eq(,))` check ensures that large values of `quantity`\\n                // that overflows uint256 will make the loop run out of gas.\\n                // The compiler will optimize the `iszero` away for performance.\\n                for {\\n                    let tokenId := add(startTokenId, 1)\\n                } iszero(eq(tokenId, end)) {\\n                    tokenId := add(tokenId, 1)\\n                } {\\n                    // Emit the `Transfer` event. Similar to above.\\n                    log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)\\n                }\\n            }\\n            if (toMasked == 0) revert MintToZeroAddress();\\n\\n            _currentIndex = end;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * This function is intended for efficient minting only during contract creation.\\n     *\\n     * It emits only one {ConsecutiveTransfer} as defined in\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309),\\n     * instead of a sequence of {Transfer} event(s).\\n     *\\n     * Calling this function outside of contract creation WILL make your contract\\n     * non-compliant with the ERC721 standard.\\n     * For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309\\n     * {ConsecutiveTransfer} event is only permissible during contract creation.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * Emits a {ConsecutiveTransfer} event.\\n     */\\n    function _mintERC2309(address to, uint256 quantity) internal virtual {\\n        uint256 startTokenId = _currentIndex;\\n        if (to == address(0)) revert MintToZeroAddress();\\n        if (quantity == 0) revert MintZeroQuantity();\\n        if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit();\\n\\n        _beforeTokenTransfers(address(0), to, startTokenId, quantity);\\n\\n        // Overflows are unrealistic due to the above check for `quantity` to be below the limit.\\n        unchecked {\\n            // Updates:\\n            // - `balance += quantity`.\\n            // - `numberMinted += quantity`.\\n            //\\n            // We can directly add to the `balance` and `numberMinted`.\\n            _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\\n\\n            // Updates:\\n            // - `address` to the owner.\\n            // - `startTimestamp` to the timestamp of minting.\\n            // - `burned` to `false`.\\n            // - `nextInitialized` to `quantity == 1`.\\n            _packedOwnerships[startTokenId] = _packOwnershipData(\\n                to,\\n                _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\\n            );\\n\\n            emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to);\\n\\n            _currentIndex = startTokenId + quantity;\\n        }\\n        _afterTokenTransfers(address(0), to, startTokenId, quantity);\\n    }\\n\\n    /**\\n     * @dev Safely mints `quantity` tokens and transfers them to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called for each safe transfer.\\n     * - `quantity` must be greater than 0.\\n     *\\n     * See {_mint}.\\n     *\\n     * Emits a {Transfer} event for each mint.\\n     */\\n    function _safeMint(\\n        address to,\\n        uint256 quantity,\\n        bytes memory _data\\n    ) internal virtual {\\n        _mint(to, quantity);\\n\\n        unchecked {\\n            if (to.code.length != 0) {\\n                uint256 end = _currentIndex;\\n                uint256 index = end - quantity;\\n                do {\\n                    if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {\\n                        revert TransferToNonERC721ReceiverImplementer();\\n                    }\\n                } while (index < end);\\n                // Reentrancy protection.\\n                if (_currentIndex != end) revert();\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Equivalent to `_safeMint(to, quantity, '')`.\\n     */\\n    function _safeMint(address to, uint256 quantity) internal virtual {\\n        _safeMint(to, quantity, '');\\n    }\\n\\n    // =============================================================\\n    //                        BURN OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Equivalent to `_burn(tokenId, false)`.\\n     */\\n    function _burn(uint256 tokenId) internal virtual {\\n        _burn(tokenId, false);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId, bool approvalCheck) internal virtual {\\n        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\\n\\n        address from = address(uint160(prevOwnershipPacked));\\n\\n        (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\\n\\n        if (approvalCheck) {\\n            // The nested ifs save around 20+ gas over a compound boolean condition.\\n            if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\\n                if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\\n        }\\n\\n        _beforeTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Clear approvals from the previous owner.\\n        assembly {\\n            if approvedAddress {\\n                // This is equivalent to `delete _tokenApprovals[tokenId]`.\\n                sstore(approvedAddressSlot, 0)\\n            }\\n        }\\n\\n        // Underflow of the sender's balance is impossible because we check for\\n        // ownership above and the recipient's balance can't realistically overflow.\\n        // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\\n        unchecked {\\n            // Updates:\\n            // - `balance -= 1`.\\n            // - `numberBurned += 1`.\\n            //\\n            // We can directly decrement the balance, and increment the number burned.\\n            // This is equivalent to `packed -= 1; packed += 1 << _BITPOS_NUMBER_BURNED;`.\\n            _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1;\\n\\n            // Updates:\\n            // - `address` to the last owner.\\n            // - `startTimestamp` to the timestamp of burning.\\n            // - `burned` to `true`.\\n            // - `nextInitialized` to `true`.\\n            _packedOwnerships[tokenId] = _packOwnershipData(\\n                from,\\n                (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked)\\n            );\\n\\n            // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\\n            if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\\n                uint256 nextTokenId = tokenId + 1;\\n                // If the next slot's address is zero and not burned (i.e. packed value is zero).\\n                if (_packedOwnerships[nextTokenId] == 0) {\\n                    // If the next slot is within bounds.\\n                    if (nextTokenId != _currentIndex) {\\n                        // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\\n                        _packedOwnerships[nextTokenId] = prevOwnershipPacked;\\n                    }\\n                }\\n            }\\n        }\\n\\n        emit Transfer(from, address(0), tokenId);\\n        _afterTokenTransfers(from, address(0), tokenId, 1);\\n\\n        // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times.\\n        unchecked {\\n            _burnCounter++;\\n        }\\n    }\\n\\n    // =============================================================\\n    //                     EXTRA DATA OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Directly sets the extra data for the ownership data `index`.\\n     */\\n    function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual {\\n        uint256 packed = _packedOwnerships[index];\\n        if (packed == 0) revert OwnershipNotInitializedForExtraData();\\n        uint256 extraDataCasted;\\n        // Cast `extraData` with assembly to avoid redundant masking.\\n        assembly {\\n            extraDataCasted := extraData\\n        }\\n        packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA);\\n        _packedOwnerships[index] = packed;\\n    }\\n\\n    /**\\n     * @dev Called during each token transfer to set the 24bit `extraData` field.\\n     * Intended to be overridden by the cosumer contract.\\n     *\\n     * `previousExtraData` - the value of `extraData` before transfer.\\n     *\\n     * Calling conditions:\\n     *\\n     * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\\n     * transferred to `to`.\\n     * - When `from` is zero, `tokenId` will be minted for `to`.\\n     * - When `to` is zero, `tokenId` will be burned by `from`.\\n     * - `from` and `to` are never both zero.\\n     */\\n    function _extraData(\\n        address from,\\n        address to,\\n        uint24 previousExtraData\\n    ) internal view virtual returns (uint24) {}\\n\\n    /**\\n     * @dev Returns the next extra data for the packed ownership data.\\n     * The returned result is shifted into position.\\n     */\\n    function _nextExtraData(\\n        address from,\\n        address to,\\n        uint256 prevOwnershipPacked\\n    ) private view returns (uint256) {\\n        uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA);\\n        return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA;\\n    }\\n\\n    // =============================================================\\n    //                       OTHER OPERATIONS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the message sender (defaults to `msg.sender`).\\n     *\\n     * If you are writing GSN compatible contracts, you need to override this function.\\n     */\\n    function _msgSenderERC721A() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    /**\\n     * @dev Converts a uint256 to its ASCII string decimal representation.\\n     */\\n    function _toString(uint256 value) internal pure virtual returns (string memory str) {\\n        assembly {\\n            // The maximum value of a uint256 contains 78 digits (1 byte per digit), but\\n            // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.\\n            // We will need 1 word for the trailing zeros padding, 1 word for the length,\\n            // and 3 words for a maximum of 78 digits. Total: 5 * 0x20 = 0xa0.\\n            let m := add(mload(0x40), 0xa0)\\n            // Update the free memory pointer to allocate.\\n            mstore(0x40, m)\\n            // Assign the `str` to the end.\\n            str := sub(m, 0x20)\\n            // Zeroize the slot after the string.\\n            mstore(str, 0)\\n\\n            // Cache the end of the memory to calculate the length later.\\n            let end := str\\n\\n            // We write the string from rightmost digit to leftmost digit.\\n            // The following is essentially a do-while loop that also handles the zero case.\\n            // prettier-ignore\\n            for { let temp := value } 1 {} {\\n                str := sub(str, 1)\\n                // Write the character to the pointer.\\n                // The ASCII index of the '0' character is 48.\\n                mstore8(str, add(48, mod(temp, 10)))\\n                // Keep dividing `temp` until zero.\\n                temp := div(temp, 10)\\n                // prettier-ignore\\n                if iszero(temp) { break }\\n            }\\n\\n            let length := sub(end, str)\\n            // Move the pointer 32 bytes leftwards to make room for the length.\\n            str := sub(str, 0x20)\\n            // Store the length.\\n            mstore(str, length)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x23116c16976b7d8c0c714ba1b38ae6b16c16fc90ec69b568fb1ebf1bc063e01c\",\"license\":\"MIT\"},\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/ERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport './IERC4907A.sol';\\nimport '../ERC721A.sol';\\n\\n/**\\n * @title ERC4907A\\n *\\n * @dev [ERC4907](https://eips.ethereum.org/EIPS/eip-4907) compliant\\n * extension of ERC721A, which allows owners and authorized addresses\\n * to add a time-limited role with restricted permissions to ERC721 tokens.\\n */\\nabstract contract ERC4907A is ERC721A, IERC4907A {\\n    // The bit position of `expires` in packed user info.\\n    uint256 private constant _BITPOS_EXPIRES = 160;\\n\\n    // Mapping from token ID to user info.\\n    //\\n    // Bits Layout:\\n    // - [0..159]   `user`\\n    // - [160..223] `expires`\\n    mapping(uint256 => uint256) private _packedUserInfo;\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) public virtual override {\\n        // Require the caller to be either the token owner or an approved operator.\\n        address owner = ownerOf(tokenId);\\n        if (_msgSenderERC721A() != owner)\\n            if (!isApprovedForAll(owner, _msgSenderERC721A()))\\n                if (getApproved(tokenId) != _msgSenderERC721A()) revert SetUserCallerNotOwnerNorApproved();\\n\\n        _packedUserInfo[tokenId] = (uint256(expires) << _BITPOS_EXPIRES) | uint256(uint160(user));\\n\\n        emit UpdateUser(tokenId, user, expires);\\n    }\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) public view virtual override returns (address) {\\n        uint256 packed = _packedUserInfo[tokenId];\\n        assembly {\\n            // Branchless `packed *= (block.timestamp <= expires ? 1 : 0)`.\\n            // If the `block.timestamp == expires`, the `lt` clause will be true\\n            // if there is a non-zero user address in the lower 160 bits of `packed`.\\n            packed := mul(\\n                packed,\\n                // `block.timestamp <= expires ? 1 : 0`.\\n                lt(shl(_BITPOS_EXPIRES, timestamp()), packed)\\n            )\\n        }\\n        return address(uint160(packed));\\n    }\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) public view virtual override returns (uint256) {\\n        return _packedUserInfo[tokenId] >> _BITPOS_EXPIRES;\\n    }\\n\\n    /**\\n     * @dev Override of {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721A, IERC721A) returns (bool) {\\n        // The interface ID for ERC4907 is `0xad092b5c`,\\n        // as defined in [ERC4907](https://eips.ethereum.org/EIPS/eip-4907).\\n        return super.supportsInterface(interfaceId) || interfaceId == 0xad092b5c;\\n    }\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`, ignoring the expiry status.\\n     */\\n    function _explicitUserOf(uint256 tokenId) internal view virtual returns (address) {\\n        return address(uint160(_packedUserInfo[tokenId]));\\n    }\\n}\\n\",\"keccak256\":\"0x9b52ce07effe73a2afe354b4266529eac74ff967a0342d8279e715f90f972726\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":8612,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"_currentIndex","offset":0,"slot":"0","type":"t_uint256"},{"astId":8614,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"_burnCounter","offset":0,"slot":"1","type":"t_uint256"},{"astId":8616,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"_name","offset":0,"slot":"2","type":"t_string_storage"},{"astId":8618,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"_symbol","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8622,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"_packedOwnerships","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_uint256)"},{"astId":8626,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"_packedAddressData","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint256)"},{"astId":8631,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"_tokenApprovals","offset":0,"slot":"6","type":"t_mapping(t_uint256,t_struct(TokenApprovalRef)8544_storage)"},{"astId":8637,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"_operatorApprovals","offset":0,"slot":"7","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":10365,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"_packedUserInfo","offset":0,"slot":"8","type":"t_mapping(t_uint256,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"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_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"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(TokenApprovalRef)8544_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct ERC721A.TokenApprovalRef)","numberOfBytes":"32","value":"t_struct(TokenApprovalRef)8544_storage"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(TokenApprovalRef)8544_storage":{"encoding":"inplace","label":"struct ERC721A.TokenApprovalRef","members":[{"astId":8543,"contract":"erc721a/contracts/extensions/ERC4907A.sol:ERC4907A","label":"value","offset":0,"slot":"0","type":"t_address"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"errors":{"ApprovalCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"ApprovalQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"BalanceQueryForZeroAddress()":[{"notice":"Cannot query the balance for the zero address."}],"MintERC2309QuantityExceedsLimit()":[{"notice":"The `quantity` minted with ERC2309 exceeds the safety limit."}],"MintToZeroAddress()":[{"notice":"Cannot mint to the zero address."}],"MintZeroQuantity()":[{"notice":"The quantity of tokens minted must be more than zero."}],"OwnerQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"OwnershipNotInitializedForExtraData()":[{"notice":"The `extraData` cannot be set on an unintialized ownership slot."}],"SetUserCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"TransferCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"TransferFromIncorrectOwner()":[{"notice":"The token must be owned by `from`."}],"TransferToNonERC721ReceiverImplementer()":[{"notice":"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface."}],"TransferToZeroAddress()":[{"notice":"Cannot transfer to the zero address."}],"URIQueryForNonexistentToken()":[{"notice":"The token does not exist."}]},"kind":"user","methods":{},"version":1}}},"erc721a/contracts/extensions/IERC4907A.sol":{"IERC4907A":{"abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"SetUserCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint64","name":"expires","type":"uint64"}],"name":"UpdateUser","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"payable","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":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint64","name":"expires","type":"uint64"}],"name":"setUser","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"userExpires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"userOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of ERC4907A.","events":{"UpdateUser(uint256,address,uint64)":{"details":"Emitted when the `user` of an NFT or the `expires` of the `user` is changed. The zero address for user indicates that there is no user address."}},"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}."},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Equivalent to `safeTransferFrom(from, to, tokenId, '')`."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 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 be 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."},"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 caller. Emits an {ApprovalForAll} event."},"setUser(uint256,address,uint64)":{"details":"Sets the `user` and `expires` for `tokenId`. The zero address indicates there is no user. Requirements: - The caller must own `tokenId` or be an approved operator."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) to learn more about how these ids are created. This function call must use less than 30000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"totalSupply()":{"details":"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. 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."},"userExpires(uint256)":{"details":"Returns the user's expires of `tokenId`."},"userOf(uint256)":{"details":"Returns the user address for `tokenId`. The zero address indicates that there is no user or if the user is expired."}},"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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","setUser(uint256,address,uint64)":"e030565e","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","userExpires(uint256)":"8fc88c48","userOf(uint256)":"c2f1f14a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ApprovalCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceQueryForZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintERC2309QuantityExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintZeroQuantity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnerQueryForNonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipNotInitializedForExtraData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SetUserCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferCallerNotOwnerNorApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromIncorrectOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToNonERC721ReceiverImplementer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"URIQueryForNonexistentToken\",\"type\":\"error\"},{\"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\":\"uint256\",\"name\":\"fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"ConsecutiveTransfer\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"UpdateUser\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"payable\",\"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\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"setUser\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"userExpires\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"userOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of ERC4907A.\",\"events\":{\"UpdateUser(uint256,address,uint64)\":{\"details\":\"Emitted when the `user` of an NFT or the `expires` of the `user` is changed. The zero address for user indicates that there is no user address.\"}},\"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}.\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 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 be 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.\"},\"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 caller. Emits an {ApprovalForAll} event.\"},\"setUser(uint256,address,uint64)\":{\"details\":\"Sets the `user` and `expires` for `tokenId`. The zero address indicates there is no user. Requirements: - The caller must own `tokenId` or be an approved operator.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) to learn more about how these ids are created. This function call must use less than 30000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"totalSupply()\":{\"details\":\"Returns the total number of tokens in existence. Burned tokens will reduce the count. To get the total number of tokens minted, please see {_totalMinted}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. 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.\"},\"userExpires(uint256)\":{\"details\":\"Returns the user's expires of `tokenId`.\"},\"userOf(uint256)\":{\"details\":\"Returns the user address for `tokenId`. The zero address indicates that there is no user or if the user is expired.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"ApprovalCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"ApprovalQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"BalanceQueryForZeroAddress()\":[{\"notice\":\"Cannot query the balance for the zero address.\"}],\"MintERC2309QuantityExceedsLimit()\":[{\"notice\":\"The `quantity` minted with ERC2309 exceeds the safety limit.\"}],\"MintToZeroAddress()\":[{\"notice\":\"Cannot mint to the zero address.\"}],\"MintZeroQuantity()\":[{\"notice\":\"The quantity of tokens minted must be more than zero.\"}],\"OwnerQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}],\"OwnershipNotInitializedForExtraData()\":[{\"notice\":\"The `extraData` cannot be set on an unintialized ownership slot.\"}],\"SetUserCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"TransferCallerNotOwnerNorApproved()\":[{\"notice\":\"The caller must own the token or be an approved operator.\"}],\"TransferFromIncorrectOwner()\":[{\"notice\":\"The token must be owned by `from`.\"}],\"TransferToNonERC721ReceiverImplementer()\":[{\"notice\":\"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface.\"}],\"TransferToZeroAddress()\":[{\"notice\":\"Cannot transfer to the zero address.\"}],\"URIQueryForNonexistentToken()\":[{\"notice\":\"The token does not exist.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"erc721a/contracts/extensions/IERC4907A.sol\":\"IERC4907A\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"erc721a/contracts/IERC721A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\n/**\\n * @dev Interface of ERC721A.\\n */\\ninterface IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error ApprovalCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error ApprovalQueryForNonexistentToken();\\n\\n    /**\\n     * Cannot query the balance for the zero address.\\n     */\\n    error BalanceQueryForZeroAddress();\\n\\n    /**\\n     * Cannot mint to the zero address.\\n     */\\n    error MintToZeroAddress();\\n\\n    /**\\n     * The quantity of tokens minted must be more than zero.\\n     */\\n    error MintZeroQuantity();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error OwnerQueryForNonexistentToken();\\n\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error TransferCallerNotOwnerNorApproved();\\n\\n    /**\\n     * The token must be owned by `from`.\\n     */\\n    error TransferFromIncorrectOwner();\\n\\n    /**\\n     * Cannot safely transfer to a contract that does not implement the\\n     * ERC721Receiver interface.\\n     */\\n    error TransferToNonERC721ReceiverImplementer();\\n\\n    /**\\n     * Cannot transfer to the zero address.\\n     */\\n    error TransferToZeroAddress();\\n\\n    /**\\n     * The token does not exist.\\n     */\\n    error URIQueryForNonexistentToken();\\n\\n    /**\\n     * The `quantity` minted with ERC2309 exceeds the safety limit.\\n     */\\n    error MintERC2309QuantityExceedsLimit();\\n\\n    /**\\n     * The `extraData` cannot be set on an unintialized ownership slot.\\n     */\\n    error OwnershipNotInitializedForExtraData();\\n\\n    // =============================================================\\n    //                            STRUCTS\\n    // =============================================================\\n\\n    struct TokenOwnership {\\n        // The address of the owner.\\n        address addr;\\n        // Stores the start time of ownership with minimal overhead for tokenomics.\\n        uint64 startTimestamp;\\n        // Whether the token has been burned.\\n        bool burned;\\n        // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\\n        uint24 extraData;\\n    }\\n\\n    // =============================================================\\n    //                         TOKEN COUNTERS\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the total number of tokens in existence.\\n     * Burned tokens will reduce the count.\\n     * To get the total number of tokens minted, please see {_totalMinted}.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    // =============================================================\\n    //                            IERC165\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n\\n    // =============================================================\\n    //                            IERC721\\n    // =============================================================\\n\\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\\n     * (`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     * checking first that contract recipients are aware of the ERC721 protocol\\n     * 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 be have been allowed to move\\n     * this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement\\n     * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external payable;\\n\\n    /**\\n     * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\\n     */\\n    function safeTransferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\\n     * whenever possible.\\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\\n     * by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) external payable;\\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\\n     * 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 payable;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom}\\n     * for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the caller.\\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    // =============================================================\\n    //                        IERC721Metadata\\n    // =============================================================\\n\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n    // =============================================================\\n    //                           IERC2309\\n    // =============================================================\\n\\n    /**\\n     * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\\n     * (inclusive) is transferred from `from` to `to`, as defined in the\\n     * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\\n     *\\n     * See {_mintERC2309} for more details.\\n     */\\n    event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\\n}\\n\",\"keccak256\":\"0xa31dfe2635a25f899e279befef27ffcc02fd16e636c58d4c251a303f2355f7ad\",\"license\":\"MIT\"},\"erc721a/contracts/extensions/IERC4907A.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// ERC721A Contracts v4.2.3\\n// Creator: Chiru Labs\\n\\npragma solidity ^0.8.4;\\n\\nimport '../IERC721A.sol';\\n\\n/**\\n * @dev Interface of ERC4907A.\\n */\\ninterface IERC4907A is IERC721A {\\n    /**\\n     * The caller must own the token or be an approved operator.\\n     */\\n    error SetUserCallerNotOwnerNorApproved();\\n\\n    /**\\n     * @dev Emitted when the `user` of an NFT or the `expires` of the `user` is changed.\\n     * The zero address for user indicates that there is no user address.\\n     */\\n    event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);\\n\\n    /**\\n     * @dev Sets the `user` and `expires` for `tokenId`.\\n     * The zero address indicates there is no user.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own `tokenId` or be an approved operator.\\n     */\\n    function setUser(\\n        uint256 tokenId,\\n        address user,\\n        uint64 expires\\n    ) external;\\n\\n    /**\\n     * @dev Returns the user address for `tokenId`.\\n     * The zero address indicates that there is no user or if the user is expired.\\n     */\\n    function userOf(uint256 tokenId) external view returns (address);\\n\\n    /**\\n     * @dev Returns the user's expires of `tokenId`.\\n     */\\n    function userExpires(uint256 tokenId) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x92750c714391c355811da39c599a30e29442bbda258bb89b8e39dc38292a33bf\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"ApprovalCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"ApprovalQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"BalanceQueryForZeroAddress()":[{"notice":"Cannot query the balance for the zero address."}],"MintERC2309QuantityExceedsLimit()":[{"notice":"The `quantity` minted with ERC2309 exceeds the safety limit."}],"MintToZeroAddress()":[{"notice":"Cannot mint to the zero address."}],"MintZeroQuantity()":[{"notice":"The quantity of tokens minted must be more than zero."}],"OwnerQueryForNonexistentToken()":[{"notice":"The token does not exist."}],"OwnershipNotInitializedForExtraData()":[{"notice":"The `extraData` cannot be set on an unintialized ownership slot."}],"SetUserCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"TransferCallerNotOwnerNorApproved()":[{"notice":"The caller must own the token or be an approved operator."}],"TransferFromIncorrectOwner()":[{"notice":"The token must be owned by `from`."}],"TransferToNonERC721ReceiverImplementer()":[{"notice":"Cannot safely transfer to a contract that does not implement the ERC721Receiver interface."}],"TransferToZeroAddress()":[{"notice":"Cannot transfer to the zero address."}],"URIQueryForNonexistentToken()":[{"notice":"The token does not exist."}]},"kind":"user","methods":{},"version":1}}}}}}